Эта техника призвана визуализировать и делать акцент на состояниях с переходами между ними в приложении (если такие есть). Она необходима, чтобы эффективнее тестировать сложные системы, не забывая обо всех их частях. Примерами такой системы могут быть состояния заказанного товара на маркетплейсе или состояния заявки на открытие банковского счета.
Рассмотрим систему управления доступом, которая позволяет попадать в здание при успешном сканировании допустимого идентификатора (сканирование ID карты или ввода кода доступа) и блокирует вход при неудачной попытке. Система может находиться в различных состояниях, в зависимости от операций пользователя и её внутренних событий.
— Ожидание: система находится в покое и ожидает от пользователя ввода ID карты.
— Аутентификация: система получила ID и проверяет его на предмет подлинности и достаточности уровня прав доступа.
— Доступ разрешен: система закончила проверку ID и разрешает пользователю вход.
— Доступ запрещен: система закончила проверку ID и отказала пользователю в возможности входа.
— Блокировка: система временно заблокирована после трёх подряд неудачных попыток ввода.
Визуализация состояний ниже
Чтобы система начала менять свои состояния, необходимо совершать с ней определенные действия (переходы), либо же она должна выполнять их сама.
— Ожидание —> Аутентификация: при вводе ID и отправке его в систему.
— Аутентификация —> Доступ разрешён: если ID успешно прошел проверку системой.
— Аутентификация —> Доступ запрещён: если ID прошел проверку системой неуспешно.
— Доступ разрешён —> Ожидание: после успешного входа.
— Доступ запрещён —> Ожидание: после отклонения доступа.
— Доступ запрещён —> Блокировка: если число неудачных попыток превышает допустимый лимит.
— Блокировка —> Ожидание: после истечения времени блокировки.
Визуализация состояний с переходами ниже
Тестовые случаи, которые можно создать:
Как вы могли заметить, техники тест-дизайна очень тесно связаны и позволяют всесторонне сократить количество тестовых проверок, при этом статистически не ухудшая их качество. И несмотря на то, что существует небольшая вероятность упустить ошибку из — за использования значительно меньшего количества проверок, эти техники уже много лет крайне эффективны и более чем оправдывают такой небольшой риск.
4.9. Ошибка, дефект и сбой
Обычно любое зарегистрированное несоответствие между ожидаемым и фактическим поведением системы называют “Баг”. То есть, место в коде, которое работает некорректно, называют “Баг” и сам Bug Report называют “Баг”. Качественное понимание того, как возникают “Баги” и где их можно ожидать, помогает находить эти самые несоответствия более качественно.
Ошибка обычно относится к проблеме в исходном коде, созданной программистом или любыми другими членами команды, участвующими в разработке требований или их реализации. Это может быть логическая ошибка, опечатка, неправильное использование API или любая другая проблема, приводящая к некорректному поведению программы. Ошибка указывает на расхождение между ожидаемым и фактическим поведением программы.
— Программист случайно использует при сравнении значений оператор «>» вместо «>=», что приводит к непредвиденным результатам операции.
— Системный аналитик неверно понял требование заказчика к системе и создал такой алгоритм расчета цены на товар в магазине, работа которого приводит к погрешностям в вычислениях.
Дефект — это формально зарегистрированная проблема, обнаруженная в программном продукте, которая указывает на то, что программа не соответствует своим спецификациям или требованиям. Дефекты возникают, когда зарегистрированные результаты работы программы не соответствуют ожиданиям или когда в программе обнаруживают ошибку, влияющую на ее функциональность.
— Функция калькулятора, которая должна складывать два числа, выдаёт неверный результат при сложении больших чисел из — за ошибки в коде.
— При заполнении формы регистрации, в систему не отправляются данные домашнего адреса пользователя, хотя для него все выглядит так, будто данные отправлены полностью.
Сбой — это событие, при котором система не выполняет одну или несколько заявленных функций. Сбой происходит, когда программное обеспечение перестает правильно функционировать из — за одного или нескольких дефектов. Сбои видны конечным пользователям и могут привести к потере данных, нарушению работы системы или другим критическим последствиям.
— Веб — сайт выдает ошибку сервера и перестает обрабатывать запросы пользователей из — за дефекта, влияющего на этот процесс.