Продолжаем цикл статей по тест-дизайну. Сегодня поговорим об еще одной интересной технике, которая называется таблица состояний и переходов.
Эта техника очень хорошо подходит, когда необходимо покрыть функциональность смоук тестами. Я люблю ее использовать в начале тестирования, т.к. кейсы, получаемые от нее, с одной стороны достаточно интересные и важные, а с другой позволяют проверить работу фичи в целом за относительно небольшой промежуток времени.
Мне особенно нравится использовать этот подход при тестировании игр. Поэтому давайте разберем метод на какой-нибудь игре. Но сначала немного теории.
Таблица переходов представляет собой все возможные комбинации начальных и конечных состояний, включая действительные и недействительные переходы, инициирующие события, защитные условия и результирующие действия. Диаграммы состояний и переходов обычно, показывают только действительные переходы и исключают недействительные переходы.
Тесты создаются для покрытия типичной последовательности состояний, покрытия каждого возможного состояния, покрытия каждого возможного перехода, проверки специфических последовательностей переходов, или для проверки недействительных переходов. (ISTQB FL 2018)
Проще говоря, у нас есть объект, который может находиться в разных состояниях. Переход от одного состояния к другому обычно чем-то обусловлен, например, каким-нибудь действием над объектом. Эти состояния и действия над объектом нам необходимо смоделировать.
Под объектом мы обычно понимаем тестируемую фичу или ее часть.
Пример из жизни
Чтобы было еще понятней, перенесемся из тестирования в повседневную жизнь и поищем там примеры. Например, вода (из курса физики правильней сказать “вещество”, но не будем усложнять, про плазму тоже ни слова). Предположим, что наш объект — вода. Какие состояния есть у воды?
1. Лед
2. Вода
3. Пар
Итого, 3 состояния. Первый шаг сделан. Дальше необходимо определить, какие действия изменяют ее состояние, позволяя одному состоянию переходить в другое. Например, что необходимо сделать, чтобы вода превратилась в пар? Правильно, нагреть до определенной температуры. А чтобы в лед? Охладить. Таким образом, необходимо найти все действия которые влияют на состояния.
Надеюсь тут все понятно, давайте теперь снова вернемся в тестирование.
Теперь на примере тестирования игры
Попробуем сделать диаграмму состояний и переходов какого-нибудь объекта в игре. Возьмем для примера Молокозавод. Обычное строение, которое имеет несколько состояний.
Первое состояние — строения не существует в игре. Оно еще не куплено.
Второе состояние — строительство на игровом поле.
Следующее состояние —стадия открытия.
Четвертое состояние —построено.
На этом остановимся.
Для простоты анализа все это можно представить визуально:
Далее давайте посмотрим, какие действия влияют на изменение состояния и снова изобразим это на рисунке.
Обратите внимание, что между состояниями «Строится» и «Ожидает открытия» два действия. Это нормально. Необходимо искать все действия, которые влияют на изменение состояний.
Кроме действий, которые влияют на объект и изменяют его состояние, есть еще действия, которые влияют на объект, но не изменяют его состояние. Например, поворот или перемещение здания. Такое действие затрагивает сам объект, но не влияет на его состояние. Их также необходимо определить и отобразить на нашей диаграмме.
Таким образом, мы нарисовали диаграмму состояний и переходов объекта «Молокозавод». Первая часть сделана.
Далее необходимо перенести нашу модель в таблицу и составить из нее чек-лист проверок. Об этом мы поговорим в следующей статье.
и где таблица?
В самом конце статьи есть ссылка на продолжение. Именно там таблица.