Что такое критерии завершения тестирования (Test Exit Criteria)?

Ответ

Test Exit Criteria — это заранее определённый набор измеримых условий, которые должны быть выполнены для принятия решения о завершении тестирования и готовности продукта к выпуску.

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

Типичные примеры критериев:

  • Качество дефектов: Все дефекты с критическим и высоким приоритетом исправлены и перепроверены.
  • Покрытие: Достигнут целевой уровень покрытия кода (code coverage) или требований (requirements coverage), например, 90%.
  • Выполнение тестов: Успешно выполнены все запланированные тестовые сценарии, включая smoke, регрессионные и acceptance-тесты.
  • Производительность: Ключевые метрики производительности (время отклика, пропускная способность) соответствуют SLA.
  • Стабильность: Приложение работает стабильно в течение определённого времени (например, 48 часов) без критических сбоев.

Пример проверки на Python:

def is_testing_complete(critical_bugs_fixed, test_coverage_percent, all_tests_passed):
    """Функция проверки критериев выхода."""
    exit_criteria_met = (
        critical_bugs_fixed == 100 and  # 100% критических багов исправлено
        test_coverage_percent >= 90 and  # Покрытие >= 90%
        all_tests_passed == True         # Все тесты пройдены
    )
    return exit_criteria_met

# Использование
if is_testing_complete(100, 92, True):
    print("Критерии завершения тестирования выполнены. Можно готовить релиз.")
else:
    print("Тестирование необходимо продолжить.")

Критерии обычно определяются на этапе планирования тестирования (Test Plan) и согласуются со всеми заинтересованными сторонами.

Ответ 18+ 🔞

Да ты послушай, что эти умники придумали, чтобы тебя не наебали с релизом! Test Exit Criteria, блядь. Это не когда тебе надоело или глаз дергаться начал. Это четкий список, типа "вот когда всё это будет сделано — тогда и пиздуй на прод, а не раньше".

Зачем это надо, спросишь? А чтобы какой-нибудь менеджер-распиздяй не начал орать "Да хули вы там ковыряетесь, у нас сроки горят!", а ты мог ткнуть ему пальцем в бумажку и сказать: "Вот, сука, смотри: пункт три — не выполнен. Иди нахуй, будем доделывать". Объективность, мать её.

И что туда обычно пишут, эти ваши критерии? Да всё просто, как три копейки:

  • По багам: Все критические и высокие баги — не просто закрыты, а именно исправлены и проверены. Не "ну вроде пофиксили", а именно "перетестил — не воспроизводится, ебать колотить".
  • По покрытию: Достигли мы, допустим, этих ебучих 90% покрытия кода или требований. Не 89,5%, а ровно 90 или больше. Цифра, её не поспоришь.
  • По тестам: Все запланированные тесты — дымовые, регресс, приемочные — прошли. Не "ой, ну эти пять штук мы пропустим, они же мелочь", а ВСЕ, блядь.
  • По производительности: Сервис не падает под нагрузкой, как последняя шлюха, а откликается в рамках договоренностей. Циферки в отчёте должны быть зелененькие, а не красные.
  • По стабильности: Приложение не вылетало в говно, скажем, последние двое суток. Тишина, блядь, и благодать.

Вот, смотри, как это в коде выглядит, чтоб ты понимал масштаб:

def is_testing_complete(critical_bugs_fixed, test_coverage_percent, all_tests_passed):
    """Функция проверки критериев выхода."""
    exit_criteria_met = (
        critical_bugs_fixed == 100 and  # 100% критических багов исправлено
        test_coverage_percent >= 90 and  # Покрытие >= 90%
        all_tests_passed == True         # Все тесты пройдены
    )
    return exit_criteria_met

# Использование
if is_testing_complete(100, 92, True):
    print("Критерии завершения тестирования выполнены. Можно готовить релиз.")
else:
    print("Тестирование необходимо продолжить.")

Главное, ёпта, — договориться про эти критерии ЗАРАНЕЕ, ещё на этапе планирования, и чтобы все начальники и продукт-овнеры их подписали своей кровью. А то потом начнется: "А мы так не договаривались!", "А это не критично!". Нет, сучки, договаривались вот так. Теперь сиди и жди, пока все галочки не поставятся.