Чем исследовательское тестирование отличается от интуитивного (ad-hoc)?

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

Ответ

Оба подхода не основаны на заранее написанных тест-кейсах, но различаются степенью структурированности и воспроизводимости.

Критерий Исследовательское тестирование Интуитивное тестирование (Ad-hoc)
Подход Систематический и структурированный. Спонтанный и неформальный.
План Есть сессии/хартии с целями и областями. Нет плана, действия основаны на сиюминутной догадке.
Документация Результаты сессии фиксируются (найденные баги, гипотезы, покрытие). Результаты часто не документируются.
Воспроизводимость Высокая, так как шаги и логика могут быть восстановлены из отчёта. Низкая, так как тест сложно повторить в точности.
Цель Изучение системы, анализ поведения, поиск неизвестных рисков. Быстрая проверка конкретной догадки или сценария.
Основа Основано на анализе продукта, техник тест-дизайна и опыте. Основано почти исключительно на интуиции и опыте тестировщика.

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

# Пример исследовательского тестирования: целенаправленная проверка границ и состояний.
def exploratory_test_calculator():
    calc = Calculator()
    # Хартия: "Исследовать поведение функции деления"
    # Гипотеза 1: Деление на ноль вызывает определённое исключение.
    try:
        calc.divide(10, 0)
        log_failure("Деление на 0 не вызвало исключения")
    except ZeroDivisionError:
        log_success("Исключение перехвачено корректно")
    # Гипотеза 2: Функция корректно работает с большими числами.
    result = calc.divide(1e100, 2)
    assert result == 5e99, f"Ошибка с большими числами: {result}"
    # Результаты сессии документируются.

# Интуитивное тестирование: "А что если ввести символы вместо чисел?"
# Тестировщик сразу вводит "abc" в поле ввода и смотрит, упадёт ли приложение.
# Шаги могут не фиксироваться.

Вывод: Исследовательское тестирование — это управляемый процесс обучения о продукте, в то время как ad-hoc — это быстрая, неформальная проверка идеи. Они часто дополняют друг друга в рамках общего процесса QA.