Консультирование по развитию наукоёмкого продукта и выстраивание процесса обеспечения качества
Заказчик
Продуктовая ИТ-компания, резидент Сколково (Москва, РФ).
Продукт
Система моделирования поведения физического объекта в заданных условиях.
Бизнес-вызовы
Сложнейший продукт с огромным количеством функционала не покрыт автотестами. Изменения в одном месте вызывают баги в других местах, что мешает наращивать новый функционал. Заказчик не может быть уверен в качестве каждой поставки по причине большого количества багов в продукте. Релизы осуществляются раз в год, с задержками до 4 месяцев. Редко обновляющийся продукт не всегда способен своевременно удовлетворить нужды конечных пользователей.
Технологические особенности проекта
Продукт необходимо было как можно быстрее выпустить на рынок, поэтому в процессе его разработки не были применены многие важные практики и подходы, не приносящие проекту ценности в краткосрочной перспективе. Соответственно, не были внедрены принципы непрерывной интеграции и поставки (CI/CD).
Написание Unit-тестов было редкой практикой и применялось ситуативно: покрытие кода составляло около 18%, при внесении любых изменений в код возникало большое количество багов. Также не было и автоматизированного UI-тестирования, так как его внедрение было ещё более сложной и трудозатратной задачей, требующей применения отдельного фреймворка.
Ручное тестирование осуществлялось не системно, регрессионное тестирование не проводилось, тест-менеджмент не организован, вследствие чего не выстроены необходимые процессы по контролю качества.
Продукт представляет собой десктопное решение, каждый дистрибутив которого уникален и поставляется под конкретное рабочее место заказчика. До нашего подключения к проекту каждая сборка создавалась вручную, что сильно замедляло поставку новых версий продукта.
Подходы и решения
- Организационно-управленческий и технический консалтинг по улучшению и оптимизации процесса разработки продукта. В первую очередь владелец компании-заказчика должен был реалистично увидеть ситуацию (нет работы с техническим долгом, не внедрённый CI/CD, отсутствие тест-менеджмента и автоматизированных тестов, и, как следствие, ценностного подхода в команде).
- Постановка процессов. Привлечение менеджера нашей компании.
- Введение практики обязательного написания Unit-тестов разработчиками. В Unit-тестировании применён подход Data Driven Testing, упрощающий ввод входных данных, что особенно важно для системы моделирования с большим количеством расчётных модулей.
- Ежедневное UI-тестирование критических функций продукта в максимально приближённой к продакшену сборке (с наложенной программно-аппаратной защитой). Данный подход позволил нам изменять текущий код продукта с минимальными рисками пропуска регрессионных багов.
Результаты и достижения
- Благодаря проведённой комплексной работе заказчик смог выпускать новые версии продукта в 5 раз чаще, не опасаясь нестабильности сборок. Сейчас у продукта нет барьеров для дальнейшего наращивания функционала. Автоматизация позволяет делать релизы и поставку безопасно и эффективно.
- Владелец компании-заказчика осознал важность самоорганизации команды, необходимости трансформации ценностей разработчиков, одобрил постоянную работу с техническим долгом, пришёл к решению инвестировать в CI/CD и стал постоянным драйвером создания новых автоматизированных UI-тестов. Мы смогли получить полную поддержку владельца продукта.
- Благодаря внедрению CI/CD-культуры процесс создания дистрибутивов продукта стал быстрым и безопасным. Это позволило увеличить производительность команды по созданию нового функционала и наладить более частые релизы.
- Организован процесс тестирования.
- Внедрение Scrum-методологии и профессионального использования Jira ускорило процесс разработки и сделало его понятным, прозрачным и управляемым для заказчика.
- Экономия бюджета за счёт удешевления сборки продукта. Автоматическая сборка значительно стабилизировала, упростила и ускорила процесс создания различных версий для поставки заказчикам. Это позволило высвободить дополнительное время для разработки, а также убрало зависимость от незаменимых ранее членов команды.
Применённые технологии

White

Jenkins

TestLink

Jira
СХОЖАЯ ЗАДАЧА?