En

JazzTeam Software Development Company

Agile Java Development

Оптимизация процесса автоматизации тестирования c попутным внедрением CI/CD для продукта с нетривиальными сборкой и подходами к тестированию

Заказчик

Продуктовая IT-компания, США (Калифорния).

Продукт

Программное обеспечение для обработки интернет-трафика.

Бизнес-вызовы

Внедрённая ранее командой заказчика автоматизация тестирования не помогает стабилизировать работу динамично меняющегося, многокомпонентного веб-приложения и не даёт полной уверенности в качестве поставки новых версий, что приводит к снижению частоты релизов продукта.

Технологические особенности проекта

Автоматизация тестирования реализована командой заказчика, однако потенциал и ценность внедрённых автотестов не используется в полной мере. Созданные автотесты покрывают часть базового функционала приложения и запускаются нерегулярно, только 10% из них проходят успешно. Полный статус прохождения тестов непонятен: не сразу удаётся установить, какое падение тестов указывает на проблемы в работе приложения, а какое — на проблемы с окружением. Требуется слишком много времени на выявление причин непрохождения тестов. Запуск автотестов производится каждым специалистом вручную на отдельных серверах с разными конфигурациями.

Билд продукта занимал много времени и был завязан на одном человеке, вынужденном выполнять большое количество мануальных действий. Администрирование серверов и прохождение автоматизированных тестов было долгим и трудозатратным процессом, поэтому баги в приложении в основном выявлялись с помощью мануального тестирования, что сильно замедляло проверку качества продукта.

Оптимизация процесса автоматизации тестирования c попутным внедрением CI/CD для продукта с нетривиальными сборкой и подходами к тестированию

Диаграмма: Оптимизация процесса автоматизации тестирования c попутным внедрением CI/CD для продукта с нетривиальными сборкой и подходами к тестированию

Подходы и решения

  • Восстановление и оптимизация работы текущей системы автоматизированного тестирования.
  • Поиск и анализ причин возникновения багов.
  • Рефакторинг кода автотестов и расширение их системы логирования, улучшение обработки исключений.
  • Разделение тестов на группы для уменьшения зависимостей между результатами их прохождения, исключения дублирования кода.
    Всё это позволило обеспечить работоспособность автотестов, возможность их быстрого изменения и поддержки в актуальном состоянии.
  • Расширение инфраструктуры автоматической сборки, тестирования и поставки (CI/CD) версий приложения с использованием Jenkins.
  • Полная автоматизация процессов сборки продукта, создание окружения и установка компонентов для автоматической сборки приложения.
  • Сборка продукта осуществляется по триггеру после коммита и ежедневно по расписанию с уведомлением команды разработчиков о результатах по email, что позволяет сэкономить время на разработку продукта и исключить влияние человеческого фактора на процесс сборки.
  • Сервер создаётся из типового шаблона, продукт копируется и устанавливается на серверы автоматически, что позволяет упростить настройку окружения и минимизирует риск возникновения ошибок и проблем с окружением.
  • Улучшение процесса тестирования, дополнение и написание необходимой документации. Мы инициировали переход к более эффективному инструменту тест-менеджмента (с TestLink на Zephyr) для мониторинга большого количества тест-кейсов. Это позволило легко и быстро анализировать причины непрохождения тестов. Также были созданы инструкции и обучающие материалы для быстрого погружения новых специалистов в проект.
  • Покрытие автотестами всего важного функционала (как GUI, так и REST API) для минимизации рисков возникновения критических багов.
  • Результаты и достижения

    • Внедрение и улучшение процессов автоматизации сборки, тестирования и поставки продукта позволило наладить регулярность релизов и ускорить их выпуск.
    • Восстановлена работа и поддержка созданных командой заказчика автотестов. Весь важный функционал покрыт автотестами, автоматическая проверка качества продукта осуществляется ежедневно, что позволяет оперативно находить и исправлять баги в случае их возникновения и, как итог, обеспечивает уверенность в качестве поставляемых версий.
    • Внедрена непрерывная интеграция и поставка (CI/CD), установлено и настроено окружение для автоматизации сборки и тестирования приложения. Автоматизировано максимальное количество шагов при поставке продукта конечному пользователю, исключено влияние человеческого фактора и зависимость от одного члена команды. Автоматическая сборка осуществляется ежедневно по расписанию и по требованию, что позволяет значительно сэкономить время на разработку продукта (разработчики сразу же получают фидбэк по результату коммита).
    • Выстроен процесс тестирования, улучшена тестовая документация (отчёты стали более информативными и структурированными). Различные виды отчётов автоматически отправляются инженерам и менеджменту, все участники распределённой команды обладают актуальной информацией о состоянии продукта, его стабильности.

    Применённые технологии

     

    ПОДОБНАЯ ЗАДАЧА?

    СВЯЖИТЕСЬ С НАМИ ДЛЯ КОНСУЛЬТАЦИИ