Автоматизированное тестирование: ожидание vs реальность
Большинство занимающихся тестированием хоть раз испытывали желание нажать «волшебную» кнопку и смотреть, как программа все делает сама. Все любят автоматизацию. Это быстро, надежно, позволяет оптимально использовать ресурсы за счет работы ночью и не требует вмешательства человека. Казалось бы, наконец найдено решение проблемы эффективности. Но так ли все происходит на самом деле?
Ожидание №1: Можно тратить время на изучение фреймворка и тест-кейсов при автоматизации нового приложения.
Реальность: Автоматизация занимает много времени, денег и, самое главное, терпения. Написание скрипта автоматизации требует от тестировщика знания сферы деятельности, автоматизации тест-кейсов и возможности выбрать соответствующий фреймворк.
Автоматизация, как и разработка приложений, нуждается в тестировании. Скрипты, написанные с помощью автоматизации, необходимо тщательно проверить, используя все тестовые данные и негативное тестирование. Инструмент, не прошедший такое тестирование, приводит к ошибкам в скрипте во время работы.
Решение проблемы:
- Потрать время на изучение приложения, которое собираешься автоматизировать. Устанавливая сроки автотеста, учитывай время, необходимое для сбора требований, разработки дизайна, написания кода и тестирования продукта.
- Оцени возможности реализации проекта, чтобы избежать исправления дефектов после запуска приложения.
- Обсуди с разработчиками ключевые области, подлежащие автоматизации, и выбери соответствующий фреймворк и инструменты, необходимые для разработки.
Ожидание №2: Автоматизированное тестирование может заменить ручное тестирование.
Реальность: Существует заблуждение, что как только нужные скрипты написаны, можно сразу заменить тестировщика программой. Это не совсем так. Автотест пропустит даже самый маленький баг, если поиск багов такого типа не прописан в нем, что вряд ли произойдет при ручном тестировании. Кроме того, в большинстве случаев в приложения часто вносят изменения, что влияет на “область покрытия программы” и приводит к ошибкам в скрипте. Здесь и приходит на помощь тестировщик, который вручную проверяет изменения, пока скрипты обновляются.
Решение проблемы:
- Не думай, что скоро все тестирование будет проводиться компьютерами. Вероятность полной замены ручного тестирования автоматизированным так же мала, как и порабощение человечества роботами. Только человеческий мозг может эффективно проанализировать результаты тестирования.
- Тестируй часто обновляющиеся приложения вручную, ссылаясь на результаты автоматизации. Ни в коем случае не используй их в качестве основных.
- Используй автоматизацию только для статичных независимых приложений, нуждающихся в регрессивном тестировании.
Ожидание №3: Используя автоматизацию, можно добиться результата гораздо быстрее, чем при выполнении ручного тестирования.
Реальность: В сравнении с ручным автоматизированное тестирование действительно проходит быстрее, но в некоторых случаях программе требуется гораздо больше времени, чтобы обнаружить объект, свойства которого не прямолинейны. Например, автоматизация потратит больше времени, чтобы обнаружить несколько заголовков с похожими свойствами на одной странице, нежели тестировщик, который взглядом проверит их наличие.
Кроме того, тестировщик гораздо быстрее находит данные, необходимые для проведения тест-кейсов. Программа же нуждается в прописанной последовательности операций, чтобы успешно выполнить ту же задачу.
Решение проблемы:
- Во время анализа требований прими к сведению время, необходимое для выполнения операции, сложность тестируемой системы и количество внешних систем, вовлеченных в процесс. Проанализируй целесообразность использования автоматизированного тестирования для данного приложения.
- Четко дай понять всем участникам процесса, сколько усилий потребуется для автоматизации приложения данного типа и чего от такой автоматизации стоит ожидать.
- При расчете эффективности работы прими во внимание такие аспекты как сложность объектов, расход системы, время написания скриптов и скорость выполнения задачи как автоматизированной программой, так и человеком.
Ожидание №4: Конечному пользователю автоматизированного тестирования нужно нажать всего одну кнопку, чтобы провести тест-кейсы.
Реальность: Когда автоматизация завершена, и приложение передано конечному пользователю (чаще всего это тестировщики или разработчики, проводящие модульное тестирование), многие думают, что выполнение скриптов может проходить без каких-либо изменений в тестовых данных. К сожалению, такое происходит очень редко.
Факт того, что придется потратить время на подготовку тест-кейсов для выполнения скрипта, становится сильным шоком для пользователя. Происходит это из-за того, что выполнение скриптов рассматривается как второстепенная задача, а не основная. Конечный пользователь должен разбираться в потоковых данных, ключевых словах и знать, какие значения следует вводить.
Решение проблемы:
- Во время написания скриптов регулярно информируй конечного пользователя о потоковых данных, необходимых для тест-кейсов, контрольных данных и т.д., чтобы у тестировщика или разработчика не возникало ложных представлений о приложении.
- Разберись, какие данные будут вводными, а какие — константными. Это сведет ввод данных для каждого отдельного случая к минимуму.
Ожидание №5: Автоматизированное тестирование выполнит работу на 100% без единого сбоя.
Реальность: Автоматизация схожа с разработкой ПО и имеет свои недостатки и ограничения. Невозможно выполнить все скрипты без сбоев в них. Есть несколько причин, по которым эти сбои происходят, и не все они связаны с автоматизацией. Например, медленная работа системы, проблема целостности данных, изменения в пользовательском интерфейсе и т.д. Чаще всего это происходит с постоянно обновляющимися приложениями.
Решение проблемы:
- Важно, чтобы конечный пользователь понимал причину сбоя и пробовал самостоятельно устранить неисправность, прежде чем обращаться к команде людей, занимающихся автоматизацией. Пользователю станет понятнее ход выполнения скрипта, а команде разработчиков не придется тратить время на решение каждой возникающей проблемы.
- Используй автоматизацию для тестирования устойчивых систем, разработка которых завершена.
- Убедись, что все тест-кейсы обновлены в соответствии с последними тестовыми данными и нет никаких внешних факторов, влияющих на систему во время выполнения скриптов.
Кирилл Флягин, геймдизайнер, QA Lead
Автоматизация тестирования может принести свои плоды в перспективе, но вряд ли ты увидишь ощутимые результаты сразу, так как скрипты нуждаются в постоянном обновлении. Автоматизация также не поможет тебе магическим образом выполнить работу в срок. Нужно понимать ограничения, которыми она обладает, и использовать ее соответственно. Только в этом случае ты сможешь достигнуть желаемого результата.