Автоматизированное тестирование является важным процессом в течение всего цикла разработки программного обеспечения, так как он может обеспечить быстрый отчёт по состоянию продукта при добавлении новой функции. Также автоматизация снимает нагрузку с QA, избавляя от многократного запуска регрессионных тестов, что экономит время, которое можно использовать для тестирования других вещей.
Автоматизация может принести множество бенефитов. Правильная её настройка позволит улучшить качество итогового продукта. Следующие советы и “бест практики” помогут вам в этом.
Мануальное тестирование против автоматизированного
Избегайте сравнение ручного и автоматизированного тестирования. Они оба нужны и преследуют разные цели. Автоматизированные тесты представляют собой набор инструкций, написанных человеком, для выполнения конкретной задачи. Каждый раз при запуске автоматизированного теста будут выполняться шаги, описанные в инструкции, и выполнять описанные проверки.
С другой стороны, во время ручного тестирования, мозг тестера занимается и может обнаружить другие сбои в системе. Во время мануального тестирования тестировщик может заметить баги, которые не видят автотесты.
Автоматизация регрессионных тестов
Автоматизированные тесты наиболее полезны при регрессии, после каждого билда. Если тест будет запускаться только один раз, то смысла в написании автотеста нет. При постоянных обновлениях продукта ценность регрессии будет только возрастать.
Составление теста перед его автоматизацией
Наилучшим вариантом является создание грамотного теста на бумаге. Хорошо составленный сценарий, проверяющий работоспособность какого-либо модуля согласно документации, – это уже полдела. Автоматизировав такой сценарий, получаем автотест, полностью проверяющий определённый блок на соответствие техническому заданию.
Никаких неопределенностей в автоматизированных тестах
Тест должен выполнять строго описанный сценарий проверки и иметь строго фиксированный ожидаемый результат. Он должен выполнить определённый набор действий и сравнить полученный результат с заранее ожидаемым. Больше никаких решений он не должен принимать. Если тест проходит один раз, а на следующий падает, хотя никаких изменений в ПО не вносилось, то такой тест нестабильный. При невозможности исправить нестабильный тест его следует удалить из регрессии. В дальнейшем разбор регрессии и анализ такого теста займёт очень много времени.
Проверяйте автотесты на валидность
При любых изменениях в документации вносите их сразу же в автотесты. Запуск невалидных тестов повлечёт за собой большие потери времени на их анализ.
Не автоматизируйте нестабильные сборки
При разработке новых фич в них часто вносятся изменения. Вызваны они могут требованиями бизнеса или изменением разработчиками технологий реализации данного функционала. Поэтому автотесты могут «валиться», а после окончания работ по реализации функционала может оказаться, что данный тест не пригоден для его тестирования.
Не ожидайте магии от автоматизации тестирования
Автоматизированные тесты не дают гарантии, что все баги будут найдены. Они лишь освобождают тестировщиков от рутинной работы по регрессионному тестированию. Как правило, используя мануальное тестирование, находится гораздо большее количество багов.
Разберитесь в контексте
Тесты могут быть автоматизированы на любом уровне: REST или SOAP сервисы, API, службы, GUI. Для уровня существуют свои цели тестирования. Unit — тестирование гарантирует, что код работает верно на уровне класса, что он компилирует и делает то, что от него ожидается.
API тесты или интеграционные тесты проверяют взаимодействие классов между собой.
GUI тесты проверяют работает ли система в соответствии с некоторой документацией или требованиями. На этом уровне больше тестируется валидация, а не какие-либо другие функции.
Не автоматизируйте каждый тест
Не возможно всё приложение покрыть на 100% тестами, хотя бы из-за множества возможных комбинаций. Это касается и автоматизированных тестов. Автоматизировать все тесты в большинстве случаев невозможно из-за ограниченности в ресурсах и времени. Обычно автоматизируют самые важные для бизнеса тест-кейсы. Некоторые тесты невозможно автоматизировать из-за отсутствия технической возможности.
Не автоматизируйте хаос
Всё должно происходить последовательно. Если нет какой-то упорядоченности и утверждённой стратегии, то в итоге получится хаос. В такой обстановке автоматизация тестирования может закончиться созданием неработающих, трудно поддерживаемых или нестабильных тестов, толку от которых практически никакого.