Ответ
Оба подхода не основаны на заранее написанных тест-кейсах, но различаются степенью структурированности и воспроизводимости.
| Критерий | Исследовательское тестирование | Интуитивное тестирование (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.