Не так давно, анализируя проекты задумался: что изменилось за последние годы в наших проектах по автоматизации тестирования?
Тенденции в автоматизации тестирования
Как выяснилось, прослеживается чёткая тенденция: помимо естественного развития инструментов автоматизации тестирования и подходов, в проекты внедряются практики по интеграции разработки и технического сопровождения ПО (DevOps), в частности, применяются такие средства контейнеризации, такие, как Docker, VMWare, SaltStack и т.п.
Использование DevOps инструментов в автоматизации тестирования
Рассмотрим подробнее практическую пользу от использования данных инструментов в автоматизированном тестировании:
- Для ускорения тестирования часто осуществляют распараллеливание выполнения тестов. Теперь для решения данной задачи не требуется постигать тонкости многопоточного программирования: можно использовать Docker-контейнеры. Мы применяли Docker для выполнения тестов в 30 параллельных потоков. Подобных, результатов было сложно добиться в условиях многопоточного программирования, так как стабильность решения в многопоточном режиме оставляла желать лучшего.
Всё что нам пришлось разработать – это менеджер управления контейнерами и наборами тестов, выполняемых на них. Также с помощью такого подхода можно организовать нагрузочное тестирование «не высокой мощности», реализованное посредством автоматизированных тестов. Это нам помогло сделать действительно быстрый UI регресс и этакий smoke-performance test, для решений с невысокой нагрузкой может быть весьма актуально. - Устранение конфликтов в мобильном тестировании. Для автоматизаторов, занимающихся мобильной автоматизацией на своём парке устройств не секрет, что существуют проблема совместимости ADB. Мы не стали исключением. На проекте по автоматизированному тестированию «некоторого» мобильного приложения мы столкнулись с конфликтом взаимодействия нативного отладочного моста Android с мостами других производителей — с частью смартфонов HTC, Samsung и некоторыми другими марками.
Одновременная работа отладочных мостов приводила к нестабильностям работы с телефонами, как следствие нестабильности работы системы автоматизации тестирования, и сбоям в работе тестов. С помощью Docker мы успешно изолировали программное обеспечение друг от друга, тем самым исправив конфликт работы разных реализаций ADB, и устранили нестабильность работы системы автоматизации тестирования, просто и без постройки «космических звездолётов».
Заключение
Это далеко не все способы применения инструментов и DevOps практик. Контейнеризация и возможность разворачивания и сворачивания изолированного окружения по требованию будут находить всё более широкое применение для решения задач тестирования ПО. Как говорится – «Смотрите, думайте» – наверняка в вашей практике подобные решения найдут свое место.