Что такое исследовательское тестирование?

Исследовательское тестирование (exploratory testing) — подход, при котором тестировщик одновременно изучает систему, проектирует тесты и выполняет их — всё в едином непрерывном когнитивном процессе. Подход был формализован Джеймсом Бахом и Кемом Кейнером:

«Одновременное обучение, проектирование тестов и их выполнение.»

В отличие от скриптового тестирования, где сначала пишутся все тест-кейсы, а затем выполняются пошагово, исследовательское тестирование адаптируется в реальном времени. То, что вы обнаружили в одном тесте, влияет на то, что вы будете тестировать дальше.

Мышление исследователя

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

Это требует:

  • Любознательности — Постоянно спрашивать «а что если…?»
  • Критического мышления — Ставить под сомнение предположения
  • Знания предметной области — Понимать, что система должна делать
  • Технической осведомлённости — Знать типичные паттерны сбоев

Процесс исследовательского тестирования

graph TD C[Чартер: Определить миссию] --> L[Изучить: Понять функцию] L --> D[Спроектировать: Создать идеи тестов] D --> E[Выполнить: Запустить тесты] E --> O[Наблюдать: Зафиксировать поведение] O --> A{Аномалия?} A -->|Да| R[Отчёт: Задокументировать баг] A -->|Нет| N[Новый инсайт] R --> D N --> D D --> E style C fill:#60a5fa,color:#000 style A fill:#f97316,color:#000 style R fill:#ef4444,color:#fff

Тест-чартеры

Тест-чартер — краткая формулировка миссии, направляющая исследовательскую сессию.

Формат:

Исследовать [цель] с помощью [ресурсы/техники] чтобы обнаружить [информация/риски]

Примеры:

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

Исследовать функцию поиска с помощью спецсимволов, длинных строк и пустых запросов чтобы обнаружить проблемы валидации ввода и сценарии краша.

Критерии качества чартера

Хороший чартер:

  • Сфокусирован — достаточно узок для завершения за 60-90 минут
  • Тестируем — определяет, что вы ищете
  • Основан на рисках — нацелен на области с наибольшей вероятностью и влиянием багов
  • Гибок — оставляет пространство для открытий и отклонений

Touring Heuristics

Touring heuristics, разработанные Джеймсом Уиттакером, предоставляют структурированные подходы к исследованию ПО:

Тур по руководству. Следуйте документации шаг за шагом. Работают ли описанные функции как задокументировано?

Денежный тур. Тестируйте функции, за которые клиенты платят — основную ценность. Для e-commerce: просмотр, поиск, корзина, оформление.

Тур по достопримечательностям. Определите ключевые экраны и навигируйте между ними в разном порядке. Корректно ли система сохраняет состояние?

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

Тур в дождливый день. Начинайте операции и отменяйте их. Что будет при отмене загрузки на 50%? Закрытии браузера во время checkout?

Обсессивно-компульсивный тур. Повторяйте одно действие многократно. Отправьте форму 100 раз. Быстро нажимайте «сохранить». Это выявляет race conditions и утечки ресурсов.

Когда использовать исследовательское тестирование

Наиболее ценно, когда:

  • Появляется новая функция с минимальными спецификациями
  • Время ограничено и нужен максимум покрытия быстро
  • Нужно найти баги, которые скрипты пропускают — особенно UX и edge cases
  • Система сложная и невозможно предсказать все сценарии
  • После автоматизации — исследование находит неожиданное
  • Области риска требуют целенаправленного изучения

Исследовательское vs. Ad Hoc

АспектИсследовательскоеAd Hoc
СтруктураЧартеры, тайм-боксы, заметкиБез структуры
ПланированиеСессия с чартеромНе планируется
ДокументацияЗаметки сессии, баг-репортыОбычно нет
ПрослеживаемостьЧерез листы сессийНе прослеживается
Требуемый навыкВысокийЛюбой уровень
ПовторяемостьЧастичная (через заметки)Не повторяемо

Упражнение: Напишите тест-чартеры и проведите исследование

Часть 1: Вы тестируете мобильное приложение доставки еды. Напишите 3 тест-чартера:

  1. Для процесса оформления заказа
  2. Для поведения при плохом сетевом соединении
  3. Для поиска и фильтрации ресторанов

Часть 2: Выберите один чартер и проведите 30-минутную сессию. Задокументируйте: чартер, длительность, исследованные области, найденные баги, непокрытые риски, % на чартер.

Часть 3: После сессии ответьте: Что вы обнаружили, что не нашли бы скриптами? Как изменился ваш путь исследования? Что бы вы исследовали в следующей сессии?

ПодсказкаДля чартеров будьте конкретны в техниках (граничные значения, прерывания, быстрые действия) и рисках (потеря данных, краши, неверные вычисления). Во время сессии следуйте за любопытством.
Решение

Часть 1: Примеры чартеров

Чартер 1 — Оформление заказа:

Исследовать процесс оформления с помощью граничных значений (минимальный заказ, максимум позиций), быстрого добавления/удаления и одновременных модификаций корзины чтобы обнаружить ошибки вычислений, race conditions и проблемы целостности данных.

Чартер 2 — Плохая сеть:

Исследовать поведение при деградированной сети с помощью переключения режима полёта, симуляции 2G и обрывов сети при оформлении и оплате чтобы обнаружить потерю данных, незавершённые транзакции, непонятные ошибки и пробелы восстановления.

Чартер 3 — Поиск:

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

Часть 2: Пример заметок сессии

ЧАРТЕР: Исследовать процесс оформления с граничными значениями
ДЛИТЕЛЬНОСТЬ: 30 минут

ИССЛЕДОВАННЫЕ ОБЛАСТИ:
- Добавление позиции с минимальной суммой
- Добавление 99 одинаковых позиций
- Быстрое добавление/удаление
- Применение и удаление промокодов при изменениях

НАЙДЕННЫЕ БАГИ:
- BUG-1 (Средний): Бейдж корзины показывает отрицательное число
  при быстром добавлении/удалении.
- BUG-2 (Высокий): При применении промокода и последующем удалении
  позиции, к которой он относился, скидка остаётся в итоговой сумме.
- BUG-3 (Низкий): Переключение с доставки на самовывоз не убирает
  стоимость доставки до обновления страницы.

НЕПОКРЫТЫЕ РИСКИ:
- Заказы из нескольких ресторанов
- Заказ с просроченным способом оплаты

% НА ЧАРТЕР: 70% по чартеру, 30% исследуя баг с промокодом

Часть 3: Баг с промокодом (BUG-2), скорее всего, не появился бы в скриптовых тест-кейсах, так как требует специфической последовательности действий. После его обнаружения я переключился с тестирования количеств на исследование взаимодействий промокодов — эта адаптивность является силой исследовательского тестирования.

Ключевые выводы

  • Исследовательское тестирование объединяет обучение, проектирование и выполнение в непрерывный когнитивный процесс
  • Тест-чартеры обеспечивают фокус без ограничения открытий
  • Touring heuristics предлагают структурированные подходы к систематическому исследованию
  • Это профессиональная дисциплина — не случайное и не ad hoc тестирование
  • Наиболее ценно для новых функций, зон риска, ограниченного времени и поиска багов, которые скрипты пропускают
  • Лучшие стратегии сочетают скриптовое тестирование для известных сценариев с исследовательским для неизвестного