Продолжаем говорить о техниках тест-дизайна. Сегодня речь пойдет о технике предугадывания ошибок. Она подойдет в том случае, когда мы уже знакомы с продуктом и имеем определенный опыт в тестировании подобного функционала.
Суть техники в том, что чтобы найти все способы, которые могут сломать тестируемый продукт.
По традиции начну с определения. Немного информации из ISTQB:
Предположение об ошибках – это способ предотвращения ошибок, дефектов и отказов, основанный на знаниях тестировщика, включающих:
— Историю работы приложения в прошлом.
— Наиболее вероятные типы дефектов, допускаемых при разработке.
— Типы дефектов, которые были обнаружены в схожих приложениях.
Структурированный подход к предположению об ошибках предполагает создание списка всех возможных ошибок, дефектов и отказов с последующей разработкой тестов, направленных на поиск дефектов из этого списка. Списки отказов и дефектов могут быть построены на основе опыта, исторических данных об отказах и ошибках, а также на общих знаниях о причинах отказа программ.
Получается, что предугадывание ошибки — это когда тест аналитик использует свои знания системы и способность к интерпретации спецификации на предмет того, чтобы «предугадать» при каких входных условиях система может выдать ошибку.
Например, в программе я вижу: «для подтверждения заказа введите свой номер телефона в формате +7(…)… ….» И я, как тестировщик, начинаю думать: «А если не вводить телефон?», «А если ввести в формате не +7, а просто 8? «, и так далее. Это и есть предугадывание ошибки.
Давайте посмотрим на конкретных примерах, как можно использовать этот метод.
Уже знакомая нам игра с молокозаводом
Возьмем объекты, которые нам необходимо построить. Например, каким образом можно сломать курятник на этапе покупки?
- Можно попробовать поставить его на другой объект
2. Или за границу доступного поля
3. За границей поля тоже не получается.. А давайте попробуем поставить на воду? Вдруг разработчики не учли этот момент?
Тоже никак, все работает как надо… Ладно поставим пока курятник на место. Теперь попробуем проверить, все ли нормально с его работой.
4. В курятник можно покупать и сажать кур. А что если попробовать вместо кур поместить коров?
5. Или попробовать кур поместить на территорию вне курятника
6. Или попробовать зайти в магазин, пока покупаем кур
«Ладно, видимо не в этот раз» — говорим мы себе и закрываем игру…
Таким образом, путем предугадывания ошибок, мы с вами нашли 6 случаев, при которых возможны проблемы в работе приложения.
А теперь посмотрим на примере сайта
Возьмем один из элементов сайта — форму регистрации. Посмотрим на нее внимательно и подумаем, как мы можем ее «сломать».
Мне на ум приходят вот какие варианты:
- Указать e-mail c несуществующим доменом на конце.
- Указать e-mail без знака «@».
- Заполнить поле «Пароль» без использования обязательных символов. Например, если программа требует, чтобы в пароле были заглавные и строчные буквы, то пробуем ввести пароль без использования заглавных букв.
- В поле «Пароль еще раз» ввести символы отличные от символов в поле «Пароль».
- Снять галочку «Я принимаю условия Пользовательского соглашения».
- Ввести неверные символы с картинки.
- Оставить одно поле незаполненным.
________________________________
Таким образом, суть данного метода заключается в том, чтобы найти как можно больше ошибок, попытаться сломать работающий функционал. Название техники уже говорит само за себя.
________________________________
В предугадывании ошибок нет четкой и логической схемы, которая позволила бы нам составить тест-кейсы. Т.е. нельзя сказать, что сделав сначала Шаг №1, затем Шаг №2 и т.д. мы на выходе получим готовые проверки с максимально полным покрытием.
Наоборот, эта техника основывается на опыте тестировщика и на его умении думать креативно и деструктивно.