Что такое исследовательское тестирование?
Исследовательское тестирование (exploratory testing) — подход, при котором тестировщик одновременно изучает систему, проектирует тесты и выполняет их — всё в едином непрерывном когнитивном процессе. Подход был формализован Джеймсом Бахом и Кемом Кейнером:
«Одновременное обучение, проектирование тестов и их выполнение.»
В отличие от скриптового тестирования, где сначала пишутся все тест-кейсы, а затем выполняются пошагово, исследовательское тестирование адаптируется в реальном времени. То, что вы обнаружили в одном тесте, влияет на то, что вы будете тестировать дальше.
Мышление исследователя
Исследовательский тестировщик подобен детективу. Вы начинаете с гипотезы («эта форма входа может быть уязвима к инъекции»), исследуете её, обнаруживаете новые зацепки («сообщение об ошибке раскрывает тип базы данных») и следуете за ними. Каждая находка определяет следующий шаг.
Это требует:
- Любознательности — Постоянно спрашивать «а что если…?»
- Критического мышления — Ставить под сомнение предположения
- Знания предметной области — Понимать, что система должна делать
- Технической осведомлённости — Знать типичные паттерны сбоев
Процесс исследовательского тестирования
Тест-чартеры
Тест-чартер — краткая формулировка миссии, направляющая исследовательскую сессию.
Формат:
Исследовать [цель] с помощью [ресурсы/техники] чтобы обнаружить [информация/риски]
Примеры:
Исследовать процесс оформления заказа с помощью граничных значений и невалидных банковских карт чтобы обнаружить сбои обработки платежей и пробелы в обработке ошибок.
Исследовать функцию поиска с помощью спецсимволов, длинных строк и пустых запросов чтобы обнаружить проблемы валидации ввода и сценарии краша.
Критерии качества чартера
Хороший чартер:
- Сфокусирован — достаточно узок для завершения за 60-90 минут
- Тестируем — определяет, что вы ищете
- Основан на рисках — нацелен на области с наибольшей вероятностью и влиянием багов
- Гибок — оставляет пространство для открытий и отклонений
Touring Heuristics
Touring heuristics, разработанные Джеймсом Уиттакером, предоставляют структурированные подходы к исследованию ПО:
Тур по руководству. Следуйте документации шаг за шагом. Работают ли описанные функции как задокументировано?
Денежный тур. Тестируйте функции, за которые клиенты платят — основную ценность. Для e-commerce: просмотр, поиск, корзина, оформление.
Тур по достопримечательностям. Определите ключевые экраны и навигируйте между ними в разном порядке. Корректно ли система сохраняет состояние?
Антисоциальный тур. Делайте всё, что приложение не хочет. Невалидные данные, пропуск обязательных шагов, кнопка «назад» в критические моменты.
Тур в дождливый день. Начинайте операции и отменяйте их. Что будет при отмене загрузки на 50%? Закрытии браузера во время checkout?
Обсессивно-компульсивный тур. Повторяйте одно действие многократно. Отправьте форму 100 раз. Быстро нажимайте «сохранить». Это выявляет race conditions и утечки ресурсов.
Когда использовать исследовательское тестирование
Наиболее ценно, когда:
- Появляется новая функция с минимальными спецификациями
- Время ограничено и нужен максимум покрытия быстро
- Нужно найти баги, которые скрипты пропускают — особенно UX и edge cases
- Система сложная и невозможно предсказать все сценарии
- После автоматизации — исследование находит неожиданное
- Области риска требуют целенаправленного изучения
Исследовательское vs. Ad Hoc
| Аспект | Исследовательское | Ad Hoc |
|---|---|---|
| Структура | Чартеры, тайм-боксы, заметки | Без структуры |
| Планирование | Сессия с чартером | Не планируется |
| Документация | Заметки сессии, баг-репорты | Обычно нет |
| Прослеживаемость | Через листы сессий | Не прослеживается |
| Требуемый навык | Высокий | Любой уровень |
| Повторяемость | Частичная (через заметки) | Не повторяемо |
Упражнение: Напишите тест-чартеры и проведите исследование
Часть 1: Вы тестируете мобильное приложение доставки еды. Напишите 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 тестирование
- Наиболее ценно для новых функций, зон риска, ограниченного времени и поиска багов, которые скрипты пропускают
- Лучшие стратегии сочетают скриптовое тестирование для известных сценариев с исследовательским для неизвестного