Ко всем статьям

Aвтотесты - зло или необходимость?

Так что же собой представляют автотесты и что это такое?

Автотест (автоматизированное тестирование) – это скрипт, имитирующий поведение пользователя при эксплуатации программного продукта. 

Автоматизированное тестирование при должном подходе сильно улучшает процесс разработки и поддержки программных продуктов, однако имеет ряд недостатков и подводных камней. 

Цель автотеста – это локализация ошибок в работе программного обеспечения. 

Так почему же автотесты зло? 

Первый и один из главных недостатков - это дорогая разработка. 

Разработка автотестов занимает довольно внушительный промежуток времени, сильно зависящий от сложности и объема функционала. Соответственно, чем проект больше, тем дольше и сложнее будут создаваться автотесты. Плюс ко всему не каждый QA-отдел может позволить себе разработку автотестов, что влечет за собой дополнительную нагрузку на отдел разработки при создании проекта, а это увеличит время разработки самого проекта. 

У автотестов медленная обратная связь 

Вначале проекта, когда реализуется первый функционал написания автотестов, это будет занимать намного больше времени, чем «ручное тестирование». А уже далее, по мере доработки функционала, написание тестов начинает занимать столько же, либо меньше, чем "ручное тестирование". 

Немаловажный фактор - это долгий анализ результатов 

Все дело в том, что автотесты сами по себе часто сложны в диагностике того, что пошло не так. Также часто случаются ситуации ложных срабатываний и непредсказуемых поведений автотестов при влиянии внешних факторов (изменение разработанного функционала, неполадки в сети, микросбои на сервере и т.д.) 

Как сказано ранее, еще одна боль автотестов - выход из строя 

Автотесты часто выходят из строя даже после незначительных изменений в программном продукте, поэтому их нужно постоянно дорабатывать. 

Поэтому следующий минус автотестов - это их постоянная поддержка 

Разработка автотестов требует определенного времени и значительное время будет потрачено для поддержания их в актуальном состоянии. Если не обновлять тесты, то в регрессии, при достаточном их количестве, будет множество «падений» и всё преимущество автотестов сойдёт на нет. 

Чаще случается так, что от автотестов ждут завышенные ожидания. И это еще один минус 

Автотесты охватывают только то, на что они были запрограммированы. Поэтому тест может пройти успешно, а смежный дефект остаться незамеченным, так как автотест «ловит» другой баг. 

Автоматизация не является тестированием, а автотесты – это всего лишь запрограммированные шаги для выполнения какого-либо сценария. Многие, кто впервые сталкивается с автоматизацией, хотят автоматизировать всё и всюду, чтобы избавиться от мануальных тестировщиков. Но такое невозможно, так как в каждом отдельном проекте существуют особенности в тестировании, с которыми автотесты не справятся. 

Мы рассмотрели, какие минусы есть у автотестов. Так когда же автотесты - это необходимость? 

Одним из примеров, когда автотесты действительно нужны - это полная проверка состояния приложения 

Автотесты являются отличным способом подтверждения того, что после внедрения нового функционала в приложение, старый функционал всё ещё исправно работает. После нового релиза выполняется регрессионный запуск всех автотестов, что позволяет быстро отловить баги, вносимые новым функционалом, а также перепроверить приложение на все ранее найденные баги в старом функционале. 

Автотесты нужны, когда необходим быстрый отчёт о дефектах 

Используя автотесты, разработчики могут быстро и без привлечения отдела тестирования узнать, корректно ли работает реализованный ими функционал. При этом, если речь идет о новом функционале при реализации API, то скорость прохождения автотестов значительно повышается по сравнению с использованием «ручного тестирования». 

Еще один фактор, когда автотесты нужны на проекте - нехватка людей или экономия человеческого ресурса 

Прохождение автотестов занимает определённое время, но как правило меньшее, чем время прохождения тестов при «ручном тестировании», особенно если речь идет о регрессионном или smoke-тестировании. В то время, когда выполняются автотесты, отдел тестирования может выполнять проверку функционала непокрытого автотетстами. 

Также экономией человеческого ресурса, а именно отдела тестирования, является привлечение разработчиков 

По большей части тесты пишутся на том же языке, что и приложение. А так как далеко не любой отдел тестирования занимается написанием автотестов, то разработчики проекта могут сами поучаствовать в написании автотестов. 

Плюсом также является минимизация ошибок 

Автотесты работают даже ночью. Роботы могут запускаться автоматически, дистанционно и по расписанию. Они не отвлекаются, не забывают, и делают проверку столько раз, сколько нужно. 

Автотесты больше подходят «взрослым» проектам, либо проектам с большим количеством функционала. Также они будут очень полезны проектам с частым проведением полного регресса при разработке нового функционала.