Ответ
Тестовый оракул — это источник истины или механизм, который определяет, является ли результат выполнения теста правильным. Это критерий для проверки соответствия фактического результата работы системы ожидаемому.
Пример простого оракула в коде:
def add(a, b):
return a + b
# Оракул — наше знание, что 2 + 3 должно равняться 5
expected_result = 5
actual_result = add(2, 3)
assert actual_result == expected_result, f"Expected {expected_result}, got {actual_result}"
Типы тестовых оракулов:
- Спецификация/Документация: Формальные требования.
- Эталонная система (Reference Implementation): Рабочая старая версия или эталонный алгоритм.
- Эвристики и инварианты: Логические правила (например, «баланс счета не может быть отрицательным», «дата окончания позже даты начала»).
- Статистические данные или исторические результаты.
- Оракул, созданный человеком: Экспертная оценка для сложных выводов (например, качество изображения).
Проблема оракула: Часто является самой сложной частью тестирования. Оракул может быть:
- Отсутствующим (нет четких критериев).
- Неточным (основан на допущениях).
- Непрактичным (слишком дорогой для вычисления).