Какую технику тест-дизайна применяют, чтобы целенаправленно проверять вероятные ошибки вне явно заданных требований?
Это предугадывание ошибок (error guessing). Тестировщик использует сведения о типичных сбоях, особенностях реализации, прошлых дефектах и контексте продукта, чтобы дополнить формально выведенные проверки.
Подход появился как практический ответ на ограниченность только формальных техник тест-дизайна. Разбиение на классы эквивалентности, анализ границ и таблицы решений помогают системно выбирать проверки, но не гарантируют обнаружение ошибок, связанных с конкретной реализацией или опытом команды.
Предугадывание ошибок не заменяет систематические техники. Оно использует накопленные знания о том, где дефекты часто возникают: при пустых значениях, повторной отправке операции, потере соединения, неверном порядке действий или восстановлении после сбоя.
Требования могут описывать штатный сценарий, но не фиксировать все ошибочные ситуации. Если проверять только явно указанные варианты, можно пропустить проблемы с некорректным вводом, нарушением последовательности действий, повторными запросами или частично выполненными операциями.
У техники есть риск субъективности: разные тестировщики выберут разные проверки, а важные области могут остаться без внимания. Поэтому её результаты следует фиксировать и дополнять более воспроизводимыми техниками, а не использовать как единственное основание для оценки качества.
Тестировщик анализирует контекст продукта и формирует гипотезы о возможных ошибках. Источниками служат история дефектов, архитектура, известные слабые места компонентов, изменения в коде, особенности интеграций и наблюдения за поведением пользователей.
Например, для операции оплаты целесообразно предположить ошибки при повторной отправке запроса, разрыве соединения после списания денег, истечении сессии и получении неоднозначного ответа внешнего сервиса. Такие проверки не обязательно следуют непосредственно из одного требования, но основаны на рисках конкретного сценария.
Важна проверяемость результата. Для каждой гипотезы нужно описать условие, ожидаемое безопасное поведение и критерий фиксации дефекта. Приоритизацию обычно проводят по риску: сначала проверяют ошибки, которые вероятны и могут привести к существенным последствиям для пользователя или бизнеса.
Основное преимущество техники — способность находить дефекты, которые плохо покрываются формальными моделями. Ограничение — зависимость от опыта и неполная воспроизводимость набора проверок. Компромисс состоит в том, чтобы применять error guessing после базового покрытия требований и риск-ориентированного набора, документируя использованные гипотезы.
В интернет-магазине после подтверждения заказа пользователь иногда повторно нажимает кнопку из-за задержки ответа. Требование описывает успешное создание заказа, но не уточняет поведение повторного запроса.
Можно ограничиться проверкой обычного сценария, но это не выявит дублирование заказа. Можно применить только формальный анализ состояний, однако он потребует сначала явно зафиксировать все переходы и может не включить задержку ответа как источник риска.
Выбранное решение — добавить проверку по технике предугадывания ошибок: имитировать повторную отправку операции до получения ответа и проверить, создаётся ли один заказ, а повторный запрос получает безопасный результат. Такой выбор обоснован высокой стоимостью дублирования и типичностью проблемы для операций с побочным эффектом.
В результате тест обнаруживает повторное создание заказа. Исправление делают идемпотентным, а проверку сохраняют в регрессионном наборе, чтобы найденный риск не вернулся в следующих версиях.
1. Можно ли считать предугадывание ошибок полностью случайным набором проверок?
Нет. Хотя техника эвристическая, она должна опираться на явные основания: историю дефектов, риск, особенности архитектуры или типичные режимы отказа. Если тестировщик не может объяснить, какую гипотезу проверяет и почему она правдоподобна, это скорее случайный выбор, а не качественное применение техники.
2. Чем предугадывание ошибок отличается от негативного тестирования?
Негативное тестирование проверяет реакцию системы на некорректные или неожиданные входы и условия. Предугадывание ошибок шире: оно является способом выбрать проверки на основе предполагаемых мест возникновения дефектов. Негативный сценарий может быть результатом error guessing, но сама техника также может привести к проверке повторной операции, нарушения порядка действий или восстановления после сбоя.
3. Что делать, если найденная по этой технике проверка выявила дефект?
Нужно зарегистрировать дефект с воспроизводимыми условиями, оценить его серьёзность и приоритет, а после исправления сохранить проверку в подходящем регрессионном наборе. Если дефект указывает на системную проблему, полезно дополнить требования, модели состояний или формальные тесты, чтобы область риска больше не зависела только от индивидуального опыта тестировщика.