Добиваемся эффективности
каждого из 9000+ UI-тестов
Мы продаем ж/д, авиа и автобусные билеты, туры, бронируем отели и рассказываем о расписании.
Самый посещаемый сервис туристических услуг в России (по версии comScore).
• 31 сотрудник в 7 проектах
• UI-тесты, CI, релиз-инжиниринг, тестирование API-модулей
• В Туту.ру нет сотрудников, которые занимаются только ручным
тестированием
• Покрытие UI-тестами больше 90%
Про что поговорим
1. Принципы архитектуры
2. UI-тесты в релизном цикле
3. Приемы улучшения эффективности каждого теста
4. Тест-кейсы и управление тестовыми комплектами
5. UI-тесты + CI
6. Метрики и выводы
Принципы архитектуры
Принципы архитектуры
• Создавайте тесты понятными
• Применяйте парадигмы ООП
Не дублируйте код
Принципы архитектуры
Принципы архитектуры
Не дублируйте код
Используйте наследование
Принципы архитектуры
Скрывайте реализацию в отдельных классах
Принципы архитектуры
Скрывайте реализацию в отдельных классах
Принципы архитектуры
• Создавайте тесты понятными
• Применяйте парадигмы ООП
• Обязательный Code Review
Принципы архитектуры
Принципы архитектуры. Code Review
• Улучшаем качество кода
• Информируем участников о изменениях
• Код приводится к единому стилю
написания
• Обучаем «новичков», быстро
набирается навык, происходит
выравнивание опыта, обмен знаниями
• Создавайте тесты понятными
• Применяйте парадигмы ООП
• Обязательный Code Review
• Unit-тесты
Принципы архитектуры
Принципы архитектуры. Тесты для тестов — это отлично
• Позволяют разрабатывать быстрее
• Снижают количество багов в системе
UI-тесты в релизном цикле
Инструмент UI-тестирования в процессах QA-команды
UI-тесты в релизном цикле:
• Запуск тестов как можно чаще, согласно этапам разработки задачи
• Каждый этап с максимально «зелеными» тестами
Инструмент UI-тестирования в процессах QA-команды
Улучшаем эффективность каждого теста
Улучшаем эффективность каждого теста
• Проект контроля и управления тестовыми контейнерами
• Управление потоками тестов
• Деактивация неработающих тестовых контейнеров
• Лучшая интеграция с модулем Runner
Улучшаем эффективность каждого теста
• Свой Runner тестов
• Низкое потребление ресурсов
• Гибкость в развитии
• Балансировка загруженности с учетом приоритета
• Лучшая интеграция с другими модулями системы
Улучшаем эффективность каждого теста
Тест-кейсы и управление тестовыми
комплектами
Улучшаем эффективность каждого теста
• Тестовая документация хранится в коде
Улучшаем эффективность каждого теста
Тест-кейс еще не реализован в коде — todocase
Улучшаем эффективность каждого теста
Тест-кейс для ручного исполнения — manualcase
Улучшаем эффективность каждого теста
• Механизм тегов позволяет автоматически считать UI-покрытие в каждом проекте
Управление тестовыми комплектами
Улучшаем эффективность каждого теста
Тест относится к релизному комплекту тестов
Улучшаем эффективность каждого теста
• Тестовый комплект можно запустить в любое время локально или на контейнерах
Улучшаем эффективность каждого теста
• Гибкая система настроек запуска
• Отвечаем потребностям QA-специалистов
• Обеспечивает лучшую интеграцию с CI
• Факты
• Больше 30 параметров
• on-demand
• bug-skipped
• js-error-seeker
• notify-maintainer
• …
UI-тесты + CI
UI-тесты + CI
• Интеграция проекта UI-тестов в Bamboo
• Запуск билдов
• Поддержка релизного процесса
• Отчетность
• Отличная кастомизация запуска
++
Конфигурация запуска Bamboo -> Acceptance
• Bamboo поддерживает переменные кастомизации запуска
UI-тесты + CI
Метрики
Метрики
• Проект контроля и управления тестовыми контейнерами
• Мониторинг загруженности
• Точки роста системы
Метрики
Выводы
В чем профит
• Минимизировали стоимость регрессионного тестирования
• Релизы «монолитных» проектов 2 раза в неделю
• Развитие сотрудников в смежных к QA областях IT
• Высокий уровень мотивации QA-специалистов
Детализация релизного цикла одной из команд в человеко-часах
Выводы
1. Запускайте тесты как можно чаще
2. Работайте над лучшей интеграцией системы UI-тестов с другими
инструментами
3. Гибкость и поддерживаемость — не пустые слова
4. Следите за показателями QA-процессов
5. QA должно быть частью процесса разработки
Спасибо!

Добиваемся эффективности каждого из 9000+ UI-тестов

Editor's Notes

  • #2 Цель: Рассказать про принципы и конкретные приемы, которые помогут добиться максимума эффективности от вашей системы UI-тестирования.
  • #3 7 проектов 314 сотрудников 1 млн посетителей
  • #4 Наши принципы: в туту.ру не сотрудников…
  • #10 Не нужно опасаться наследования через несколько классов, на примере видно, что ассерты наследуют от phpUnit
  • #11 Скрывайте реализацию механики работы с интерфейсными блоками в отдельных классах и вызывайте их в тестах. Другими словами, инкапсуляция.
  • #16 Unit-тесты дополняют систему UI-тестов, они не являются противоположностью UI-тестам. Встроены в pre-push и post-commit-хуки, поэтому запускаются по каждому коммиту
  • #25 Тестовую документацию мы советуем хранить рядом с кодом тестов, таким образом мы связываем UI-тесты и тест-кейсы в одно целое, особенно это удобно при формировании отчетов, у каждого теста есть описание, по которому можно быстро понять, какие именно риски он собой закрывает. Реализован данный функционал при помощи PHPDoc.
  • #26 Какие у нас существуют примеры тегов для описания тест-кейсов
  • #27 Тест, который по каким-либо причинам не может быть автоматизирован помечается тегом manualcase
  • #30 Тот же самый механизм мы используем для того, чтобы управлять тестовыми комплектами. Мы используем тестовые наборы для определенной функциональности, есть наборы для релизного, RC-циклов, и вообще, создание наборов ограничивается только фантазией QA-специалистов. Каждый тест может быть включен в несколько наборов, мы их обозначаем при помощи тега @labels.
  • #32 И тут мы переходим к интеграции UI-тестов с CI
  • #35 Про самые часто используемые параметры кастомизации билдов.