Блог

Внедрение автоматизированного тестирования

Как никогда не пропускать ошибки на прод

Срок реализации – от двух недель

Задачи

  1. Улучшить качество поставляемого на прод кода
  2. Сократить временные издержки для тестирования

Стэк

php (symfony, laravel), JavaScript (react)

Решение

Как разработчики, мы приняли участие в создании и поддержке большой CRM-системы для бизнеса в сфере Human Resources. На одном из этапов развития продукта стало понятно, что ручного тестирования не хватает. Мы подсчитали, что на проверки новых фич уходит слишком значительное количество времени. Бывало, что разработчики находились в ожидании проверки новых фич до семи дней. В связи с этим, было принято решение о внедрении автоматизированного функционального тестирования.
С этой целью наши специалисты отдела QA разработали отдельный проект на Java с использованием фреймворка Selenide (можно взять и Selenium). В его основе лежит описание пользовательских кейсов. Например: пользователь на странице видит форму с логином и паролем. Вводит данные, и в зависимости от результата ему выводится сообщение об успешной/неуспешной авторизации. Мы прописываем все критерии, которым удовлетворяет правильная работа системы. И запускаем по описанному сценарию бота. Он сам заполняет все поля, проверяет валидацию и корректность обработки запросов, смотрит чтобы верстка выглядела подобающим образом на всех поддерживаемых разрешениях экрана. Результат тестирования логируется, в нужных местах пишутся скриншоты для подтверждения. При необходимости и при наличии ресурсов можно организовать даже запись видео с прохождением всех шагов сценария.
Показательно, что с помощью автоматического тестирования в некоторых местах удалось сократить временные затраты в восемь (!) раз. Возникла необходимость внести правки в фундаментальные ограничения, а именно внедрить систему ролей пользователей. Появились новые - рекрутер, админ, заказчик, при этом в рамках этих ролей есть ещё и суброли. Логично, что часть функционала у всех должна работать по-разному. Рекрутер не может удалить админа, а админ может редактировать рекрутеров, но не заказчика, и так далее. Проверка функционала вручную заняла бы, как минимум, пару дней - залогиниться под админом, пройти по всему сайту, пощелкать все кнопки, проверить верстку в разных браузерах. Повторить n раз под всеми ролями. При помощи инструментов автоматического тестирования нам понадобилось лишь немного поправить описанный сценарий, выбросить ненужные функции и подменить роль пользователя. Все заняло около двух часов.
Как теперь выглядит процедура подготовки релиза. Новые задачи сливаются с основной кодовой базой, и запускается регрессионное тестирование. Все описанные ранее, а также добавленные по последним таскам сценарии автоматически проходятся ботом. Если в результате слияния выявляется дефект, то система находит зависимости, что позволяет определить причинно-следственную связь инцидента, и быстро внести фикс. Или отказаться от выпуска задачи на продакшн.
Главная задача тестировщиков теперь сводится к тому, чтобы создать максимально полное описание паттернов верного и неверного поведения системы. Все остальное происходит автоматически. Юзеркейсы строятся на основе поставленных задач, поэтому мы обращаем внимание продактов и проджектов на необходимость подготовки максимально полного и качественного ТЗ.
QA и тестирование Classified