Системы управления качеством программного обеспечения
Качество ПО — способность системы удовлетворять явные требования и реальные потребности в заданных условиях. Его нельзя добавить одной фазой тестирования.
Три уровня
Планирование качества определяет характеристики и критерии: корректность, надёжность, производительность, безопасность, сопровождаемость.
Обеспечение качества выстраивает процесс, который предупреждает дефекты: review, автоматические проверки, управление требованиями, воспроизводимая сборка.
Контроль качества проверяет конкретный результат: тесты, анализ, испытания и приёмка.
Контур качества
flowchart LR A["Требования"] --> B["Разработка"] B --> C["Автоматические проверки"] C --> D["Релиз"] D --> E["Наблюдение в эксплуатации"] E --> A
Эксплуатационные сигналы должны менять тесты и требования. Иначе команда исправляет отдельный инцидент, но не систему качества.
Защитные слои
- типы, статический анализ и форматирование;
- unit-тесты бизнес-правил;
- интеграционные тесты границ;
- контрактные тесты интеграций;
- end-to-end проверка ключевого пути;
- нагрузочные и отказоустойчивые испытания;
- code review;
- постепенный выпуск и автоматический rollback;
- метрики, логи и трассировки.
Чем позже найден дефект, тем больше контекста и участников требуется для исправления.
Метрики без самообмана
Полезно наблюдать:
- долю изменений с отказом;
- время восстановления;
- дефекты, дошедшие до эксплуатации;
- нестабильность тестов;
- возраст открытых критичных дефектов;
- выполнение SLO.
Количество тестов и процент покрытия не измеряют качество напрямую. Метрика становится опасной целью, если её можно улучшить без улучшения продукта.
Разбор дефекта
После исправления спрашиваю:
- какое ожидание нарушено;
- почему существующий слой защиты не поймал ошибку;
- какой минимальный новый контроль предотвращает класс ошибок;
- не создаёт ли контроль чрезмерную стоимость.
Связано: Понятие жизненного цикла информационной системы, Обеспечение надежности процессов обработки данных.
Самопроверка
- Чем обеспечение качества отличается от контроля?
- Почему 100% coverage не гарантирует корректность?
- Как инцидент должен изменить систему качества?