Тестирование состояний и переходов (State Transition Testing)

Что это

Тестирование состояний и переходов (или перехода состояний) изучает, как система переходит из одного состояния в другое в ответ на события.

Состояния — это различные условия (или режимы), в которых может находиться система. Определенные события вызывают («триггерят») переходы — перемещения между этими состояниями.

Применяя эту технику тест-дизайна, мы анализируем поведение системы в различных сценариях, изучая события, которые вызывают переходы, и действия, которые за ними следуют. Тестирование переходов между состояниями полезно для систем с четкой последовательностью состояний и событий. Этот метод систематически изучает реакцию ПО на различные сценарии, обеспечивая правильное поведение ПО при переходах между состояниями, вызванными определенными событиями.

Метод позволяет улучшить тестовое покрытие и выявить потенциальные дефекты в системах, где изменения состояний следуют в четко определенной последовательности

Например, у нас есть программа управления светофорами, которая меняет режим работы светофоров в зависимости от времени суток, интенсивности дорожного движения и количества пешеходов. Тестирование переходов состояний поможет убедиться, что система правильно реагирует на различные комбинации этих факторов.

Диаграммы перехода состояний: визуальное представление техники тест-дизайна

Мы визуализируем тестирование переходов состояний с помощью диаграмм переходов состояний. Эти диаграммы обеспечивают графическое представление состояний, переходов, событий и действий системы.

Диаграммы переходов состоят из состояний, представленных прямоугольниками, переходов, представленных в виде стрелок между состояниями, событий, вызывающих переходы, и действий, связанных с переходами:

States and Transitions

Кружки обозначают начальное и конечное состояние.

Подобные диаграммы дают нам четкое и структурированное представление о том, как ведет себя наша программа в ответ на различные входные сигналы. 

Таким образом, диаграммы состояний и переходов помогают нам выявлять потенциальные дефекты, проверять правильность переходов между состояниями, и гарантировать, что программное обеспечение работает так, как задумано его создателями, и соответствует требованиям.

Диаграммы переходов состояний служат основой для разработки тест-кейсов и изучения поведения нашего программного обеспечения.

Как и где применяется

Эффективное применение техники тестирования перехода состояний идет по таким этапам:

  1. Определение состояний и событий:  Мы начинаем с четкого понимания различных состояний системы и событий, которые вызывают переходы состояний. Для этого необходимо проанализировать системные требования и спецификации.
  2. Создание диаграмм переходов состояний: Далее мы разрабатываем диаграммы переходов состояний, чтобы визуализировать состояния, переходы, события и действия. Эти диаграммы дают четкое наглядное представление о поведении системы.
  3. Написание тест-кейсов: На основе диаграмм переходов состояний мы создаем тест-кейсы, которые охватывают все возможные переходы состояний и комбинации событий. Для каждого тест-кейса мы указываем начальное состояние, событие-триггер и ожидаемый результат.
  4. Выполнение тест-кейсов: Мы выполняем написанные тест-кейсы и наблюдаем, как система переходит из одних состояний в другие. На этом этапе определяем, правильно ли выполняются ожидаемые действия.
  5. Анализ результатов: На последнем этапе мы оцениваем результаты тестирования, чтобы убедиться, что система ведет себя так, как должна. Наконец, мы документируем баги и помогаем разработчикам устранять любые несоответствия или отклонения от ожидаемого поведения.

На примере

Пример приложения, чтобы лучше понять тестирование перехода состояний. Как тестирование переходов состояний можно применить к банкомату (ATM).

Система банкомата проходит через такие состояния и переходы, взаимодействуя с пользователем:

States transitions diagram

Сначала определим состояния в системе банкомата, такие как «Карта вставлена» (Card Inserted на рисунке выше), «PIN-код введен» (PIN Entered) и «Выбор транзакции» (Transaction Selection). После идентификации состояний мы определим события, которые вызывают переходы между этими состояниями.

Переходы визуализируются с помощью диаграммы, показывающей переход из одного состояния в другое при наступлении события. Система переходит из состояния «Карта вставлена» в состояние «PIN-код введен» при наступлении события «Ввод PIN-кода«.

Во все эти операции мы включаем условия, которые влияют на эти переходы; например условие «Если ПИН правильный» (If the PIN is valid) для перехода от «ПИН введен» (PIN Entered) к «Выбор транзакции» (Transaction Selection).

Тест-кейсы

Далее на основе диаграммы переходов состояний мы формулируем тест-кейсы, охватывающие такие сценарии, как вставка карты без последующего ввода PIN-кода, ввод неправильного PIN-кода, выбор типа транзакции, отказ от транзакции и успешное завершение транзакции.

Также мы тестируем систему банкомата отдельными тестовыми сценариями, чтобы убедиться, что взаимодействие с пользователем приводит к нормальному переходу из одного состояния в другое. 

После завершения тестов анализируем результаты, чтобы убедиться, что фактические переходы состояний соответствуют ожидаемым на диаграмме переходов состояний. 

Наконец, мы фиксируем результаты тестов и сообщаем команде обо всех выявленных ситуациях и потенциальных дефектах в системе.

Преимущества и ограничения тестирования перехода состояний

Эта техника тестирования имеет свои плюсы и минусы, которые влияют на ее применение и эффективность.

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

  • Мы используем тестирование переходов состояний для изучения поведения программного обеспечения в различных сценариях. Таким образом, обеспечиваем широкий охват различных условий путем составления диаграммы состояний, переходов и событий. Таким образом, этот подход позволяет нам выявить и протестировать критически важные пути, связанные с переходами состояний и событиями.
  • Диаграммы переходов состояний обеспечивают четкое и понятное отображение сложных действий системы. Эта ясность улучшает понимание и способствует эффективному общению между нашей QA-командой и стейкхолдерами.
  • Кроме того, в процессе разработки тест-кейсов диаграммы переходов состояний помогают нам продумать соответствующие тестовые сценарии — и обеспечить хорошее тестовое покрытие этими сценариями. На выходе имеем хорошо структурированную тестовую документацию.

Ограничения

Тестирование переходов состояний имеет определенные ограничения:

  • Управление сложными созданными диаграммами и сценариями может потребовать много времени, в случае сложных систем с многочисленными состояниями, переходами и событиями.
  • Надежность тестирования зависит от полноты модели системы. Отсутствие важных состояний или переходов в модели может привести к недостаточному тестовому покрытию — в результате чего дефекты системы останутся не обнаруженными.
  • Диаграммы переходов состояний в целом отражают поведение стабильной системы. Динамические факторы, такие как ее синхронизация с другими системами или какие-то внешние события, могут быть представлены неверно, что ограничит тестовое покрытие.
  • Мы в целом фокусируемся только на явных, эксплицитных переходах, которые происходят из-за определенных событий. Однако такой подход может привести к упущению неявных, имплицитных переходов и непредвиденных взаимодействий между состояниями, что может создать «пробелы» в тестировании.

Источник


Видеотуториалы





Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас