Вот уже второй год я участвую в конференции DelEx, посвящённой автоматизации тестирования и DevOps направлению. Так совпало, что в это же время мы активно работаем над подготовкой программы нашей конференции Selenium Camp. Я общаюсь с людьми, которые не ходят по конференциям и слышу от них мнение, что ничего нового не появляется и все инструменты и подходы уже описаны.
Поэтому я решил подбить ТОП-6 интересных направлений в автоматизации тестирования, которые активно развиваются и стоят вашего внимания:
1. Impact analysis. Это достаточно старая идея, которая заключается в интеллектуальном подходе к выбору тестов для запуска, чтобы они быстрее давали результат и не теряли в покрытии. Подходы есть разные: основанные на рисках и приоритетах, базирующиеся на обратном графе покрытия кода, трассировке от тестов и т.д. Чем больше тестов пишется и чем чаще они запускаются, тем больше преимуществ может принести данный подход.
2. Scalable and reliable test infrastructure. Проблема актуальна практически для каждой команды. Не хочется ждать длинных запусков тестов и иметь нестабильности из-за инфраструктуры. Большой прорыв в этой области был достигнут благодаря контейнеризации и новые решения продолжают появляться, решая все больше проблем. Kubernetes, OpenShift и другие платформы позволяют строить гибкие и эффективные решения.
3. Smart reporting. Когда-то было нормальным просто показывать отчёт о том, сколько тестов прошло и с каким статусом. Сейчас этого явно недостаточно. Разрабатываются решения и подходы для сбора и агрегации логов, скриншотов, трассировки запросов, видео, состояния приложения и других показателей в единый отчёт. Такой отчет даёт полную информацию о контексте проблемы для ее быстрого анализа и принятия решения.
4. Self-healing tests. Очень перспективное направление, потому что очень много людей страдает от хрупкости UI тестов. Идея подхода лежит в том, чтобы автоматически исправлять локаторы и другие элементы хрупкости на базе анализа изменений верстки или изображений. Развиваются новые инструменты и сервисы, работающие не только на простых алгоритмах, но и задействующие ML и AI.
5. Test data management. Старое направление, которое заиграло новыми красками с появлением новых инструментов и подходов. Сюда входят практики генерации тестовых данных, безопасные преобразования живых данных в тестовые, версионирование слепков данных, использование immutable контейнеров с данными, управление данными непосредственно из теста. Очень интересная и обширная тема.
6. Everything as a code. В этом направлении я отмечу 2 очень свежих идеи test cases as a code и QA service mesh. Первая предполагает хранение полностью всей информации о тестах, включая ручные проверки и связывание с требованиями, в коде. Такой подход открывает много возможностей по автоматической генерации тестовых прогонов, сложной отчётности, работе с ветками, практикам ревью и т.д. Вторая идея предполагает вынесение в отдельный процесс всех функций, которые нужны автотестам. Этот процесс может быть запущен рядом с каждым сервисом системы и позволяет легко получить доступ к файловой системе, обмену сообщениями, внутреннему API и т.д. Таким образом, сами сервисы остаются чистыми, повышается гибкость и безопасность.
Как видите, в автоматизации тестирования хватает интересных направлений, которые далеки от банального написания тестов с помощью вашего любимого инструмента или языка программирования.