Вчера в чатике моей школы был очень интересный диалог по поводу рисования State Transition. Студентка рисует его для просмотра сериала и пытается разобраться, как это сделать:
— В КП-8 получила фидбэк, что сделала не схему состояний и переходов, а некую инструкцию по просмотру сериала, по факту показывающую одно его состояние — в процессе просмотра. Но суть как раз в том, что сериал из непросмотренного может быть перемещен в другие состояния, отраженные в виде разделов в личном кабинете, с помощью четырех кнопок, которые на схеме являются действиями. Больше никаких действий с сериалом пользователю не доступно (загрузка, редактирование и т.д.)
— Ну смотрите, Вы продолжаете описывать и смотреть на вещи, как пользователь, а надо как тестировщик. Сериалы из пустоты не берутся. Кто-то их закачивает. Значит, все же связка "сериала не существует" и "сериал загружен на сайт" — уже есть)
— Да, конечно, есть, но выполнять ее может очень ограниченный круг лиц, и я в процессе тестирования не могу) (студенты выбирают любой общедоступный проект и тестируют его. Разумеется, доступа в админку у них нет)
— По хорошему у тестировщиков на это есть права) и им дают необходимый доступ
— То есть важны состояния только по отношению к сайту, а что там с этим сериалом происходит в аккаунте уже считается как одно — просмотр? Тестировщик я без году неделя, а пользователь — много лет Поэтому и прошу постановки мозгов.
Тут моя коллега решила объяснить рисование карты на примере... Тортика! Дальнейший диалог был просто потрясающий, не могу не поделиться им с вами (разумеется, с разрешения коллеги, все же это ее идея, а не моя). Итак, приступаем:
— Вот смотрите...торт любите? Или другую еду какую-нибудь)
— Допустим)
— Отлично.
Чтобы приготовить торт, нам нужны ингредиенты, правильно? Это то, из чего он состоит. Как и наши объекты из параметров, но только в граммах.
Так вот, от того, что какого-то ингредиента будет больше/меньше, состояние торта не изменится. Он будет по-прежнему "не существует".
Чтобы его состояние изменилось — надо начать что-то с ними делать. Например, смешать, залить в форму и отправить в духовку. Тогда состояние будет "В процессе готовки".
Потом, когда бисквит испечется, мажем его кремом и украшаем. Он становится у нас "Торт украшен".
Но сразу есть его нельзя, мы ставим в холодильник, чтобы украшение застыло, а только потом мы можем его есть. После холодильника состояние становится "Торт готов".
А вот дальше — разнообразие)
Мы можем съесть торт, тогда он станет "Торт съеден".
Возможно, мы уедем и не съедим торт, пока его можно есть. Тогда он станет "Торт испорчен".
Кстати, в процессе приготовления могли быть и другие ответвления. Например:
— Ну тут-то я, получается, покупаю готовый торт и уже размышляю, что с ним делать
— Ок, изначально торта у Вас не было. Потом у Вас появилось состояние "Торт куплен". А дальше то, что происходит после "Торт готов" ¯\_(ツ)_/¯
Торт может быть съеден, может стать испорченным, может быть подарен, а только потом его уже съедят/не съедят, может быть выброшен. Все зависит от системы.
— То есть, я правильно понимаю?
Это всё не важно и состояние торта не меняется, пока он не съеден или не стух?)
— Ну он же еще является тортом? Если его начали есть, но не закончили — можно ввести промежуточное состояние "В процессе уничтожения" =))
— Тогда чем это отличается от
1. Купила — добавлен на сайт/загружен на сайт/находится на сайте
2. Поставила в холодильник на потом — сохранен, чтобы посмотреть позже
3 - 4. Передумала, достала, надкусала, снова передумала, решила съесть целиком, осилила половину — в процессе просмотра/уничтожения
5. Расстроилась и решила не доедать вообще и выкинуть — просмотр прерван/торт в помойке
— 5-е он еще в процессе.
У сериалов обычно прогресс есть, и его просто так не убрать
— Спасибо!
— В КП-8 получила фидбэк, что сделала не схему состояний и переходов, а некую инструкцию по просмотру сериала, по факту показывающую одно его состояние — в процессе просмотра. Но суть как раз в том, что сериал из непросмотренного может быть перемещен в другие состояния, отраженные в виде разделов в личном кабинете, с помощью четырех кнопок, которые на схеме являются действиями. Больше никаких действий с сериалом пользователю не доступно (загрузка, редактирование и т.д.)
— Ну смотрите, Вы продолжаете описывать и смотреть на вещи, как пользователь, а надо как тестировщик. Сериалы из пустоты не берутся. Кто-то их закачивает. Значит, все же связка "сериала не существует" и "сериал загружен на сайт" — уже есть)
— Да, конечно, есть, но выполнять ее может очень ограниченный круг лиц, и я в процессе тестирования не могу) (студенты выбирают любой общедоступный проект и тестируют его. Разумеется, доступа в админку у них нет)
— По хорошему у тестировщиков на это есть права) и им дают необходимый доступ
— То есть важны состояния только по отношению к сайту, а что там с этим сериалом происходит в аккаунте уже считается как одно — просмотр? Тестировщик я без году неделя, а пользователь — много лет Поэтому и прошу постановки мозгов.
Постановка мозгов через тортики
Тут моя коллега решила объяснить рисование карты на примере... Тортика! Дальнейший диалог был просто потрясающий, не могу не поделиться им с вами (разумеется, с разрешения коллеги, все же это ее идея, а не моя). Итак, приступаем:
— Вот смотрите...торт любите? Или другую еду какую-нибудь)
— Допустим)
— Отлично.
Чтобы приготовить торт, нам нужны ингредиенты, правильно? Это то, из чего он состоит. Как и наши объекты из параметров, но только в граммах.
Торт "не существует" |
Чтобы его состояние изменилось — надо начать что-то с ними делать. Например, смешать, залить в форму и отправить в духовку. Тогда состояние будет "В процессе готовки".
«В процессе готовки» |
Потом, когда бисквит испечется, мажем его кремом и украшаем. Он становится у нас "Торт украшен".
Но сразу есть его нельзя, мы ставим в холодильник, чтобы украшение застыло, а только потом мы можем его есть. После холодильника состояние становится "Торт готов".
А вот дальше — разнообразие)
Мы можем съесть торт, тогда он станет "Торт съеден".
Возможно, мы уедем и не съедим торт, пока его можно есть. Тогда он станет "Торт испорчен".
Кстати, в процессе приготовления могли быть и другие ответвления. Например:
- передержали бы бисквит, состояние изменилось бы на "Торт испорчен";
- не стали бы украшать бисквит и корж испортился бы → "Торт испорчен";
— Ну тут-то я, получается, покупаю готовый торт и уже размышляю, что с ним делать
— Ок, изначально торта у Вас не было. Потом у Вас появилось состояние "Торт куплен". А дальше то, что происходит после "Торт готов" ¯\_(ツ)_/¯
Торт может быть съеден, может стать испорченным, может быть подарен, а только потом его уже съедят/не съедят, может быть выброшен. Все зависит от системы.
— То есть, я правильно понимаю?
- Купила
- Поставила в холодильник на потом
- Передумала, достала, надкусала
- Снова передумала, решила съесть целиком, осилила половину
- Расстроилась и решила не доедать вообще и выкинуть
Это всё не важно и состояние торта не меняется, пока он не съеден или не стух?)
— Ну он же еще является тортом? Если его начали есть, но не закончили — можно ввести промежуточное состояние "В процессе уничтожения" =))
- 1-2 это торт куплен
- 3-4 это в процессе уничтожения
- 5 выброшен
— Тогда чем это отличается от
1. Купила — добавлен на сайт/загружен на сайт/находится на сайте
2. Поставила в холодильник на потом — сохранен, чтобы посмотреть позже
3 - 4. Передумала, достала, надкусала, снова передумала, решила съесть целиком, осилила половину — в процессе просмотра/уничтожения
5. Расстроилась и решила не доедать вообще и выкинуть — просмотр прерван/торт в помойке
— 5-е он еще в процессе.
У сериалов обычно прогресс есть, и его просто так не убрать
- либо досмотрел
- либо он в процессе просмотра
— Спасибо!
См также:
State & Transition Diagram — что это и как применять — подробнее о технике
PS — это выдержка из моей книги для начинающих тестировщиков, написана в помощь студентам моей школы для тестировщиков
Исправьте, плз, опечаточку:
ОтветитьУдалить..не стали бы украшать биск(в)ит и корж испортился бы..
Поправила, спасибо!
Удалить