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