En

JazzTeam Software Development Company

Agile Java Development

Консультирование по развитию наукоёмкого продукта и выстраивание процесса обеспечения качества

Заказчик

Продуктовая ИТ-компания, резидент Сколково (Москва, РФ).

Продукт

Система моделирования поведения физического объекта в заданных условиях.

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

Сложнейший продукт с огромным количеством функционала не покрыт автотестами. Изменения в одном месте вызывают баги в других местах, что мешает наращивать новый функционал. Заказчик не может быть уверен в качестве каждой поставки по причине большого количества багов в продукте. Релизы осуществляются раз в год, с задержками до 4 месяцев. Редко обновляющийся продукт не всегда способен своевременно удовлетворить нужды конечных пользователей.

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

Продукт необходимо было как можно быстрее выпустить на рынок, поэтому в процессе его разработки не были применены многие важные практики и подходы, не приносящие проекту ценности в краткосрочной перспективе. Соответственно, не были внедрены принципы непрерывной интеграции и поставки (CI/CD).

Написание Unit-тестов было редкой практикой и применялось ситуативно: покрытие кода составляло около 18%, при внесении любых изменений в код возникало большое количество багов. Также не было и автоматизированного UI-тестирования, так как его внедрение было ещё более сложной и трудозатратной задачей, требующей применения отдельного фреймворка.

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

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

Консультирование по развитию наукоёмкого продукта и выстраивание процесса обеспечения качестваДиаграмма: Консультирование по развитию наукоёмкого продукта и выстраивание процесса обеспечения качества

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

  • Организационно-управленческий и технический консалтинг по улучшению и оптимизации процесса разработки продукта. В первую очередь, владелец компании-заказчика должен был реалистично увидеть ситуацию (нет работы с техническим долгом, невнедрённый CI/CD, отсутствие тест-менеджмента и автоматизированных тестов, и, как следствие, ценностного подхода в команде).
  • Постановка процессов. Привлечение менеджера нашей компании.
  • Управление командой заказчика. Ведение процессов на проекте по Scrum-методологии, постановка планирования итераций. Введение профессиональных подходов по использованию Jira.
  • Организация тест-менеджмента. Создание тест-планов для ручного и автоматизированного тестирования. Драйвинг команды по созданию автотестов.
  • Изменение мышления команды. Самоорганизация команды через ретроспективы, системная работа по преодолению выученной беспомощности. Внедрение лучших инженерных практик на ценностном уровне.
  • Постоянная работа с техническим долгом. Его устранение в течение каждой итерации должно стать нормой для всей команды.
  • Внедрение непрерывной интеграции и поставки (СI/CD) для снижения влияния человеческого фактора и улучшения процесса тестирования.
    • Введение практики обязательного написания Unit-тестов разработчиками. В Unit-тестировании применён подход Data Driven Testing, упрощающий ввод входных данных, что особенно важно для системы моделирования с большим количеством расчётных модулей.
    • Ежедневное UI-тестирование критических функций продукта в максимально приближённой к продакшену сборке (с наложенной программно-аппаратной защитой). Данный подход позволил нам изменять текущий код продукта с минимальными рисками пропуска регрессионных багов.

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

    • Благодаря проведённой комплексной работе заказчик смог выпускать новые версии продукта в 5 раз чаще, не опасаясь нестабильности сборок. Сейчас у продукта нет барьеров для дальнейшего наращивания функционала. Автоматизация позволяет делать релизы и поставку безопасно и эффективно.
    • Владелец компании-заказчика осознал важность самоорганизации команды, необходимости трансформации ценностей разработчиков, одобрил постоянную работу с техническим долгом, пришёл к решению инвестировать в CI/CD и стал постоянным драйвером создания новых автоматизированных UI-тестов. Мы смогли получить полную поддержку владельца продукта.
    • Благодаря внедрению CI/CD-культуры процесс создания дистрибутивов продукта стал быстрым и безопасным. Это позволило увеличить производительность команды по созданию нового функционала и наладить более частые релизы.
    • Организован процесс тестирования.
  • Выработан и внедрён системный подход к тестированию продукта (в том числе, профессиональный тест-менеджмент, тест-планы для ручного и автоматизированного тестирования), обеспечивающий уверенность заказчика в качестве каждой поставки.
  • В команде заказчика внедрена практика постоянного написания автотестов (Unit, DDT, UI) для реализации на деле практики непрерывной интеграции и проведения регрессионного тестирования.
  • Внедрение регулярного комплексного тестирования критических функций продукта в максимально-приближённой к продакшену сборке позволило выявлять дефекты ещё на стадии разработки.
  • В команде сформирован ценностный подход к процессу разработки. До нашего включения в проект главной целью команды было быстрое внедрение функционала, специалисты не задумывались о качестве и поддержке продукта. Уже через 3 месяца со старта сотрудничества команда разработки заказчика начала сокращать технический долг, использовать и накапливать лучшие инженерные практики, вести необходимую документацию, при этом увеличив скорость создания нового функционала. Улучшен психологический климат в команде, выросла мотивация к преодолению выученной беспомощности.
    • Внедрение Scrum-методологии и профессионального использования Jira ускорило процесс разработки и сделало его понятным, прозрачным и управляемым для заказчика.
    • Экономия бюджета за счёт удешевления сборки продукта. Автоматическая сборка значительно стабилизировала, упростила и ускорила процесс создания различных версий для поставки заказчикам. Это позволило высвободить дополнительное время для разработки, а также убрало зависимость от незаменимых ранее членов команды.

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

     

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

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