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

Ответ

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

Критерий Исследовательское тестирование Интуитивное тестирование (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.

Ответ 18+ 🔞

А, слушай, вот тебе наглядная разница, как между походом в музей с экскурсоводом и как просто забежать в подворотню посмотреть на граффити.

Смотри, оба подхода — они без этих ваших заранее заскриптованных тест-кейсов, как будто инструкцию к микроволновке читать. Но разница-то, блядь, в подходе — как между шахматами и игрой в «точку».

Исследовательское тестирование — это когда ты, сука, как учёный-полевик. У тебя есть план местности (хартия), бинокль (техники тест-дизайна) и блокнот для записей. Ты идёшь системно: «Так, сегодня исследую болото обработки ошибок, а завтра — дремучий лес авторизации». Всё фиксируешь, воспроизвести можно. Цель — не просто баг найти, а понять, как эта чёртова система дышит и где у неё спрятаны скелеты в шкафу.

Интуитивное тестирование (Ad-hoc) — это когда ты просто идёшь по продукту и тебе в голову стучит: «А что, блядь, будет, если я сюда впихну минус три тысячи, а потом нажму „сохранить“ и выдерну шнур из розетки?». И ты это делаешь! Сразу! Без плана, без документации. Нашёл баг — охуенно. Не нашёл — ну и хуй с ним, пошёл дальше. Воспроизвести это потом — это уже как вспомнить, что ты вчера блевал после пятой рюмки. Сложновато.

Вот, глянь таблицу, там всё разложено, как по полочкам:

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

А теперь, блядь, на живом коде:

# Пример исследовательского тестирования: целенаправленная проверка границ и состояний.
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 — это быстрая, неформальная проверка, как ткнуть палкой в неизвестную кучу, чтобы посмотреть, что там. В нормальном процессе они друг друга дополняют: одно даёт глубину и понимание, а второе — скорость и нестандартные находки. Без обоих — пиши пропало.