Что такое Exploratory Testing?

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

Ключевые характеристики:

  • Одновременные активности: Обучение, проектирование и выполнение тестов происходят одновременно
  • Исследование без скриптов: Нет предопределенных пошаговых тестовых случаев
  • Управляется тестировщиком: Использует навыки, опыт и креативность тестировщика
  • Адаптивное: Тестирование адаптируется на основе открытий и инсайтов
  • Зависит от контекста: Фокусируется на областях наивысшей ценности или риска

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

Exploratory vs Scripted Testing

АспектExploratory TestingScripted Testing
Проектирование тестовВо время выполненияПеред выполнением
ДокументацияЛегкие заметки, отчеты сессийДетальные тестовые случаи заранее
ГибкостьВысокая - адаптируется к открытиямНизкая - следует предопределенным шагам
ОбучениеНепрерывное во время тестированияВ основном во время фазы проектирования
Лучше всего дляНахождение неожиданных проблем, граничных случаевРегрессия, соответствие, повторяемость
ПокрытиеРуководствуется риском и интуициейСистематическое и измеримое
Время для началаНемедленноеТребует времени на подготовку

Важно: Исследовательское и скриптовое тестирование — это комплементарные, а не конкурирующие подходы. Зрелые стратегии тестирования используют оба.

Почему важно исследовательское тестирование

Преимущества

  1. Обнаруживает неожиданные дефекты: Находит проблемы, которые скриптовые тесты пропускают
  2. Быстрая обратная связь: Может начаться немедленно без обширной подготовки
  3. Адаптируется к изменениям: Гибкий подход, идеальный для agile-окружений
  4. Использует экспертизу: Задействует знания и интуицию тестировщика
  5. Тестирует с перспективы пользователя: Имитирует реальное исследование пользователя
  6. Исследует сложные сценарии: Исследует взаимодействия и рабочие процессы
  7. Экономически эффективно: Нет накладных расходов на написание детальных тестовых случаев для одноразового тестирования

Ограничения

  • Менее повторяемо: Один и тот же тест может не выполняться идентично
  • Зависит от навыков тестировщика: Качество варьируется в зависимости от способностей тестировщика
  • Сложнее измерить покрытие: Нет предопределенного количества тестовых случаев
  • Проблемы с документацией: Требует дисциплины для документирования находок
  • Сложно делегировать: Нельзя легко передать другим

Когда использовать Exploratory Testing

Идеальные сценарии:

  • Новые функции: Понимание и тестирование незнакомой функциональности
  • Критические баги: Глубокое исследование проблем продакшена
  • Временные ограничения: Нужна быстрая обратная связь без подготовки тестовых случаев
  • Оценка юзабилити: Оценка пользовательского опыта и рабочих процессов
  • Сложные интеграции: Тестирование взаимодействий между компонентами
  • Дополнения к регрессии: Дополнение автоматизированной регрессии человеческим инсайтом
  • Фокус на рисках: Исследование областей высокого риска, выявленных в анализе рисков

Основные техники и подходы

1. Session-Based Test Management (SBTM)

SBTM обеспечивает структуру исследовательского тестирования через сессии с ограничением по времени и чартером.

Компоненты:

Test Charter: Заявление о миссии для тестовой сессии

Шаблон чартера:
ИССЛЕДОВАТЬ: [целевая область]
С: [ресурсы, инструменты]
ЧТОБЫ ОБНАРУЖИТЬ: [информацию, риски, дефекты]

Пример чартера:

ИССЛЕДОВАТЬ: Рабочий процесс обработки платежей
С: Тестовые аккаунты кредитных карт, инструмент throttling сети
ЧТОБЫ ОБНАРУЖИТЬ: Граничные случаи в сбоях платежей, обработку timeouts, сообщения об ошибках

Time-box: Фиксированная длительность (обычно 60-90 минут) для сфокусированного тестирования

Debriefing: Документация после сессии находок, вопросов, проблем

Пример отчета сессии:

## Отчет о сессии исследовательского тестирования

**Чартер**: Исследовать функциональность входа с различными комбинациями учетных данных для обнаружения граничных случаев аутентификации

**Тестировщик**: Сара Мартинес
**Дата**: 2025-10-02
**Длительность**: 90 минут

### Покрытые области:
- Комбинации валидных/невалидных имени пользователя и пароля
- Чувствительность пароля к регистру
- Специальные символы в учетных данных
- Блокировка аккаунта после неудачных попыток
- Поведение timeout сессии
- Функциональность "Remember Me"

### Найденные баги:
1. **[P2]** Блокировка аккаунта сохраняется даже после успешного сброса пароля
2. **[P3]** Сообщение об ошибке раскрывает, существует ли имя пользователя (проблема безопасности)
3. **[P4]** "Remember Me" не сохраняется при перезапуске браузера

### Поднятые вопросы:
- Какова предполагаемая длительность блокировки аккаунта? (спецификация неясна)
- Должна ли CAPTCHA активироваться после N неудачных попыток?

### Покрытие тестирования: 85% целей чартера
### Сгенерированные новые тестовые идеи:
- Тестировать одновременные попытки входа с нескольких устройств
- Исследовать сброс пароля с просроченными токенами

2. Тестирование на основе эвристик

Эвристики — это эмпирические правила, которые направляют исследование. Общие эвристики тестирования включают:

Эвристика CRUD

Тестировать операции Create (Создание), Read (Чтение), Update (Обновление), Delete (Удаление) для сущностей данных.

Пример: Тестирование системы управления постами блога

Создание:
- Создать пост с минимальными полями
- Создать со всеми заполненными полями
- Создать со специальными символами в заголовке
- Создать с очень длинным содержимым

Чтение:
- Просмотр собственных постов vs постов других
- Фильтр/поиск постов
- Пагинация с различными размерами страниц

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

Удаление:
- Удалить черновики vs опубликованные посты
- Удалить с прикрепленными комментариями
- Восстановить удаленные посты (если поддерживается)

Тестирование границ

Исследовать лимиты и границы:

  • Минимальные/максимальные значения
  • Пустые/null входные данные
  • Очень большие входные данные (переполнение)
  • Отрицательные числа там, где ожидаются положительные

Принцип Златовласки

Тестировать с входными данными, которые “слишком малы,” “слишком велики,” и “в самый раз”

Эвристика согласованности

Искать несогласованности:

  • Поведение элементов UI на разных экранах
  • Правила валидации полей в похожих формах
  • Терминология, используемая в разных частях приложения

SFDIPOT (San Francisco Depot)

Триггеры исследования:

  • Structure (Структура): Архитектура, компоненты, интеграции
  • Function (Функция): Возможности и способности
  • Data (Данные): Ввод/вывод, форматы, валидация
  • Interfaces (Интерфейсы): API, UI, точки интеграции
  • Platform (Платформа): Вариации ОС, браузера, устройства
  • Operations (Операции): Рабочие процессы, пользовательские пути
  • Time (Время): Таймауты, планирование, часовые пояса

3. Туры по приложению

“Testing Tours” Джеймса Уиттакера предоставляют фреймворки для исследования:

The Guidebook Tour

Следовать пользовательской документации/руководствам помощи и проверять точность.

The Money Tour

Тестировать функции, которые генерируют доход или имеют высокую бизнес-ценность.

The Landmark Tour

Посещать ключевые функции, с которыми пользователи взаимодействуют чаще всего.

The Intellectual Tour

Тестировать самые сложные, технически challenging функции.

The FedEx Tour

Следить за данными через всю систему от начала до конца.

The Bad Neighborhood Tour

Исследовать области с известными проблемами или высокой плотностью дефектов.

The Saboteur Tour

Намеренно пытаться сломать приложение с невалидными входными данными.

Пример: Money Tour для E-commerce

1. Просмотр продуктов → Просмотр деталей продукта
2. Добавить в корзину → Изменить количество
3. Перейти к оформлению заказа → Ввести информацию о доставке
4. Ввести данные оплаты → Завершить покупку
5. Получить подтверждение → Проверить статус заказа

На каждом шаге исследовать вариации:

  • Разные типы продуктов
  • Несколько позиций в корзине
  • Различные способы оплаты
  • Промокоды
  • Гость vs зарегистрированный пользователь

Заключение

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

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

  • Исследовательское тестирование — это структурированное исследование, а не случайные клики
  • Используйте чартеры и time-box’ы для обеспечения фокуса и границ
  • Применяйте эвристики и туры для систематического руководства исследованием
  • Комбинируйте с автоматизацией для комплексного покрытия
  • Документируйте непрерывно для захвата ценных инсайтов
  • Измеряйте и улучшайте используя отчеты сессий и метрики

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