En

JazzTeam Software Development Company

Agile Java Development

Стабилизация продукта с помощью Data Driven Testing

Заказчик

Лидер европейского рынка в технологиях управления телекоммуникационными данными (Амстердам, Нидерланды).

Продукт

Система учёта и контроля расходов телекоммуникационных услуг. Представляет собой группу приложений: веб-приложение для конечных пользователей, веб-приложение для администрирования системы, server-side приложение для интеграции с другими системами.

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

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

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

Вся бизнес-логика приложения помещена в хранимые процедуры (PL/SQL), что значительно усложняет отладку и стоимость поддержки кода. Отсутствие Unit-тестов не позволяет оценивать воздействие изменений в хранимых процедурах на весь функционал приложения. Не внедрены принципы непрерывной интеграции и поставки (CI/CD), что не добавляет мотивации инвестировать в написание Unit-тестов. Сложнейшая структура базы данных и отсутствие доступа к продакшен-данным не позволяет разработчикам быстро воспроизвести баги с продакшена. Все данные факторы вместе приводят к нестабильности приложения, множеству проблем, которые сложно воспроизводить и устранять. Более того, устранение одного бага вызывает появление новых багов.

Стабилизация продукта с помощью Data Driven TestingДиаграмма: Стабилизация продукта с помощью Data Driven Testing

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

  • Ускорение воспроизводимости багов. Применение специальных утилит, которые удаляют конфиденциальные данные пользователей (из-за GDPR мы не всегда имели доступ ко всем необходимым данным). Как результат, для воспроизведения багов мы смогли использовать продакшен-данные с полным соблюдением GDPR.
  • Внедрение непрерывной интеграции и поставки (CI/CD) с применением сервера автоматизации Jenkins, что является первым шагом к системному написанию Unit-тестов. При наличии достаточного покрытия Unit-тесты позволяют стабилизировать приложение и обеспечить регрессионное тестирование.
  • Покрытие Data Driven тестами (DDT) любых изменений кода. Уже на начальном этапе написания таких тестов мы убедились, что они помогают нам стабилизировать продукт, направляя наши усилия в нужную сторону: при правильном и безопасном фиксе новых багов предыдущие тесты проходили успешно. Таким образом, мы увеличили контроль над стабильностью приложения и сделали устранение ошибок быстрым и эффективным. Отдельным технологическим вызовом была организация использования различных версий баз данных в качестве эталонных значений для DDT, что позволило быстро добавлять наборы тестовых данных.
  • Последним этапом был переход на раннее обнаружение ошибок, до выхода изменений в продакшен. Для этого мы наращивали количество DDT тестов и наборов тестовых данных, в том числе, создавая тесты для каждого бага продукта. Тем самым увеличивая покрытие тестами системы и обеспечивая автоматизированное регрессионное тестирование.

Результаты и достижения

  • Организован тест-менеджмент, создана тестовая документация и система отчётности. Это позволило решать вызовы проекта системно и комплексно.
  • Внедрена непрерывная интеграция и поставка (CI/CD), что позволило выявлять ошибки в продукте на этапе разработки.
  • Контроль над стабильностью продукта. Внедрение Data Driven тестирования стабилизировало процесс разработки и поддержки live-систем заказчика. Безопасное исправление багов позволило минимизировать риски возникновения новых багов в продакшене, стабилизировать работу продукта и удешевить стоимость создания тестов.
  • Благодаря системному покрытию кода Unit-тестами организована устойчивая регрессия багов.
  • Учтены вопросы защиты хранения данных. Применены специальные утилиты, позволяющие заменять реальные данные на тестовые, благодаря чему заказчику не пришлось раскрывать конфиденциальные данные пользователей третьей стороне. При этом значительно ускорилось устранение проблем в продакшене.
  • Частью поставки на данном проекте со стороны JazzTeam была передача поддержки и сопровождения внедрённых подходов команде заказчика. Созданы необходимые документы с техническими мануалами, диаграммами, описанием работы приложений (мануал по установке, учебные видео и аудиоматериалы для быстрого погружения новых сотрудников в проект). В дальнейшем команда заказчика смогла самостоятельно развивать и поддерживать автотесты.

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

 

ЗАИНТЕРЕСОВАНЫ В СОТРУДНИЧЕСТВЕ?

СВЯЖИТЕСЬ С НАМИ