Что это такое и в чем разница? Пред релизом менеджер проекта передает сайт тестировщику — QA-специалисту. Его задача — проверить, что сайт работает в соответствии с требованиями клиента. То есть тестировщик выявляет скрытые ошибки в функционале и дизайне сайта.
Для этого у QA-специалиста есть два метода:
ручное тестирование сайта, автоматическое тестирование сайта. При первом подходе тестировщик вручную формирует и проверяет сценарии поведения пользователя. Дополнительные инструменты не используются.
При втором подходе тестировщик автоматизирует проверку сценариев. На входе он подготавливает данные, а затем при помощи инструментов проверяет заготовленные сценарии. Например, в нашей практике мы используем: PHPUnit, Jest для javascript и Playwright для End-2-End тестов.
Автотесты и ручное тестирование имеют свои преимущества и недостатки. В одних ситуациях автоматическое тестирование экономит время и деньги. В других — ручное тестирование оказывается быстрее и дешевле. Поэтому ниже разберем, когда стоит использовать тот или иной подход.
Когда использовать ручное тестирование сайта? Тесты запускают редко. Автотесты отнимают много времени на подготовительном этапе. Поэтому ручное тестирование выгоднее там, где не нужны частые и быстрые проверки. Например, если у вас корпоративный сайт на готовом решении от Битрикс. Для поиска визуальных или UX ошибок. Такую расплывчатую задачу компьютер решить не может. При автотесте нужны четкие формулировки. Поэтому только ручное тестирование подходит для проверки удобства использования сайта и визуальных ошибок. Ошибку нельзя обнаружить при помощи автотестов. К тестированию можно подходить творчески. Например, QA-специалист придумывает необычные поведенческие сценарии — это помогает раскрыть критические ошибки, которые нельзя обнаружить при автоматизированном тестировании. Когда использовать автоматическое тестирование сайта? Для регулярного мониторинга ошибок. Например, когда на сайте каждый час оставляют десятки заказов. А значит, вы должны быть уверены, что форма заказа работает постоянно.Повторяющиеся задачи. Внедряйте автотесты там, где совершаются одни и те же шаги. Автоматизируйте все, что повторяется и отнимает много времени при ручном тестировании.Тесты запускают часто. Перед каждым обновлением сайт тестируют на ошибки. Если релизы происходят регулярно, то ручная проверка — это худшее решение.Ошибки, которые незаметны глазу. Ручное тестирование бывает неточным. Люди совершают ошибки — это нормально. При этом автоматическое тестирование исключает их, поскольку оно основано на коде и сценарии.Невозможно запускать тесты вручную. Например, стресс-тестирование — яркий тому пример. QA-специалисты используют этот тип тестирования, чтобы проверить, как сайт ведет себя при высокой нагрузке. Часто стресс-тестирование требует создания тысяч запросов в короткие сроки. Инженер по тестированию просто не может воссоздать этот тип поведения вручную.Это была теория. Теперь разберем кейсы из нашей практики. Вам станет понятнее как это работает и в каких случаях подойдут автотесты.
Кейс № 1. Тестирование добавления филиалов. Проблема
На одном из сайтов разрабатывали функционал, который позволял создавать свои филиалы для каждого дилера. То есть при авторизации каждый пользователь попадал к закрепленному за ним дилеру. А если пользователь не привязан, его перенаправляло на основной филиал.
Оказалось, что данное решение чувствительно к изменениям в других частях сайта. Ошибки в функционале приводили к блокировке большей части сайта. Поэтому приходилось проходить тест-кейсы после каждого релиза. При этом релизы были каждый день.
Решение
Подготовили несколько тест-кейсов на основе PHPUnit.
Проверка работы формы авторизации. Проверка добавления филиала. Проверка добавления пользователя. Проверка переадресации на нужный домен. Тест-кейсы запускали вручную или автоматически, когда разработчик делал commit — при изменениях на рабочем сервере.
В результате после запуска — 9 из 9 тестов успешно пройдены. Заняло это меньше 5 секунд.
Для проверки функционала тестов умышленно его ломаем. В результате получаем ошибку в консоли — это значит, что тест работает корректно.
Окупаемость инвестиций
Кейс № 2. Тестирование связи района и адреса Проблема
У одного из наших клиентов периодически возникали расхождения по времени доставки и адресу получателя. Задача усложнялась тем, что время доставки настраивалось по району, а показывалась в зависимости от адреса. В этом нам помогал сервис dadata.ru.
Решение
В классической битрикс-разработке backend и frontend не изолированы. Мы не могли написать отдельные Юнит-тесты на API и Frontend. Поэтому решили написать end-to-end тесты. Они затратны в написании и поддержке, зато подходят для всех видов архитектур
В работе использовали Playwright. Он полностью эмулирует работу браузера. На примере ниже видно, как открывается сразу 3 окна браузера и параллельно проходят тест-кейсы:
Открывают главную страницу. Добавляют первый товар в корзину. Заходят в корзину. Пробуют вставить заранее подготовленные адреса. Сравнивает ожидаемую стоимость и время доставки с фактической.
Для наглядности намеренно запустили тесты с визуальным отображением происходящего. Если запускать из терминала, то результат выглядит следующим образом.
Результат — 1 из 3 тестов завершен успешно. Для клиента вынесли данные в отдельный excel-файл.
Дополнительно подключили HTML-отчет, который можно смотреть после каждого запуска.
Окупаемость инвестиций
Рассмотрим окупаемость инвестиций для этого кейса. Всего у нас было 45 тест-кейсов. Ручная проверка занимает порядка 5 минут — это 225 минут ежедневно. За 3 месяца работы — это 227 часов. При ставке 2500 в час бюджет на ручное тестирование сайта составил бы 567 500 рублей.
При этом на написание автотестов у нас ушло 6 часов и 2 часа на их прохождение. В итоге вместо 500 тыс. бюджет проекта составил 20 000 рублей.
Резюме Главное, что мы хотели сказать:
Автотесты и ручное тестирование имеют свои преимущества и недостатки. Они не исключают друг друга, а дополняют. Автотест внедряют при непрерывном тестировании или в случае повторяющихся процессов и задач. Ручное тестирование выгодно на небольших проектах. Либо там, где автотесты не справляются. Мы в Alto уже 8 лет занимаемся разработкой личных кабинетов , интернет-магазинов, веб-сервисов. Поэтому наш директор, решил, что нужно все полезное об управлении digital-проектами выкладывать в телеграм-канал . Рекомендуем подписаться, если вы связаны с этим.