Что такое тестовый оракул (Test Oracle)?

«Что такое тестовый оракул (Test Oracle)?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Тестовый оракул — это источник истины или механизм, который определяет, является ли результат выполнения теста правильным. Это критерий для проверки соответствия фактического результата работы системы ожидаемому.

Пример простого оракула в коде:

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}"

Типы тестовых оракулов:

  1. Спецификация/Документация: Формальные требования.
  2. Эталонная система (Reference Implementation): Рабочая старая версия или эталонный алгоритм.
  3. Эвристики и инварианты: Логические правила (например, «баланс счета не может быть отрицательным», «дата окончания позже даты начала»).
  4. Статистические данные или исторические результаты.
  5. Оракул, созданный человеком: Экспертная оценка для сложных выводов (например, качество изображения).

Проблема оракула: Часто является самой сложной частью тестирования. Оракул может быть:

  • Отсутствующим (нет четких критериев).
  • Неточным (основан на допущениях).
  • Непрактичным (слишком дорогой для вычисления).