При правильном выполнении автоматизация тестирования может иметь множество преимуществ и быть очень полезной для проекта и организации. Однако есть некоторые подводные камни или недостатки автоматизации тестирования, о которых нам необходимо знать.
В чем преимущества автоматизации тестирования?
Автоматические проверки - отличный способ подтвердить, что приложение по-прежнему функционирует должным образом после внесенных в него изменений.
Возможно, что когда в приложение добавляется новая функция или исправляется ошибка, это влияет на функциональность работающего программного обеспечения, то есть появляется регрессионная ошибка.
Запуская набор автоматических регрессионных проверок при обновлении приложения, мы можем выявить любые новые ошибки, появившиеся в результате изменений.
Ключевая информация здесь - запускать автоматические проверки по мере обновления приложения.
Нет необходимости запускать полный набор автоматических проверок. Пакета быстрой регрессии дыма должно хватить, чтобы решить любые серьезные проблемы.
Еще одно большое преимущество автоматических проверок - это быстрая обратная связь, которую мы получаем при обновлении приложения. В идеале команда разработчиков должна устранять любые сбои, как только они возникают, прежде чем переходить к другим задачам.
Пожалуйста, обрати внимание что эта быстрая обратная связь может быть получена только с помощью модульных тестов и тестов API. Если мы тестируем функциональность из пользовательского интерфейса или на системном уровне, тесты могут занять много времени.
Автоматическая проверка может занять некоторое время. Однако, когда мы их выполняем, они, как правило, бывают быстрыми и могут проходить различные этапы намного быстрее, чем человек. Таким образом, они помогают быстро получить обратную связь с командой разработчиков.
Это особенно верно в случае сценариев, основанных на данных.
Лучшее применение автоматических проверок - это регрессионные тесты.
Автоматизация регрессионных тестов освобождает время тестировщиков, поэтому они могут больше сосредоточиться на исследовательском тестировании новых функций.
Точно так же, при правильной реализации, автоматические проверки могут выполняться автоматически с минимальным контролем или без ручного вмешательства или без него.
Автоматические проверки обычно пишутся на том же языке, что и тестируемое приложение. По этой причине ответственность за написание, обслуживание и выполнение тестов становится совместной ответственностью.
Каждый в команде разработчиков может внести свой вклад, а не только тестировщики.
В чем недостатки автоматизации тестирования?
Остерегайтесь прохождения тестов! Это особенно важно при проверке функциональности на уровне пользовательского интерфейса или системы.
Автоматическая проверка проверяет только то, что было запрограммировано для проверки.
Все автоматические проверки в наборе тестов могут успешно пройти, но могут остаться незамеченными серьезные недостатки. Причина этого в том, что автоматическая проверка не была закодирована для «поиска» этих сбоев.
Решение: убедитесь, что вы разработали хорошие сценарии тестирования, прежде чем их автоматизировать. Автоматическая проверка хороша ровно настолько, насколько хорош дизайн теста. Также дополните автоматические проверки ручным / исследовательским тестированием.
Автоматические проверки могут дать сбой по многим причинам. Если автоматические проверки продолжают давать сбой из-за проблем, отличных от настоящих ошибок, они могут вызывать ложные тревоги.
Например, автоматические проверки могут выйти из строя из-за изменения пользовательского интерфейса, неработающей службы или проблем с сетью.
Эти проблемы не исходят непосредственно от тестируемого приложения, но могут повлиять на результат автоматических проверок.
Решение: Где возможно / применимо, используйте заглушки. Заглушки устраняют проблемы с подключением или изменения в сторонних системах. Следовательно, автоматические проверки не будут зависеть от каких-либо отказов в нисходящем направлении.
К сожалению, многие люди путают «автоматизацию тестирования» с тестированием.
Когда у них появятся инструменты для автоматизации тестирования, они захотят «автоматизировать все тесты». Они хотят избавиться от всех «ручных тестировщиков».
Правда в том, что тестирование - это исследовательское упражнение. Тестирование требует знания предметной области, сосредоточенного ума и готовности изучить приложение.
Тестирование - это не просто выполнение набора заранее определенных шагов тестирования и сравнение фактических результатов с ожидаемыми. Это работа автоматических проверок.
Чтобы правильно протестировать приложение, всегда требуется человеческий интеллект.
Решение: Поймите, что для успешной реализации проекта вам потребуется как автоматическое, так и ручное тестирование.
Одно не заменяет другого; дополнять автоматические проверки ручным / исследовательским тестированием.
Вы должны принять тот факт, что автоматизированные тесты требуют обслуживания. По мере развития тестируемого приложения должны происходить и автоматические проверки.
Автоматические проверки недолговечны. Если пакеты регрессии не обновляются, вы начинаете видеть всевозможные сбои.
Может какие-то проверки уже не актуальны. Или, может быть, проверки не являются истинным представлением новых реализаций.
Эти сбои могут испортить результаты теста.
Автоматизация тестирования - это не разовое мероприятие. Чтобы получить максимальную отдачу от автоматических проверок, их необходимо обновлять и актуализировать. Это требует много времени, усилий и ресурсов.
Решение: Поскольку фактор обслуживания - это постоянная деятельность, потратьте время на разработку хорошей структуры. Используйте повторно используемые модули, отделяйте тесты от фреймворка и используйте хорошие принципы проектирования, чтобы облегчить обслуживание.
Когда функциональность готова к тестированию, в большинстве случаев проще выполнить ручную проверку.
Проблема в том, что автоматические проверки могут занять много времени, в зависимости от сложности теста. Следовательно, ручная проверка дает более быструю обратную связь, чем написание сценария, запуск и проверка результатов.
Кроме того, что касается тестирования пользовательского интерфейса и системного уровня, автоматические проверки могут занять много времени для завершения и составления отчета. Следовательно, если есть настоящая ошибка, мы можем не узнать об этом до завершения всех тестов.
Решение: Попробуйте автоматизировать тесты одновременно с разработкой, чтобы по завершении разработки вы могли запускать автоматические тесты для новых функций.
Кроме того, разделите автоматические чеки по разным пакетам.
Пакет для регрессии дыма должен быть очень быстрым. Тесты должны только проверять, можно ли запустить приложение и получить к нему доступ.
Затем у вас может быть функциональный регрессионный пакет, который проверяет основные функции.
Другой регрессионный пакет может включать в себя все сквозные и углубленные тесты. Эти проверки могут выполняться в одночасье.
Примером ночного прогона являются автоматизированные кросс-браузерные проверки. Обычно они запускаются во всех браузерах долго.
Кажется, что большинство ошибок обнаруживается «случайно» или при исследовательском тестировании.
Вероятно, это связано с тем, что в каждом сеансе исследовательского тестирования мы могли тестировать приложение разными способами.
С другой стороны, автоматические проверки регрессии всегда следуют заданному пути. Иногда с одним и тем же набором тестовых данных. Это снижает вероятность обнаружения новых дефектов в приложении.
Также количество ошибок регрессии кажется меньше, чем ошибок новых функций.
Решение: Попробуйте создать случайность в сценарии и данных. Если каждый раз пробовать разные пути с разными данными, это может выявить потенциальные проблемы.
В этом посте мы рассмотрели некоторые преимущества и недостатки автоматического тестирования. Когда мы занимаемся автоматизацией тестов, мы должны учитывать вышеперечисленные моменты, чтобы получить максимальную пользу.