Любой программный продукт, в том числе сайт нуждается в том, чтобы его проверили на возможные ошибки. Это позволит нести меньше репутационных и финансовых потерь. В первую очередь для этого нужно использовать ручное тестирование, в котором QA-специалист проходит по наиболее популярным сценариям пользователей, чтобы обнаружить возможные проблемы.
Автотест — это возможность исключить человека из процесса тестирования. А это значит, что проверять на ошибки чаще и проверять больше возможных сценариев. Это позволяет экономить и время и в перспективе финансы.
Фактически программа сама себя начинает проверять и сообщать о возможных ошибках.
Для автоматического тестирования сайта мы используем:
- PHPUnit. В том числе и для 1С-Битрикс.
- Jest для javascript.
- Playwright для End-2-End тестов. Используем при написании javascript.
В каких случаях полезно
- Ловить критичные ошибки быстрее. Например, если у вас каждый час совершаются десятки заказов. Вам нужно быть уверенным, что форма заказа работает. И можно ее автоматически проверять каждые 5 минут.
- Ловить проблемы, которые незаметны глазу. Например, ошибки в мобильной версии на определенных страницах и устройствах.
- Проводить утомительные тесты, где тестировщики морально устают и допускают из-за этого ошибки. Например заполнение длительных форм.
- Когда нет документации по проекту и нам нужно быть уверенным, что при изменениях мы правильно поняли работу и ничего не сломали.
- Частые релизы. Если вам нужно каждый день или даже раз в пару дней выгружать новый функционал на сайт, то ручные QA-специалисты просто физически не успеют.
Когда не нужно автоматическое тестирование
Автотесты требуют больше времени специалиста, чем прохождение ручного теста 1-2-3 раза. Соответственно они имеют смысл, там где проверять нужно часто или быстро и не нужны, там где ваша система не меняется годами.
- Если у вас простой корпоративный сайт.
- Вы разрабатывали на готовом решении и не делали критических изменений. Например ваш сайт сделан на 1С-Битрикс и Аспро и вы ограничились настройкой внешнего вида в настройках.
Что нужно подготовить для написания автотестов
- Список функционала, который нуждается в проверке.
- Список тест-кейсов и данных для них. Например, нам нужно проверять, что в зависимости от выбранного региона у вас правильно считается доставка. В таком случае нужно подготовить таблицу с регионами и ожидаемой стоимостью доставки.
- В каком виде нужен отчет. Часть автотестов не нуждается в дополнительном отчете для клиента, достаточно того, что программист не сможет сделать изменения на сайте, если тесты не проходят. В других случаях — это может быть отчет на почту по мере выполнения каждого теста. Или отчет, если тест прошел с ошибкой.
Кейсы автоматического тестирования
Тестирование добавление филиалов
На одном из проектов был реализован функционал дилерской сети.
- Для сети была возможность создавать свои филиалы для каждого дилера.
- Все пользователи привязывались к нужному дилеру и при авторизации на сайте переадресовывались на дилера, за которым закреплены.
- Если пользователь не привязан к дилеру, то должен попадать на основной филиал, после авторизации.
С точки зрения архитектуры решение внутри 1С-Битрикс получилось чувствительным к изменениям. И прохождение тест-кейсов, связанных с этим функционалом, занимало не меньше 15 минут каждый раз. А релизы от разработчиков шли каждый день. Поэтому для этого функционала решили подготовить автоматические тесты. Решили использовать интеграционные тесты на основе PHPUnit.
Было выбрано несколько тест-кейсов:
- Проверка на работу формы авторизации.
- Проверка на добавление филиала.
- Проверка на добавление пользователя.
- Проверка на переадресацию на нужный домен у нового филиала.
Тест можно запустить вручную или он автоматически запуститься при попытке разработчика сделать commit. То есть провести изменения на рабочем сервере.
В результате мы видим:
9 из 9 тестов успешно пройдены. И заняли меньше 5 секунд.
Если мы попробуем умышленно сломать 1 тест, то он покажет нам ошибку.
Таким образом мы можем быть уверены, что функционал описанный в тестах работает корректно и новые правки не повлияют на его работу.
Тестирование связи района и адреса
У одного из наших клиентов периодически возникали расхождения времени доставки и адреса получателя. Задача усложнялась тем, что время доставки настраивалось по району, а показывалась в зависимости от адреса. В этом нам помогал сервис dadata.ru.
Так как часть логики была реализована на frontend и в силу специфики классической битрикс-разработки фронтенд и бэкенд плохо изолированы друг от друга, то мы решили разработать end-to-end тест на playwright.
Playwright полностью эмулирует работу браузера. На примере ниже видно, как открывается сразу 3 окна браузера и параллельно проходят тест-кейсы:
- Открывают главную страницу.
- Добавляют первый товар в корзину.
- Заходят в корзину.
- Пробуют вставить заранее подготовленные адреса.
- Сравнивает ожидаемую стоимость и время доставки с фактической.
Для примера выше мы намеренно запустили тесты с визуальным отображением происходящего для наглядности. Если запускать их в обычном режиме из терминала, то результат выглядит следующим образом:
Как мы видим, проведено 3 теста, и 1 из них успешно. Чтобы клиенту было удобнее обновлять набор данных для теста, мы вынесли данные для сравнения в отдельный excel-файл.
В результате дополнительно можно подключить HTML-отчет, который может посмотреть клиент по итогам каждого запуска.
Сколько стоит автоматическое тестирование
Ранее упоминали, что автотесты занимают примерно 30% от времени разработки функционала. В том числе их поддержка, так как при изменении кода проекта, так же требуется убедиться, что автоматическое тестирование соответствуют изменениям. Минимальное количество времени на реализацию нескольких простых тестов — 10 часов. При стоимости часа 2500 рублей.
Типовой план реализации:
Пункт | Часы |
---|---|
Подготовка тест-кейсов | от 2 |
Реализация автотестов | от 8 |
Подготовка удобного отчета на почту | от 2 |
Что в результате
- Вы уверены, что тест-кейсы, которые автоматизированы будут проверены оперативно и так часто, как это потребуется.
- Экономия на проверке ручными тестировщиками.
- Повышает качество выпускаемого продукта, пользователь видит меньше ошибок.
- Опционально могут формироваться отчеты на почту.
Для заказа автоматического тестирования сайта у нас, оставьте заявку в форме ниже или на странице.