Но почему же автоматизированное тестирование до сих пор не вытеснило ручное? В чем плюсы и минусы каждого из них? Давайте разбираться.
Ручное тестирование
Ручное (мануальное) тестирование — это тестирование без помощи каких-либо программ, автоматизирующих работу.
Например, чтобы протестировать работу формы авторизации, мы сами заходим на сайт и вручную заполняем поля «Имя» и «Пароль». То есть мы выступаем в роли обычного пользователя продукта.
Напомню, что ручное тестирование строится на методах тестирования. Сюда относятся и техники тест-дизайна, и техники, основанные на опыте. Просто еще раз хочу обратить внимание, что тестирование — это заранее продуманная деятельность по сравнению фактического результата с ожидаемым, а не просто поиск ошибок «методом тыка».
Плюсы ручного тестирования:
- Пользовательский фидбек. Весь отчёт тестировщика может быть рассмотрен как обратная связь от потенциального пользователя.
- UI-фидбек. В наше время пользовательский интерфейс играет огромную роль и поэтому полностью протестировать его можно только вручную.
- Дешевизна. В краткосрочной перспективе ручное тестирование дешевле, чем инструменты автоматизированной проверки.
- Тестирование в реальном времени. Незначительные изменения могут быть исследованы сразу, без написания кода и его исполнения.
- Возможность исследовательского тестирования. Его целью является проверка разнообразных возможностей приложения. Важно, что используются не заранее составленные тест-кейсы, а придуманные на лету сценарии.
Минусы ручного тестирования:
- Человеческий фактор. Хотя UI и может быть протестирован только вручную, люди часто склонны к неэффективности. Некоторые ошибки могут остаться незамеченными.
- Трудоемкость повторного использование. Провести серию стандартных автоматических тестов проще, чем протестировать проект вручную после внесения даже небольших изменений.
- Невозможность проведения некоторых видов тестов, например, нагрузочного тестирования. Невозможно смоделировать большое количество пользователей вручную.
Автоматизированное тестирование
Автоматизированное тестирование предполагает использование специального программного обеспечения (помимо тестируемого) для контроля выполнения тестов и сравнения ожидаемого результата работы программы с фактическим.
Этот тип тестирования помогает автоматизировать часто повторяющиеся, но необходимые для максимизации тестового покрытия, задачи.
Это отдельная дисциплина искусства тестирования. Значительная часть эффективности работы отдела тестирования зависит от того, какие задачи отданы для автоматизации и как эта автоматизация была осуществлена.
Подходы к автоматизации
Ниже представлена пирамида автоматизации Майка Кона, которая иллюстрирует эффективный подход к автоматизации тестирования.
Ширина каждого уровня пирамиды показывает, сколько тестов должно быть на каждом уровне по сравнению с другими.
На нижнем уровне пирамиды находятся компонентные автотесты. Это тесты, которые проверяют на корректность отдельные модули исходного кода программы, наборы из одного или более программных модулей вместе с соответствующими управляющими данными, процедурами использования и обработки. Например, можно сделать тест на добавление одного товара в корзину. Или проверку одного вычисления на калькуляторе.
Средний уровень занимают интеграционные автотесты, которые верифицируют бизнес-поведение (но не через GUI). Такие тесты иногда называют API тестами. API — это интерфейс, который позволяет общаться напрямую с программой, минуя пользовательский интерфейс.
Например, вместо того, чтобы зайти на сайт, выбрать нужный товар и положить его в корзину, автотесты могут напрямую сказать сайту, отправив запрос “положи товар в корзину”.
Верхний уровень пирамиды — автотесты пользовательского интерфейса, которые непосредственно затрагивают пользовательский интерфейс. Например, проверяем отображение или изменение информации о сумме покупок в корзине через пользовательский интерфейс.
Что можно автоматизировать?
Давайте в качестве примера рассмотрим несколько программ автоматизации.
1. Программы для помощи в черноящичном тестировании. Например:
— автоматическое создание аккаунтов пользователя;
— запросы к базе данных и генерация файлов формата, утвержденного системой VISA, используя извлеченные данные;
— генерация транзакции покупки в нашем магазине и т.д.
2. Программы для регрессионного тестирования. Это специальное ПО, созданное для буквального воспроизведения действий тестировщика.
Например, согласно тест-кейсу мы должны:
— войти в систему,
— выбрать товар,
— положить его в корзину,
— заплатить,
— удостовериться, что баланс на кредитной карте уменьшается на сумму покупки.
Чтобы исполнить этот тест-кейс, мы должны запустить браузер, ввести имя пользователя и пароль, нажать на кнопку «Вход»… и, в конце концов, сравнить фактический и ожидаемый результаты. Теперь представьте себе, что некая программа делает те же самые действия за вас.
Такое ПО, как правило, поддерживает режим «Запись / Воспроизведение», т.е. когда мы нажимаем на кнопку «Запись» и начинаем кликать мышками и клацать клавишами клавиатуры, ПО записывает наши действия и, когда мы закончили, генерирует код. Этот код мы можем запустить с этим же ПО, и оно воспроизведет все наши клики и клацы, т.е. буквально будет водить курсором мышки, набирать текст и т.д.
3. Программы для тестирования скорости и надежности. Это программы, которые помогают проводить стрессовое и нагрузочное тестирование.
Плюсы и минуса автоматизации
Преимущества:
- Исключен «человеческий фактор» во время выполнения: тест-скрипт не допустит ошибки по неосторожности.
- Скорость выполнения выше возможностей человека.
- Автоматически формируемые и сохраняемые отчеты о результатах тестирования.
- Выполнение в фоне – во время выполнения тестов можно заниматься другими задачами или выполнять тест-скрипты в нерабочее время.
- Способность средств автоматизации выполнить тест-кейсы, в принципе непосильные для человека в силу своей сложности, скорости или иных факторов. Например, нагрузочное тестирование.
Недостатки:
- Необходим высококвалифицированный персонал в силу того факта, что автоматизация — это «проект внутри проекта» (со своими требованиями, планами, кодом и т.д.).
- Высокие затраты на сложные средства автоматизации, разработку и сопровождение кода тест-кейсов.
- Автоматизация требует более тщательного планирования и управления рисками, т.к. в противном случае проекту может быть нанесён серьёзный ущерб.
- Средств автоматизации крайне много, что усложняет проблему выбора того или иного средства и может повлечь за собой финансовые затраты (и риски), необходимость обучения персонала (или поиска специалистов).
- В случае ощутимого изменения требований, смены технологического домена, переработки интерфейсов (как пользовательских, так и программных) многие тест-кейсы становятся безнадёжно устаревшими и требуют создания заново.
Смешанное/полуавтоматизированное тестирование
Здесь ручной подход сочетается с автоматизированным. Например, с помощью программы создается новый аккаунт, а потом вручную генерируются транзакции покупки.
Почему ручное тестирование не вымерло?
Да, автоматизация значительно сокращает время на тестирование определенных фич. Плюс есть вещи, которые просто невозможно проверить вручную. Но не стоит забывать и о ее стоимости. Не все продукты финансово могут потянуть автоматизацию. Да и не всегда требуется что-то автоматизировать.
Также вручную можно протестировать практически любое приложение, в то время как автоматизировать стоит только стабильные системы. То есть мы не можем, по крайней мере на сегодняшний день, автоматизировать все проверки.
Автоматизированное тестирование используется главным образом для регрессии. Кроме того, некоторые виды тестирования, например, исследовательское тестирование, могут быть выполнены только вручную.
Автоматизация начинается с ручного тестирования. То есть для того, чтобы начать процесс автоматизации тестирования, нужно точно знать, что и как вы собираетесь делать. Идеальный автотест базируется на ручном тест-кейсе с должным уровнем детализации.
________________________________
Ручное тестирование существует, так как невозможно автоматизировать все проверки и автоматизация не всегда финансово выгодна.
________________________________
На реальных проектах часто используется комбинация ручного и автоматизированного тестирования. Уровень автоматизации зависит от многих факторов: тип проекта, особенности постановки производственных процессов в компании, финансовых возможностей и т.п.
Оба вида тестирования имеют как преимущества, так и недостатки. Комбинация обоих — хороший способ получить от тестирования максимальный результат.