Skip to main content
Key Takeaways

Format: Kryteria Dane-Kiedy-Wtedy definiują jasne, testowalne działanie oprogramowania, zapewniając wspólne rozumienie wśród członków zespołu.

Struktura: Każdy scenariusz w tym formacie obejmuje kontekst, działanie użytkownika i oczekiwany rezultat, opisane prostym językiem.

Najlepsze praktyki: Skupienie się na prostocie, współpracy i szczegółach poprawia jasność kryteriów akceptacji.

Najczęstsze błędy: Należy unikać łączenia scenariuszy, opisywania szczegółów technicznych i pomijania przypadków brzegowych.

Kryteria akceptacji w formacie założenie–kiedy–wtedy (GWT) zapewniają prosty i możliwy do przetestowania sposób opisania oczekiwanego zachowania oprogramowania, dzięki czemu deweloperzy, testerzy i interesariusze mają wspólne rozumienie wymagań. Gdy kryteria akceptacji są nieprecyzyjne, zespoły tracą czas na dyskusje o wymaganiach, tworzenie niewłaściwego rozwiązania i wykrywanie luk na późnym etapie prac. 

W tym poradniku omówię format założenie–kiedy–wtedy, pokażę rzeczywiste przykłady z typowych scenariuszy, porównam go z innymi podejściami do kryteriów akceptacji oraz przedstawię praktyki, które pomagają zespołom zwinnym tworzyć jaśniejsze i skuteczniejsze historyjki użytkownika.

Czym są kryteria akceptacji w formacie założenie–kiedy–wtedy?

Założenie–kiedy–wtedy to trójczłonowy szablon służący do zapisywania kryteriów akceptacji historyjki użytkownika. Każdy scenariusz opisuje jeden fragment oczekiwanego zachowania prostym językiem, który mogą zrozumieć deweloperzy, testerzy i interesariusze. 

Continue Reading for Free

Create a free account to finish this article, plus get ongoing access to timely insights and practical resources.

Oto jak działa ta struktura:

  • Założenie określa, co musi już być prawdą, zanim użytkownik końcowy wykona jakiekolwiek działanie. 
  • Kiedy wprowadza działanie. Chodzi o to, co robi użytkownik, lub o zdarzenie wywołane przez system.
  • Wtedy ujawnia rezultat. Jest to wynik, który potwierdza, że system zareagował prawidłowo.

Jak pisać kryteria akceptacji w formacie założenie–kiedy–wtedy

Jak formułować każdą część, aby sprawdzała się podczas tworzenia i testowania oprogramowania.

Założenie: określanie kontekstu i warunków wstępnych

Część dotycząca założenia opisuje to, co musi już być prawdą. Obejmuje to stan systemu, rolę użytkownika, warunki dotyczące danych oraz konfigurację środowiska. Dobre stwierdzenia dotyczące założenia są konkretne. Unikaj zapisu „Zakładając, że użytkownik jest zalogowany”, gdy scenariusz zależy od roli. Zamiast tego napisz: „Zakładając, że zarejestrowany klient z ważną subskrypcją znajduje się na stronie ustawień konta”.

Oto kilka wskazówek dotyczących pisania części dotyczącej założenia:

  • Podaj rolę użytkownika lub personę, gdy ma to znaczenie.
  • Określ warunki systemowe, takie jak przełączniki funkcji, stany danych lub łączność.
  • Łącz wiele warunków wstępnych za pomocą słowa „Oraz”, zamiast upychać je w jednym zdaniu.

Kiedy: definiowanie działania lub wyzwalacza

Część dotycząca „kiedy” opisuje działanie lub zdarzenie, które uruchamia testowane zachowanie. Powinna opisywać jedną interakcję użytkownika lub jedno zdarzenie systemowe, a nie sekwencję działań. Używaj strony czynnej. Napisz „Kiedy klient klika przycisk «Zastosuj kupon»”, zamiast „Kiedy przycisk kuponu zostanie kliknięty”. Eliminuje to niejasność dotyczącą osoby wykonującej działanie.

Ta część powinna być zwięzła. Jeśli potrzebujesz więcej niż jednego stwierdzenia „kiedy”, prawdopodobnie opisujesz dwa odrębne scenariusze. Rozdziel je.

Wtedy: określanie oczekiwanego rezultatu

Część dotycząca „wtedy” określa, co użytkownik powinien zaobserwować lub co system powinien zrobić po wykonaniu działania. Opisuj obserwowalne rezultaty. „Wtedy pulpit się ładuje” to słaby zapis. „Wtedy system wyświetla pulpit klienta w ciągu dwóch sekund” można przetestować. Uwzględnij szczegóły, takie jak komunikaty o błędach, miejsca przekierowania, zmiany danych, wyzwalanie wiadomości e-mail lub zmiany stanu interfejsu użytkownika.

Użyj słowa Oraz, aby połączyć wiele rezultatów, gdy jedno działanie prowadzi do więcej niż jednego obserwowalnego wyniku. Na przykład: „Wtedy wyświetla się strona potwierdzenia zamówienia” Oraz „klient otrzymuje wiadomość e-mail z potwierdzeniem w ciągu 60 sekund”.

Get timely perspective on the shifts, decisions, and trade-offs shaping your role, plus practical resources you can put to work.

Get timely perspective on the shifts, decisions, and trade-offs shaping your role, plus practical resources you can put to work.

Przykłady formatu założenie–kiedy–wtedy

Oto przykłady kryteriów akceptacji w formacie założenie–kiedy–wtedy z różnych dziedzin.

Logowanie użytkownika

Scenariusz 1: pomyślne logowanie przy użyciu prawidłowych danych uwierzytelniających

Zakładając, że zarejestrowany użytkownik znajduje się na stronie logowania, kiedy użytkownik wpisze prawidłowy adres e-mail i poprawne hasło oraz kliknie przycisk „Zaloguj się”, wtedy system przekieruje użytkownika do pulpitu jego konta

Część dotycząca założenia jest tutaj celowo ograniczona do minimum, ponieważ scenariusz nie zależy od poziomu subskrypcji ani stanu konta. Zwróć uwagę na złożoną część dotyczącą „kiedy”: wprowadzenie danych uwierzytelniających i kliknięcie przycisku to jedno logiczne działanie (przesłanie formularza logowania), dlatego pozostawiam je razem, zamiast dzielić na osobne scenariusze dla każdego naciśnięcia klawisza.

Scenariusz 2: nieudane logowanie przy użyciu nieprawidłowych danych uwierzytelniających

Zakładając, że zarejestrowany użytkownik znajduje się na stronie logowania, kiedy użytkownik wprowadzi prawidłowy adres e-mail i nieprawidłowe hasło oraz kliknie „Zaloguj się”, wtedy system wyświetli komunikat „Nieprawidłowy adres e-mail lub hasło”, oraz użytkownik pozostanie na stronie logowania

Klauzula „Wtedy” określa dokładną treść komunikatu o błędzie. Druga klauzula „Oraz” ma znaczenie, ponieważ potwierdza, że użytkownik nie zostanie przypadkowo przekierowany w inne miejsce.

Koszyk i finalizacja zakupu

Scenariusz 1: Dodawanie produktu do koszyka

Zakładając, że klient przegląda stronę szczegółów produktu dostępnego w magazynie, kiedy klient kliknie „Dodaj do koszyka”, wtedy ikona koszyka zostanie zaktualizowana i pokaże jeden produkt, oraz pojawi się komunikat potwierdzający „Produkt dodano do koszyka”

Klauzula „Zakładając” zawiera informację „dostępny w magazynie”, ponieważ zachowanie różni się w przypadku produktów niedostępnych, a to jest osobny scenariusz.

Scenariusz 2: Zastosowanie prawidłowego kodu rabatowego

Zakładając, że klient ma w koszyku dwa produkty o łącznej wartości $80.00, kiedy klient wprowadzi kod rabatowy „SAVE20” i kliknie „Zastosuj”, wtedy system zastosuje rabat w wysokości 20%, oraz suma koszyka zostanie zaktualizowana do kwoty $64.00

Podanie konkretnych kwot uniemożliwia błędną interpretację. Taki scenariusz rabatowy może pomóc wykryć błąd zaokrąglania na środowisku produkcyjnym, w którym rabat procentowy od nieparzystej kwoty skutkował ceną z trzema miejscami po przecinku. Precyzja w klauzuli „Zakładając” ($80.00) i klauzuli „Wtedy” ($64.00) sprawia, że scenariusz jest wartościowy.

Odzyskiwanie hasła

Scenariusz 1: Żądanie zresetowania hasła przy użyciu zarejestrowanego adresu e-mail

Zakładając, że użytkownik znajduje się na stronie logowania, kiedy użytkownik kliknie „Nie pamiętasz hasła?”, wprowadzi zarejestrowany adres e-mail i kliknie „Wyślij”, wtedy system wyświetli komunikat „Link do resetowania hasła został wysłany na Twój adres e-mail”, oraz system wyśle wiadomość e-mail umożliwiającą zresetowanie hasła w ciągu 60 sekund

Złożona klauzula „Kiedy” przedstawia jeden logiczny przebieg: żądanie zresetowania hasła. Ograniczenie czasowe wynoszące 60 sekund w klauzuli „Wtedy” ma kluczowe znaczenie. Bez niego wiadomość e-mail umożliwiająca zresetowanie hasła, która dotrze 20 minut później, technicznie „przechodziłaby” test. Rezultaty ograniczone czasowo należą do najczęściej pomijanych szczegółów.

Zakładając, że użytkownik otrzymał wiadomość e-mail umożliwiającą zresetowanie hasła ponad 24 godziny temu, kiedy użytkownik kliknie link do resetowania hasła zawarty w wiadomości e-mail, wtedy system wyświetli komunikat „Ten link wygasł. Poproś o nowy.”

Klauzula „Zakładając” zawiera warunek czasowy, który wymusza omówienie tego, jaki powinien być okres ważności linku.

Walidacja formularza

Scenariusz 1: Przesyłanie formularza z niewypełnionymi wymaganymi polami

Zakładając, że użytkownik znajduje się w formularzu rejestracji, kiedy użytkownik pozostawi puste pole „E-mail” i kliknie „Wyślij”, wtedy system wyświetli bezpośrednio w formularzu komunikat o błędzie „E-mail jest wymagany” poniżej pola E-mail, oraz formularz nie zostanie przesłany

Klauzula „Wtedy” określa miejsce wyświetlenia błędu („poniżej pola E-mail”), a nie tylko fakt jego wyświetlenia. 

Scenariusz 2: Przekroczenie limitu znaków w polu tekstowym

Zakładając, że użytkownik wypełnia pole „Biogram” z limitem 500 znaków, kiedy użytkownik wprowadzi 501 znaków, wtedy system uniemożliwi dalsze wprowadzanie danych, oraz zostanie wyświetlony komunikat „Dozwolonych jest maksymalnie 500 znaków”

GWT a listy kontrolne i przypadki użycia

Oto kilka innych typów kryteriów akceptacji oraz sytuacje, w których można zastosować każdy z nich:

AspektDane-Kiedy-WtedyLista kontrolna oparta na regułachPrzypadek użycia
StrukturaDane, Kiedy, WtedyLista punktowana regułPonumerowane kroki z przepływami
Najlepsze zastosowanieScenariusze behawioralne, BDDReguły biznesowe, specyfikacje interfejsu użytkownikaZłożone funkcje z wieloma przepływami
Mocne stronyMożliwość testowania i automatyzacji, bogaty kontekstSzybkie w tworzeniu, łatwe do przeglądaniaKompleksowe, obejmują przypadki brzegowe
OgraniczeniaZbyt rozwlekłe w przypadku prostych zmianBrak przepływu scenariusza, trudne do automatyzacjiCiężkie, powolne w utrzymaniu
OdbiorcyZespół programistyczny, QA, produktProdukt, projekt, interesariuszeZespoły zewnętrzne, zgodność z przepisami
ZakresPojedyncze zachowanieCała funkcjaCała funkcja
Poziom szczegółowościTrzy klauzuleElastycznyWarunki wstępne, warunki końcowe, wyzwalacze i ponumerowane kroki

Uważam, że przypadki użycia sprawdzają się najlepiej, gdy trzeba udokumentować system na potrzeby zgodności z przepisami lub przekazać go zewnętrznemu dostawcy. W codziennej pracy sprintowej format dane-kiedy-wtedy jest bardziej zwięzły i szybszy.

galen low headshot

Kiedy używać poszczególnych formatów

Właściwy format zależy od członków zespołu, projektu i historyjki.

  • Użyj GWT, gdy historyjka dotyczy zachowania użytkownika z jasno określonymi wyzwalaczami i rezultatami, gdy planujesz automatyzować testy akceptacyjne lub testować scenariusze za pomocą narzędzi do wytwarzania oprogramowania sterowanego zachowaniem (BDD), albo gdy potrzebujesz, aby programiści i zespół QA współdzielili precyzyjną definicję ukończenia (DoD).
  • Użyj listy kontrolnej, gdy historyjka obejmuje dopracowanie interfejsu użytkownika, prostą konfigurację, reguły biznesowe bez przepływu użytkownika lub wymagania niefunkcjonalne, takie jak progi wydajności.
  • Użyj przypadku użycia, gdy funkcja jest złożona i obejmuje wiele rozgałęzionych przepływów, gdy dokumentujesz ją dla zespołów zewnętrznych lub na potrzeby zgodności z przepisami, albo gdy interesariusze potrzebują formalnego zapisu.

Najlepsze praktyki formatu Dane-Kiedy-Wtedy

Oto kilka najlepszych praktyk, które pomogą skutecznie korzystać z GWT:

  • Unikaj niejasnego lub wieloznacznego języka: Zamiast „Następnie strona ładuje się szybko”, napisz „Następnie strona wyników wyszukiwania ładuje się w ciągu dwóch sekund”. Zastępuj przymiotniki takie jak „odpowiedni” lub „istotny” wartościami mierzalnymi. Jeśli nie możesz tego przetestować, przeredaguj zapis.
  • Utrzymuj scenariusze proste i skoncentrowane: Stosuj zasadę jednego zachowania na scenariusz. Każdy scenariusz powinien testować dokładnie jedną rzecz. Gdy łączysz wiele działań lub rezultatów, tworzysz przypadki testowe trudne do debugowania i utrzymania. Jeśli scenariusz zawiera więcej niż dwie instrukcje „i” w sekcji „wtedy”, zadaj sobie pytanie, czy testujesz jedno zachowanie, czy dwa.
  • Organizuj sesję trzech amigos: Sesja trzech amigos to krótka, skoncentrowana rozmowa, podczas której osoba odpowiedzialna za produkt (właściciel produktu lub analityk biznesowy), programista i tester wspólnie przeglądają nadchodzące historyjki przed rozpoczęciem sprintu. Wspólnie zapisują lub dopracowują kryteria GWT, co zapobiega konieczności ponownej pracy. 
  • Zachowuj spójność terminologii i stylu: Wybierz standardowe terminy i stosuj je w każdej historyjce. Jeśli w jednym scenariuszu używasz słowa „klient”, a w innym „użytkownik”, wprowadzasz niejasność. W razie potrzeby utwórz mały słownik. Stosuj tę samą strukturę zdań w klauzulach.

Pięć typowych antywzorców

Oto kilka typowych błędów, których należy unikać podczas pisania kryteriów akceptacji w formacie dane-kiedy-wtedy:

  1. Opisywanie szczegółów implementacji zamiast zachowania: Scenariusze takie jak „Jeśli wywołanie API zwraca kod statusu 200” opisują implementację techniczną, a nie zachowanie użytkownika. Przepisz je z perspektywy użytkownika: „Jeśli katalog produktów został załadowany na stronie głównej”. Szczegóły techniczne pozostaw w kodzie automatyzacji testów.
  2. Upychanie wielu scenariuszy w jednym: Scenariusz, który testuje logowanie, nawigację i realizację zakupu w jednym bloku, jest testem integracyjnym, a nie kryterium akceptacji. Podziel każde zachowanie na osobny scenariusz. Uzyskasz dzięki temu bardziej przejrzyste wyniki i łatwiejsze debugowanie.
  3. Pominięcie scenariuszy negatywnych i przypadków brzegowych: Zespoły tworzące oprogramowanie w metodyce Agile często opisują ścieżkę pozytywną i zapominają o tym, co dzieje się, gdy coś pójdzie nie tak. Przy każdym udanym scenariuszu zadaj pytanie: co się stanie, jeśli dane wejściowe będą nieprawidłowe? Co się stanie, jeśli połączenie sieciowe zostanie przerwane? Co się stanie, jeśli zabraknie danych? Napisz co najmniej jeden scenariusz negatywny dla każdej historyjki, aby wykryć problemy, zanim trafią do środowiska produkcyjnego.
  4. Traktowanie GWT jako jedynego akceptowalnego formatu: Używaj GWT do opisywania zachowania, a list kontrolnych do wszystkiego innego. Jeśli będziesz zmuszać każdą historyjkę do formatu given-when-then, w tym zmiany koloru przycisków, aktualizacje treści i konfigurację infrastruktury, otrzymasz absurdalne rezultaty (np. „Jeśli strona główna istnieje, Kiedy użytkownik ją wyświetli, Wtedy czcionka nagłówka ma 16 px”).
  5. Tworzenie scenariuszy w izolacji: Nie twórz kryteriów GWT samodzielnie. Wartość tego formatu wynika z rozmowy, którą wywołuje. Jeśli przed rozpoczęciem tworzenia oprogramowania Twoje scenariusze nie są omawiane przez przedstawicieli co najmniej dwóch dziedzin, używasz GWT jako formatu dokumentacji, podczas gdy jego prawdziwa siła polega na wspieraniu współpracy.

Co dalej?

Jasne kryteria akceptacji w formacie given-when-then to tylko jedna z części realizacji udanych projektów. Rozwiń tę podstawę dzięki bezpłatnemu członkostwu DPM i uzyskaj dostęp do praktycznych szablonów, materiałów eksperckich oraz sprawdzonych struktur, które pomagają przekształcać dobrze zdefiniowane wymagania w sprawniejszą realizację i lepsze rezultaty.