Автоматическая валидация

Тема дорожной карты · Software Architecture

Автоматическая валидация представляет собой процесс, при котором функции оценки качества (fitness-функции) запускаются автоматически на каждом push в систему контроля версий, а не только время от времени. Это позволяет оперативно выявлять проблемы и регрессии в архитектуре и производительности программного обеспечения. Такой подход обеспечивает быстрое обнаружение и устранение проблем, что значительно повышает качество продукта и уменьшает время реакции команды на возникающие проблемы.

Как это работает

Интеграция fitness-функций в различные стадии CI-пайплайна позволяет эффективно контролировать качество программного обеспечения. Pre-commit/PR: на этом этапе выполняются проверки стиля кода (lint-правила), проверки графа зависимостей и типовых проверок. Post-build: после сборки выполняются unit-тесты и интеграционные тесты, включая архитектурные утверждения. Pre-deploy: перед развертыванием проводятся smoke-тесты и проверки производительности. Post-deploy (production-мониторинг): после развертывания производится мониторинг реального времени с использованием целевых показателей уровня обслуживания (SLO), и при превышении пороговых значений генерируются уведомления.

Инструменты, такие как ArchUnit, предоставляют язык-специфичные проверки архитектуры, а пользовательские скрипты могут использоваться для выполнения дополнительных проверок.

Когда применять

Автоматизацию следует применять ко всем определённым функциям оценки качества. Единственным допустимым исключением являются метрики, которые имеют смысл только при реальной нагрузке в production-среде (например, 99-й процентиль задержки реального пользователя под реальным трафиком). Для таких метрик лучше использовать непрерывное мониторинговое окружение в production, а не выполнять их на каждом этапе CI-пайплайна.

Типичные ошибки

  1. Flaky-проверки: когда fitness-функции иногда проваливаются без явных причин, связанных с архитектурой. Это может привести к отключению таких проверок, что уменьшает ценность автоматической валидации. Для решения этой проблемы необходимо улучшить стабильность и надёжность проверок.
  2. Медленные проверки: если тесты fitness-функций занимают слишком много времени (например, 30 минут), это может замедлить процесс разработки и рецензирования кода. В таких случаях необходимо оптимизировать тесты или вынести их в отдельные запланированные запуски.
  3. Нет alerting на пробой порога: если функция оценки качества сообщает о нарушении, но человек не видит этого, это может привести к пропуску важных проблем. Для решения этой проблемы необходимо интегрировать функции оценки качества с системами уведомлений команды.

Связанные понятия

Полезные ресурсы