Системы управления качеством программного обеспечения

Качество ПО — способность системы удовлетворять явные требования и реальные потребности в заданных условиях. Его нельзя добавить одной фазой тестирования.

Три уровня

Планирование качества определяет характеристики и критерии: корректность, надёжность, производительность, безопасность, сопровождаемость.

Обеспечение качества выстраивает процесс, который предупреждает дефекты: review, автоматические проверки, управление требованиями, воспроизводимая сборка.

Контроль качества проверяет конкретный результат: тесты, анализ, испытания и приёмка.

Контур качества

flowchart LR
    A["Требования"] --> B["Разработка"]
    B --> C["Автоматические проверки"]
    C --> D["Релиз"]
    D --> E["Наблюдение в эксплуатации"]
    E --> A

Эксплуатационные сигналы должны менять тесты и требования. Иначе команда исправляет отдельный инцидент, но не систему качества.

Защитные слои

  • типы, статический анализ и форматирование;
  • unit-тесты бизнес-правил;
  • интеграционные тесты границ;
  • контрактные тесты интеграций;
  • end-to-end проверка ключевого пути;
  • нагрузочные и отказоустойчивые испытания;
  • code review;
  • постепенный выпуск и автоматический rollback;
  • метрики, логи и трассировки.

Чем позже найден дефект, тем больше контекста и участников требуется для исправления.

Метрики без самообмана

Полезно наблюдать:

  • долю изменений с отказом;
  • время восстановления;
  • дефекты, дошедшие до эксплуатации;
  • нестабильность тестов;
  • возраст открытых критичных дефектов;
  • выполнение SLO.

Количество тестов и процент покрытия не измеряют качество напрямую. Метрика становится опасной целью, если её можно улучшить без улучшения продукта.

Разбор дефекта

После исправления спрашиваю:

  1. какое ожидание нарушено;
  2. почему существующий слой защиты не поймал ошибку;
  3. какой минимальный новый контроль предотвращает класс ошибок;
  4. не создаёт ли контроль чрезмерную стоимость.

Связано: Понятие жизненного цикла информационной системы, Обеспечение надежности процессов обработки данных.

Самопроверка

  • Чем обеспечение качества отличается от контроля?
  • Почему 100% coverage не гарантирует корректность?
  • Как инцидент должен изменить систему качества?