Как автоматизировать большой и сложный проект? Если коротко — доверить вопрос специалистам, которые точно знают, что делать. Рассказываем, как внедряли Allure TestOps и помогали заказчику автоматизировать тест-кейсы сразу для 11 сайтов.
О проекте
Клиент
Индустрия
Продукт
Результаты
- Теперь все платформы клиента, несмотря на отличия между ними, легко автоматизировать по готовому сценарию.
- Наша команда настроила CI/CD.
- Скорость прогона тестов увеличилась в 4 раза.
Исходные данные
Заказчик проекта специализируется на разработке автоматизированных решений в сфере туризма — он предоставляет сервисы для других компаний по внутренним перелетам. К нему обращаются клиенты из разных стран: России, Казахстана, Грузии и Армении.
Компания хотела автоматизировать тестирование, чтобы снизить затраты на ресурсы для ручного тестирования. Перед командой «Перфоманс Лаб» стояла задача автоматизировать список тест-кейсов на 11 платформах: одна платформа = один конкретный заказчик.
Как следствие — глобальной целью «Перфоманс Лаб» стало создать удобную и технологичную инфраструктуру для автоматизации тестирования продукта.
В качестве фундаментального решения мы решили внедрить платформу Allure TestOps, которая одновременно сочетает в себе функции:
- системы управления тестированием;
- системы для запуска автотестов и построения отчетности.
Гибкое решение для единообразия платформ
Мы актуализировали ручные тесты для дальнейшей автоматизации, настроили CI-инструмент и развернули Allure TestOps.
На первом этапе мы решили автоматизировать 70 тестов, которые нужно было выполнить на 11 сайтах-платформах. Проект был рассчитан для Web UI.
Мы спланировали архитектуру так, чтобы автоматизация была одинаковой на всех 11 платформах. Согласно изначальному техническому заданию, сами платформы отличались лишь визуально — однако что-то пошло не так. По ходу написания утилитарного функционала и реализации некоторых кейсов на разных платформах мы выявили различия в функционале и верстке.
«Допустим, мы идем по тест-кейсу: выбираем рейс, потом место, потом обед. На разных платформах этот порядок менялся — сначала обед, потом распределение мест. Пришлось писать код, который бы работал везде. Нас выручили паттерны программирования».
Младший специалист по обеспечению качества
Наша команда решила взять одну платформу за эталонную, а остальные адаптировать под нее. Специалистам удалось спроектировать реализацию таким образом, чтобы не дублировать код и не переписывать тесты для всех платформ. Название платформы использовалось как параметр — и тест выполнял шаги именно для нее.
Особенности автоматизации тест-кейсов
Мы также столкнулись с рядом нюансов при автоматизации конкретных тест-кейсов. Например, в некоторых из них нужно было учитывать работу с почтой, а у заказчика не было готового шаблона. Мы самостоятельно регистрировали тестовые аккаунты и интегрировали тестовый проект с Google API для получения списка почтовых сообщений. При этом выяснилось, что Google ставит определенные условия, в тот момент невозможные для заказчика. В итоге мы использовали «Яндекс» и Mail.Ru с открытыми API.
В паре кейсов мы также обнаружили другую проблему со ссылкой, с помощью которой формируется готовый заказ. На некоторых платформах эта ссылка не создавалась. Поговорив с заказчиком, мы выяснили, что сайты еще находятся в доработке, — поэтому нам пришлось вносить изменения в последний момент.
А в последнюю неделю заказчик внезапно внес изменения в проект, из-за чего треть тестов «отвалилась» — но мы успели всё исправить в срок.
По итогу мы получили возможность подключать остальные платформы с минимальным написанием кода. А платформы, которые отличались от эталонной, изменялись только в тех шагах, где это было необходимо. Ранее при каких-либо изменениях в функциональности тесты падали — но теперь их стало легко актуализировать.
Внедрение CI/CD для тестирования
Следующим этапом стало подключение реализованного проекта к CI/CD для тестирования Web UI. Так как сотрудника в должности DevOps у заказчика не было, команде «Перфоманс Лаб» пришлось самостоятельно настраивать все интеграции (GitLab, TestOps), а также всю инфраструктуру для успешной автоматизации запуска тестов.
Благодаря этому у заказчика появилась возможность запускать автотесты в любой момент из TestOps по группам, по выбранным кейсам — и запуск осуществляется за счет определенных триггеров.
Итоги
Если в начале проекта было написано много лишнего кода, который дублировался от платформы к платформе, то к финалу мы убрали дубли и сделали проект гибким, упростив добавление новых платформ и поддержание изменений в функциональности.
Теперь любую новую платформу клиент может автоматизировать благодаря предложенному нами сценарию — и встроить пайплайн в CI/CD: минимум действий для максимального результата.
А главное, мы справились с задачей в самые короткие сроки, успев к дедлайну — несмотря на то, что из-за сложностей со стороны заказчика работа оказалась объемнее заявленной в несколько раз.
Заказчик, довольный результатами, вскоре снова обратился к нам, чтобы сделать работу тест-кейсов многопоточной, запараллелить 140 тест-кейсов. Мы помогли и с этим: настроили как сами кейсы, так и отчеты по их прохождению. Запуск в параллельном режиме позволил сократить время проведения тестов в 4 раза.
В финале, чтобы итог нашей работы оказался еще эффективнее, мы предложили заказчику еще одно решение — использовать заглушки для части тестов.
«Для этого мы обратились к WireMock. После настройки запросов, ответов, режимов заказчик не просто понял, насколько это облегчает проведение регресса приложения, но и увидел это на деле — в связи с чем был очень доволен».
Тест-менеджер
Как итог — мы предоставили клиенту надежный проект автоматизации тестирования: компания получила актуальную тестовую модель, которая позволяет ей сократить TTM и повысить качество разрабатываемого продукта.