Aвтотесты - зло или необходимость?
Так что же собой представляют автотесты и что это такое?
Автотест (автоматизированное тестирование) – это скрипт, имитирующий поведение пользователя при эксплуатации программного продукта.
Автоматизированное тестирование при должном подходе сильно улучшает процесс разработки и поддержки программных продуктов, однако имеет ряд недостатков и подводных камней.
Цель автотеста – это локализация ошибок в работе программного обеспечения.
Так почему же автотесты зло?
Первый и один из главных недостатков - это дорогая разработка.
Разработка автотестов занимает довольно внушительный промежуток времени, сильно зависящий от сложности и объема функционала. Соответственно, чем проект больше, тем дольше и сложнее будут создаваться автотесты. Плюс ко всему не каждый QA-отдел может позволить себе разработку автотестов, что влечет за собой дополнительную нагрузку на отдел разработки при создании проекта, а это увеличит время разработки самого проекта.
У автотестов медленная обратная связь
Вначале проекта, когда реализуется первый функционал написания автотестов, это будет занимать намного больше времени, чем «ручное тестирование». А уже далее, по мере доработки функционала, написание тестов начинает занимать столько же, либо меньше, чем "ручное тестирование".
Немаловажный фактор - это долгий анализ результатов
Все дело в том, что автотесты сами по себе часто сложны в диагностике того, что пошло не так. Также часто случаются ситуации ложных срабатываний и непредсказуемых поведений автотестов при влиянии внешних факторов (изменение разработанного функционала, неполадки в сети, микросбои на сервере и т.д.)
Как сказано ранее, еще одна боль автотестов - выход из строя
Автотесты часто выходят из строя даже после незначительных изменений в программном продукте, поэтому их нужно постоянно дорабатывать.
Поэтому следующий минус автотестов - это их постоянная поддержка
Разработка автотестов требует определенного времени и значительное время будет потрачено для поддержания их в актуальном состоянии. Если не обновлять тесты, то в регрессии, при достаточном их количестве, будет множество «падений» и всё преимущество автотестов сойдёт на нет.
Чаще случается так, что от автотестов ждут завышенные ожидания. И это еще один минус
Автотесты охватывают только то, на что они были запрограммированы. Поэтому тест может пройти успешно, а смежный дефект остаться незамеченным, так как автотест «ловит» другой баг.
Автоматизация не является тестированием, а автотесты – это всего лишь запрограммированные шаги для выполнения какого-либо сценария. Многие, кто впервые сталкивается с автоматизацией, хотят автоматизировать всё и всюду, чтобы избавиться от мануальных тестировщиков. Но такое невозможно, так как в каждом отдельном проекте существуют особенности в тестировании, с которыми автотесты не справятся.
Мы рассмотрели, какие минусы есть у автотестов. Так когда же автотесты - это необходимость?
Одним из примеров, когда автотесты действительно нужны - это полная проверка состояния приложения
Автотесты являются отличным способом подтверждения того, что после внедрения нового функционала в приложение, старый функционал всё ещё исправно работает. После нового релиза выполняется регрессионный запуск всех автотестов, что позволяет быстро отловить баги, вносимые новым функционалом, а также перепроверить приложение на все ранее найденные баги в старом функционале.
Автотесты нужны, когда необходим быстрый отчёт о дефектах
Используя автотесты, разработчики могут быстро и без привлечения отдела тестирования узнать, корректно ли работает реализованный ими функционал. При этом, если речь идет о новом функционале при реализации API, то скорость прохождения автотестов значительно повышается по сравнению с использованием «ручного тестирования».
Еще один фактор, когда автотесты нужны на проекте - нехватка людей или экономия человеческого ресурса
Прохождение автотестов занимает определённое время, но как правило меньшее, чем время прохождения тестов при «ручном тестировании», особенно если речь идет о регрессионном или smoke-тестировании. В то время, когда выполняются автотесты, отдел тестирования может выполнять проверку функционала непокрытого автотетстами.
Также экономией человеческого ресурса, а именно отдела тестирования, является привлечение разработчиков
По большей части тесты пишутся на том же языке, что и приложение. А так как далеко не любой отдел тестирования занимается написанием автотестов, то разработчики проекта могут сами поучаствовать в написании автотестов.
Плюсом также является минимизация ошибок
Автотесты работают даже ночью. Роботы могут запускаться автоматически, дистанционно и по расписанию. Они не отвлекаются, не забывают, и делают проверку столько раз, сколько нужно.
Автотесты больше подходят «взрослым» проектам, либо проектам с большим количеством функционала. Также они будут очень полезны проектам с частым проведением полного регресса при разработке нового функционала.