Что такое Exploratory Testing?qa-13

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

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

  1. Свободный, но структурированный подход:

    • Нет заранее написанных тест-кейсов
    • Но есть четкие цели и стратегии
  2. Ориентированность на открытия:

    • Выявление неочевидных дефектов
    • Обнаружение кейсов, не покрытых формальными тестами
  3. Зависимость от экспертизы тестировщика:

    • Требует глубокого понимания системы
    • Использует креативность и аналитическое мышление

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

Процесс состоит из 4 этапов:

  1. Изучение продукта/функционала
  2. Планирование тестовых идей
  3. Выполнение тестирования
  4. Документирование результатов
# Пример структуры сессии exploratory testing
exploratory_session = {
    "charter": "Проверить поведение корзины при нестабильном соединении",
    "timebox": "45 минут",
    "areas": ["Добавление товаров", "Обновление количества", "Оформление заказа"],
    "tools": ["Charles Proxy", "Network Throttling"],
    "found_issues": ["#1234", "#1235"]
}

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

✔ Выявляет неожиданные дефекты
✔ Эффективно на ранних этапах разработки
✔ Хорошо дополняет автоматизированное тестирование
✔ Позволяет быстро адаптироваться к изменениям

Недостатки

✖ Трудно воспроизвести некоторые дефекты
✖ Требует опытных тестировщиков
✖ Сложно измерить покрытие

Лучшие практики

  1. Сессионное тестирование:

    • Четкие временные рамки (30-90 минут)
    • Конкретные цели (test charter)
  2. Использование техник:

    • "Туры" (Guidebook tours)
    • "Персонажи" (User personas)
    • "Граничные значения на лету"
  3. Документирование:

    • Скриншоты и видео
    • Пошаговое описание критичных багов
// Пример чартера для сессии
public class ExploratoryCharter {
    String title = "Payment gateway error handling";
    String scope = "Failed transactions flow";
    String techniques = "Network disruption, invalid inputs";
    String duration = "60 minutes";
}

Отличие от scripted testing

Критерий Exploratory Testing Scripted Testing
Гибкость Высокая Низкая
Креативность Поощряется Ограничена
Документация После тестирования До тестирования
Покрытие Глубина Ширина

Резюмируем

Exploratory Testing — это мощный подход, который:

  1. Особенно эффективен для сложных и новых функциональностей
  2. Требует квалифицированных тестировщиков
  3. Дает уникальные результаты, недостижимые другими методами
  4. Лучше всего работает в комбинации с другими видами тестирования

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

  • Новые фичи без четких требований
  • Критичные компоненты системы
  • Подготовка к демо или релизу