По каким критериям и метрикам можно оценить качество программного продукта?

«По каким критериям и метрикам можно оценить качество программного продукта?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Качество ПО — многогранная характеристика. Его оценка строится на совокупности критериев и количественных метрик.

Ключевые критерии качества (на основе стандарта ISO 25010):

Критерий Что оценивает Пример метрики
Функциональная пригодность Соответствие требованиям, полнота, правильность. % реализованных требований, количество блокирующих дефектов.
Производительность Скорость работы, время отклика, использование ресурсов. Время загрузки страницы (мс), пропускная способность (RPS).
Надежность Стабильность, доступность, отказоустойчивость. Время наработки на отказ (MTBF), процент доступности (uptime).
Удобство использования (Usability) Простота освоения, эффективность, удовлетворенность. Время выполнения задачи, оценка по шкале SUS (опрос).
Совместимость Работа в разных средах. % покрытия браузеров/устройств, успешность интеграций.
Безопасность Защищенность от угроз. Количество уязвимостей, результаты pentest-ов.
Сопровождаемость Простота анализа, изменения, тестирования. Цикломатическая сложность кода, покрытие тестами (%).

Практический пример расчета метрики:

# Расчет покрытия кода тестами (Test Coverage) — метрика сопровождаемости
def calculate_test_coverage(tested_lines: int, total_lines: int) -> float:
    """
    Возвращает процент покрытия кода тестами.
    """
    if total_lines == 0:
        return 0.0
    coverage_percentage = (tested_lines / total_lines) * 100
    return round(coverage_percentage, 2)

# Пример использования
print(f"Покрытие тестами: {calculate_test_coverage(850, 1000)}%")
# Вывод: Покрытие тестами: 85.0%

Важно: Не существует одной универсальной метрики. Качество оценивается по сбалансированной системе показателей (Scorecard), релевантных для конкретного продукта и этапа его жизненного цикла.