Към съдържанието
wannacode

Какво е стори

Накратко: Сторито казва кой иска нещо, какво иска и защо, в едно изречение. То не е спецификация: подробностите идват в разговора, а потвърждението казва как ще разберем, че е готово. Задачата за програмиста и слоят не са сторита, защото никой не може да ги опита сам.

Проблем

Искането в един ред

В списъка със задачи на екипа има ред: „Промо кодове“. Програмистът прави поле за код, което вади 10 % от цялата поръчка. Тестерът проверява, че 10 % се вадят. Всичко минава.

На пускането маркетингът пита защо кодът важи и за намалените продукти. Счетоводството пита къде вижда колко отстъпка е дадена през месеца. Никой не е сгрешил в това, което е направил. Само че редът „Промо кодове“ не казваше нито за кого е, нито защо.

Идеята

Кой, какво, защо

Потребителското стори (user story) казва една нужда с едно изречение и с три части:

Като [роля] искам [цел], за да [полза].

Като редовен клиент искам да въведа промо код в количката, за да платя по-малко за поръчката.

  • Ролята е човекът, който има нуждата. Не „потребителят“ изобщо, а клиент, служител в склада, счетоводител. Това са заинтересованите страни от предишния модул.
  • Целта е какво иска да направи, с неговите думи, без бутони и таблици.
  • Ползата е защо. Тя е най-ценната част, защото срещу нея се валидира решението: ако полето за кода работи, а клиентът пак не плаща по-малко, сторито не е изпълнено.

Сторито е малко изискване, записано така, че да започне разговор. На работа ще го чуеш и като „стори“, и като „юзър стори“. В курса казваме стори.

По-точно, за любопитните

Шаблонът „As a …, I want …, so that …“ се свързва с екип от британската фирма Connextra около 2001 г. и става известен с книгата на Майк Кон „User Stories Applied“ (2004). ISTQB CTFL v4.0.1 (раздел 4.5, подходите, базирани на сътрудничество) дава същия шаблон: роля, цел, бизнес стойност за ролята.

Шаблонът не е задължителен. Някои екипи пишат „За да …, като …, искам …“, за да сложат ползата първа. Важното е трите части да ги има.

Пробвай

Стори или не?

1. „Добави поле за промо код на страницата за плащане.“
2. „Като редовен клиент искам да въведа промо код в количката, за да платя по-малко за поръчката.“
3. „Като система искам да пазя промо кодовете, за да ги проверявам.“
4. „Бекендът на промо кодовете.“
5. „Като счетоводител искам в края на месеца да виждам сумата на отстъпките по всеки промо код, за да сверявам с банката.“

Идеята

Трите C

Едно изречение не може да носи всичко за промо кодовете. И не трябва. Рон Джефрис, един от създателите на Extreme Programming, описва сторито с три думи, които на английски започват с C. Наричат ги трите C (the three Cs):

  1. Карта (Card). Сторито е толкова кратко, че се побира на малка карта. Картата не е изискването, а напомняне, че трябва да се поговори.
  2. Разговор (Conversation). Подробностите се изясняват в разговор между хората, които знаят: бизнеса, QA и програмиста. Там излизат въпросите „а намалените продукти?“ и „а ако кодът се ползва два пъти?“.
  3. Потвърждение (Confirmation). Как ще разберем, че сторито е готово? С конкретни правила и примери, по които може да се провери. Те се пишат преди работата.

В историята с промо кодовете имаше карта. Нямаше разговор, затова нямаше и потвърждение. Затова „готово“ значеше „програмистът спря“.

По-точно, за любопитните

Джефрис описва трите C в статия от 2001 г. ISTQB CTFL v4.0.1 ги изрежда в раздела за съвместното писане на сторита и свързва потвърждението с критериите за приемане. Критериите са темата на урока „Критерии за приемане“ в този модул.

Идеята

Какво сторито не е

Три неща се бъркат със стори най-често:

  • Спецификация. Сторито не изрежда всичко. Ако картата стане страница с всички случаи, разговорът няма да се случи, а написаното пак ще е непълно. Подробностите се записват след разговора, като правила и примери.
  • Задача за програмиста. „Добави поле за код на страницата за плащане“ казва какво да се направи, но не за кого и защо. Задачите са добри, но идват след сторито, когато екипът реши как да го направи.
  • Слой на системата. „Бекендът на промо кодовете“ или „екранът на количката“ са части от решението. Никой не може да ги опита сам и да каже „да, това исках“.

И още едно: „Като система искам…“ не е стори. Системата няма нужди. Зад всяко „като система“ стои човек, когото още не сме намерили.

Пробвай

Кое „за да“ е полза?

Във всеки въпрос избери края на сторито, който казва истинската полза.

1. „Като клиент искам да виждам цената на доставката в количката, за да …“
2. „Като служител в склада искам да виждам платените поръчки по реда на плащането, за да …“
3. „Като клиент искам да получа имейл, когато поръчката е изпратена, за да …“
4. „Като собственик искам промо кодовете да не важат за намалените продукти, за да …“

Идеята

Защо ползата е важна

Ползата прави две неща.

Първо, по нея се валидира. „За да реша дали да добавя още нещо до 50,00 €“ казва, че не стига доставката да се показва след плащането. Трябва да се вижда в количката, докато клиентът още избира.

Второ, тя отваря по-добри решения. Счетоводителката иска бутон за Excel. Ползата е „за да сверявам с банката“. Може би по-доброто решение е готов отчет, който пристига сам. Това е същият навик от урока за извличането: нуждата зад поисканото решение.

Ако не можеш да напишеш ползата, това е знак. Или не знаеш защо се прави сторито, или то не трябва. И в двата случая следващата стъпка е въпрос, не работа.

Упражнение

От искането към стори

1. Кое стори казва нуждата? Три искания от заинтересованите страни, всяко с три опита да се запише.

1. Собственикът: „Искаме промо кодове.“ Кое стори казва нуждата?
2. Складът: „Етикетите излизат твърде късно.“ Кое стори казва нуждата?
3. Счетоводството: „Искаме бутон за Excel.“ Кое стори казва нуждата?

Тест

Провери се

1. Кои са трите части на сторито по шаблона „Като … искам … за да …“?
2. Къде са подробностите на сторито според трите C?
3. Какво е потвърждението (Confirmation) в трите C?
4. Защо „Фронтенд на количката“ не е стори?
5. „Като клиент искам да платя с карта, за да платя с карта.“ Какво не е наред?

Създаден от Иво Гергов като част от кампанията на Evo Tech за достъпно обучение по програмиране ·