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