Набор тестов уже покрывает классы эквивалентности, но дефекты всё равно находят пользователи. Как применить метод ошибочного угадывания, чтобы целенаправленно расширить ручную проверку?
Метод ошибочного угадывания применяют как целенаправленный поиск проверок на основе типичных ошибок людей, истории дефектов, особенностей продукта и известных слабых мест реализации. Он должен дополнять классы эквивалентности, а не заменять их: формальные техники обеспечивают систематическое покрытие, а ошибочное угадывание помогает находить дефекты, не выделенные в требованиях.
Сначала формируют список вероятных ошибок, затем превращают каждую гипотезу в конкретную проверку с ожидаемым результатом. После выполнения результаты и найденные дефекты сохраняют, чтобы повторно использовать знания в регрессии и будущих тестах.
Формальные техники тест-дизайна появились как способ уменьшить произвольность выбора тестов и получить обоснованное покрытие пространства входных данных. Однако они опираются на известные требования и структуру условий, поэтому не гарантируют обнаружение ошибок, которые в этих моделях не представлены.
Метод ошибочного угадывания возник как практическое дополнение к таким техникам. Он использует опыт тестировщика: знание типичных ошибок разработки, прошлых дефектов, особенностей пользовательского поведения и конкретного продукта.
Покрытие классов эквивалентности означает, что представители выделенных групп входных данных проверены. Но сами классы могут не отражать неверный порядок действий, потерю состояния, повторную отправку, неожиданный формат данных или ошибку восстановления после сбоя.
Если ограничиться только формальным набором, команда рискует получить хорошее измеримое покрытие, но пропустить реальные пользовательские сценарии отказа. Если же проверять всё подряд по интуиции, тестирование становится хаотичным, а его полноту и приоритеты трудно объяснить.
Для применения метода полезно последовательно выполнить четыре шага:
Хорошая гипотеза основана не на абстрактном желании «проверить всё», а на конкретном механизме возможного отказа. Например, вместо проверки «ввести плохие данные» формулируют отдельные случаи: вставить пробелы в начало и конец, отправить повторно уже обработанную форму, прервать действие в момент загрузки.
Ограничение метода — субъективность. Разные тестировщики могут предложить разные гипотезы, а отсутствие найденного дефекта не доказывает отсутствие риска. Поэтому полезно фиксировать происхождение проверки и периодически анализировать, какие гипотезы действительно находят дефекты.
Компромисс заключается между широтой исследования и стоимостью выполнения. Необязательно добавлять в регрессионный набор каждую спонтанную проверку: устойчивые и ценные проверки формализуют, а маловероятные или одноразовые оставляют в исследовательской сессии.
В интернет-магазине формальные тесты проверяли корректные, просроченные и неизвестные промокоды. Пользователи сообщили, что иногда скидка применялась дважды, хотя каждый отдельный тест проходил успешно.
Рассмотрели три варианта. Первый — добавить больше обычных значений промокода; это дёшево, но почти не затрагивает ошибки последовательности действий. Второй — полностью перебирать сочетания товаров, скидок и способов оплаты; покрытие шире, но стоимость быстро становится неоправданной. Третий — применить ошибочное угадывание к жизненному циклу операции: повторно отправить запрос, обновить страницу после применения скидки, открыть корзину в двух вкладках, прервать оплату и вернуться к заказу.
Выбрали третий вариант, потому что жалоба указывала на возможное нарушение состояния, а не на неверный класс входного значения. Проверки обнаружили, что повторное подтверждение корзины повторно уменьшало итоговую сумму без проверки уже применённой скидки. Исправление дополнили проверками повторного действия и восстановления состояния после обновления страницы; наиболее ценные из них включили в регрессионный набор.
Чем метод ошибочного угадывания отличается от случайного негативного тестирования?
Случайное негативное тестирование выбирает необычные входы без обязательной гипотезы о конкретной ошибке. Ошибочное угадывание начинается с предполагаемого механизма отказа и подбирает действие, способное его проявить. Поэтому результат метода можно объяснить, приоритизировать и при необходимости превратить в повторяемый тест.
Нужно ли добавлять в регрессию каждую проверку, выполненную методом ошибочного угадывания?
Нет. В регрессию обычно включают проверки, которые обнаружили значимый дефект, покрывают дорогой для повторения риск или защищают критичный бизнес-сценарий. Остальные проверки могут остаться частью исследовательского подхода, иначе регрессионный набор разрастётся и потеряет управляемость.
Что делать, если гипотеза не подтверждается несколькими попытками?
Сначала проверяют корректность исходного состояния, данных и наблюдаемого ожидаемого результата. Если гипотеза обоснована, но дефект не проявился, её не следует автоматически считать бесполезной: можно сохранить риск как заметку для будущих изменений или наблюдения. Однако без воспроизводимого нарушения её не следует регистрировать как подтверждённый дефект; приоритизацию такой проверки пересматривают с учётом вероятности и ущерба.