{"id":31168,"date":"2025-05-26T05:00:00","date_gmt":"2025-05-26T03:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=31168"},"modified":"2025-05-22T09:44:13","modified_gmt":"2025-05-22T07:44:13","slug":"sztuka-pisania-przypadkow-testowych-pisz-przypadki-testowe-jak-stephen-king-i-kurt-vonnegut","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/sztuka-pisania-przypadkow-testowych-pisz-przypadki-testowe-jak-stephen-king-i-kurt-vonnegut\/","title":{"rendered":"Sztuka pisania przypadk\u00f3w testowych. Pisz przypadki testowe jak Stephen King i Kurt Vonnegut"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>My cenimy w naszych ksi\u0105\u017ckach g\u0142\u0119bi\u0119, jak\u0105 daje jednoczesne ogl\u0105danie wielu pi\u0119knych moment\u00f3w \u017cycia.<\/p>\n\n\n\n<p>Kurt Vonnegut, <a href=\"https:\/\/lubimyczytac.pl\/ksiazka\/4866215\/rzeznia-numer-piec\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >Rze\u017ania numer pi\u0119\u0107<\/a><\/p>\n<\/blockquote>\n\n\n\n<p>Co maj\u0105 wsp\u00f3lnego autor <em>L\u015bnienia<\/em> i tw\u00f3rca <em>Rze\u017ani numer pi\u0119\u0107<\/em> z technicznymi przypadkami testowymi? Wi\u0119cej ni\u017c si\u0119 wydaje. Bo dobry test to nie tylko ci\u0105g krok\u00f3w do wykonania. To tak\u017ce opowie\u015b\u0107: o u\u017cytkowniku, jego motywacjach i losach w cyfrowym \u015bwiecie. A kto opowiada lepiej ni\u017c wielcy pisarze? <strong>Je\u015bli chcesz, by twoje testy by\u0142y zrozumia\u0142e, anga\u017cuj\u0105ce i u\u017cyteczne<\/strong> \u2013 zacznij pisa\u0107 je jak mistrz horroru Stephen King i korzystaj z rad genialnego Kurta Vonneguta.<\/p>\n\n\n\n<p>Przypadki testowe s\u0105 g\u0142\u00f3wnym narz\u0119dziem w zasobniku testera. Dobrze napisane pomagaj\u0105 zrozumie\u0107 testowany system i zapewni\u0107, \u017ce wymagania zosta\u0142y zrozumiane, a na samym ko\u0144cu spe\u0142nione. U\u0142atwiaj\u0105 komunikacj\u0119 w zespole \u2013 nie tylko mi\u0119dzy testerami, ale te\u017c z programistami, analitykami czy mened\u017cerami. Dzi\u0119ki nim testowanie staje si\u0119 powtarzalne, mierzalne i odporne na zapomnienie. Zamiast zgadywa\u0107, co nale\u017cy sprawdzi\u0107 \u2013 testujesz to, co zosta\u0142o jasno opisane. Przypadki testowe to dokumentacja wiedzy o systemie, kt\u00f3ra ro\u015bnie razem z projektem i pozwala zachowa\u0107 kontrol\u0119 nad projektem.<\/p>\n\n\n\n<p>W poni\u017cszym artykule b\u0119d\u0119 wzorowa\u0142 si\u0119 na dw\u00f3ch ksi\u0105\u017ckach: <em>Zlituj si\u0119 nad czytelnikiem <\/em>Kurta Vonneguta i Suzanne McConnel oraz <em>Jak pisa\u0107. Pami\u0119tnik rzemie\u015blnika <\/em>Stephena Kinga.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Dlaczego testy to te\u017c opowie\u015bci (za\u0142o\u017cenia wst\u0119pne)<\/strong><\/h2>\n\n\n\n<p>Aby zastosowa\u0107 rady wielkich pisarzy do pisania test\u00f3w, za\u0142\u00f3\u017cmy, \u017ce proces testowania jest opowie\u015bci\u0105 o testowanym systemie:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"247\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/1-2-1024x247.jpg\" alt=\"Struktura opowie\u015bci\" class=\"wp-image-31169\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/1-2-1024x247.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/1-2-300x72.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/1-2-768x185.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/1-2.jpg 1178w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Ryc. 1 Struktura opowie\u015bci<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"239\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/2-2-1024x239.jpg\" alt=\"Struktura opowie\u015bci prze\u0142o\u017cona na testowanie\" class=\"wp-image-31171\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/2-2-1024x239.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/2-2-300x70.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/2-2-768x179.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/2-2.jpg 1147w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Ryc. 2 Struktura opowie\u015bci prze\u0142o\u017cona na testowanie<\/figcaption><\/figure>\n\n\n\n<p>Testy maj\u0105, tak jak opowie\u015bci, pocz\u0105tek, rozwini\u0119cie i zako\u0144czenie:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pocz\u0105tek<\/strong>&nbsp;\u2013 w przypadku testowania b\u0119dzie to przygotowanie si\u0119 do testu: zapoznanie si\u0119 ze specyfikacj\u0105\/przypadkiem u\u017cycia funkcjonalno\u015bci, kt\u00f3r\u0105 b\u0119dziemy testowa\u0107, przygotowanie danych, zapoznanie si\u0119 z potrzebami klienta ko\u0144cowego \u2013 bohatera naszej opowie\u015bci.<\/li>\n\n\n\n<li><strong>Rozwini\u0119cie&nbsp;<\/strong>\u2013 to wykonanie testu, wprowadzenie danych, sprawdzenie czy kalkulacja zosta\u0142a wykonana poprawnie,<\/li>\n\n\n\n<li><strong>Zako\u0144czenie<\/strong>&nbsp;\u2013 to zaraportowanie wyniku, zdanie raportu, zaplanowanie nast\u0119pnej czynno\u015bci.<\/li>\n<\/ul>\n\n\n\n<p>U\u017cytkownik ko\u0144cowy\/Persona klienta, b\u0119dzie naszym bohaterem (wi\u0119cej na ten temat znajdziecie w moim artykule <a href=\"https:\/\/sii.pl\/blog\/persona-testowanie-z-wykorzystywaniem-technik-z-gier-rpg\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Persona \u2013 testowanie z wykorzystywaniem technik z gier RPG<\/a>).<\/p>\n\n\n\n<p>Tak jak ka\u017cdy dobry bohater r\u00f3wnie\u017c u\u017cytkownik ko\u0144cowy ma sw\u00f3j cel, w kt\u00f3rego osi\u0105gni\u0119ciu pozwala mu system, kt\u00f3ry testujemy, np. rozliczenie faktury, zaplanowanie trasy lotu samolotu.<\/p>\n\n\n\n<p>Jak i w opowie\u015bci, tak i w testach, szalenie wa\u017cny jest kontekst. Dane testowe, warunki pocz\u0105tkowe, zakres, uzasadnienie biznesowe projektu \u2013 wszystko sk\u0142ada si\u0119 na \u015bwiat przedstawiony i to w tym zakresie b\u0119dziemy wykonywa\u0107 testy.<\/p>\n\n\n\n<p>Fabu\u0142a to scenariusze testowe \u2013 sekwencja krok\u00f3w, kt\u00f3re wykonujemy, mo\u017cna por\u00f3wna\u0107 do dzia\u0142a\u0144 bohatera w powie\u015bci.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Element<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Przypadek testowy<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Opowie\u015b\u0107<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Bohater<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownik (persona)<\/td><td class=\"has-text-align-center\" data-align=\"center\">Posta\u0107 z celem i motywacj\u0105<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Cel<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Zrealizowanie zadania w systemie<\/td><td class=\"has-text-align-center\" data-align=\"center\">Osi\u0105gni\u0119cie celu fabularnego<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Kontekst (scena pocz\u0105tkowa)<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Stan pocz\u0105tkowy systemu i danych<\/td><td class=\"has-text-align-center\" data-align=\"center\">\u015awiat przedstawiony<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Dzia\u0142ania (fabu\u0142a)<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Kolejne kroki testu<\/td><td class=\"has-text-align-center\" data-align=\"center\">Zdarzenia prowadz\u0105ce do rozwi\u0105zania<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Przeszkody lub b\u0142\u0119dy (konflikt)<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">B\u0142\u0119dy, warunki brzegowe<\/td><td class=\"has-text-align-center\" data-align=\"center\">Konflikty i przeszkody fabularne<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Zako\u0144czenie (rezultat)<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Oczekiwany rezultat lub komunikat b\u0142\u0119du<\/td><td class=\"has-text-align-center\" data-align=\"center\">Fina\u0142 historii<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Narracja krok po kroku<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Opis krok\u00f3w do wykonania<\/td><td class=\"has-text-align-center\" data-align=\"center\">Logiczny ci\u0105g wydarze\u0144<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Interpretacja i odbiorca<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Testerzy, programi\u015bci, analitycy<\/td><td class=\"has-text-align-center\" data-align=\"center\">Czytelnik<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Wersje alternatywne<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Testy pozytywne i negatywne, testy eksploracyjne, testowanie warunk\u00f3w brzegowych<\/td><td class=\"has-text-align-center\" data-align=\"center\">Zwroty akcji, alternatywne zako\u0144czenia<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Dokumentowanie wiedzy<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Utrwala spos\u00f3b dzia\u0142ania systemu<\/td><td class=\"has-text-align-center\" data-align=\"center\">Przekazuje do\u015bwiadczenia i znaczenia<\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tab. 1 Por\u00f3wnanie: fabu\u0142a kontra testy<\/figcaption><\/figure>\n\n\n\n<p>Dobry przypadek testowy prowadzi u\u017cytkownika przez scenariusz krok po kroku i mo\u017ce by\u0107 wykorzystany w innych kontekstach. Celem lepszej komunikacji jest dog\u0142\u0119bne zrozumienie wymaga\u0144, kt\u00f3re w efekcie przyniesie mniej b\u0142\u0119d\u00f3w.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Kurt Vonnegut: struktura i charakter<\/strong><\/h2>\n\n\n\n<p>Vonnegut by\u0142 nie tylko pisarzem, ale te\u017c \u015bwietnym nauczycielem pisania. Jego rady idealnie pasuj\u0105 do tworzenia test\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u201eGive the reader at least one character they can root for\u201d \u2013 w testach: daj u\u017cytkownikowi \u201eposta\u0107\u201d (np. rol\u0119 u\u017cytkownika) z celem.<\/li>\n\n\n\n<li>Vonnegut kocha\u0142 struktur\u0119 \u2013 wykorzystaj to do pisania scenariuszy testowych (pocz\u0105tek, \u015brodek, kulminacja).<\/li>\n\n\n\n<li>Humor i absurd \u2013 testy mog\u0105 by\u0107 kreatywne, byle z sensem (np. testowanie nietypowych danych wej\u015bciowych).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Cel, cel, cel<\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Ka\u017cda posta\u0107 powinna czego\u015b chcie\u0107, nawet je\u015bli to tylko szklanka wody.<\/p>\n\n\n\n<p>Kurt Vonnegut, <a href=\"https:\/\/lubimyczytac.pl\/ksiazka\/129806\/tabakiera-z-bagombo\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >Tabakiera z Bagombo<\/a><\/p>\n<\/blockquote>\n\n\n\n<p>W testach \u2013 ka\u017cda persona ma cel: zalogowa\u0107 si\u0119, znale\u017a\u0107 produkt, unikn\u0105\u0107 b\u0142\u0119du. Opisz to jak cel bohatera. Dobry przypadek testowy odwo\u0142uje si\u0119 konkretnie do jednego wymagania, tak aby mo\u017cna by\u0142o prze\u015bledzi\u0107 zale\u017cno\u015bci oraz okre\u015bli\u0107 stopie\u0144 pokrycia testami. Warto skonstruowa\u0107 przypadek testowy w taki spos\u00f3b, aby testowa\u0142 jedn\u0105 funkcjonalno\u015b\u0107\/przypadek u\u017cycia na raz. Oczywi\u015bcie podczas jego wykonywania mo\u017cemy sprawdza\u0107 inne aspekty testowanego systemu.<\/p>\n\n\n\n<p>Dobr\u0105 rad\u0105 jest, aby <strong>nazwa przypadku testowego<\/strong> by\u0142a niczym nazwa rozdzia\u0142u ksi\u0105\u017cki: stanowi\u0142a syntez\u0119 tego, co chcemy sprawdzi\u0107 poprzez wykonanie testu i jednocze\u015bnie umo\u017cliwia\u0142a \u0142atwe zidentyfikowanie przypadku testowego.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Struktura ma znaczenie<\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Zaczynaj tak blisko ko\u0144ca, jak tylko to mo\u017cliwe.<\/p>\n\n\n\n<p>Kurt Vonnegut, <a href=\"https:\/\/lubimyczytac.pl\/ksiazka\/129806\/tabakiera-z-bagombo\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >Tabakiera z Bagombo<\/a><\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Podaj czytelnikom jak najwi\u0119cej informacji w jak najkr\u00f3tszym czasie. Do diab\u0142a z suspensem. Czytelnicy powinni mie\u0107 tak pe\u0142ne rozeznanie w tym, co si\u0119 dzieje, gdzie i dlaczego, \u017ceby mogli sami doko\u0144czy\u0107 opowiadanie, gdyby karaluch po\u017cera\u0142y ostatnich kilka stron.<\/p>\n\n\n\n<p>Kurt Vonnegut, <a href=\"https:\/\/lubimyczytac.pl\/ksiazka\/129806\/tabakiera-z-bagombo\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >Tabakiera z Bagombo<\/a><\/p>\n<\/blockquote>\n\n\n\n<p>Przypadek testowy powinien sk\u0142ada\u0107 si\u0119 z nast\u0119puj\u0105cych element\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nazwa&nbsp; (name) \u2013 okre\u015bla cel testu, u\u0142atwia jego identyfikacje i wpisuje w kontekst.<\/li>\n\n\n\n<li>warunki wst\u0119pne (preconditions) \u2013 sekcja opisuje, w jakim stanie musi by\u0107 system, zanim rozpoczniemy testy.<\/li>\n\n\n\n<li>dane testowe (test data) \u2013 informacje wej\u015bciowe, kt\u00f3re b\u0119dziemy wykorzystywa\u0107 podczas testu.<\/li>\n\n\n\n<li>kroki (test steps) \u2013 szczeg\u00f3\u0142owy opis akcji podejmowanych przez testera w celu osi\u0105gni\u0119cia celu.<\/li>\n\n\n\n<li>oczekiwany wynik (expected result) \u2013 stan systemu po wykonanym kroku lub po te\u015bcie.<\/li>\n\n\n\n<li>szczeg\u00f3\u0142y testu (test details) \u2013 sekcja zawiera informacje dotycz\u0105ce wykonania testu (\u015brodowisko, system operacyjny, rodzaj testu, przypisany tester, status przypadku testowego, status wykonania przypadku testowego).<\/li>\n<\/ul>\n\n\n\n<p>Vonnegut szkicowa\u0142 fabu\u0142y jako wykresy emocji. Ty mo\u017cesz robi\u0107 to samo z testami:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>pocz\u0105tek (ustawienie),<\/li>\n\n\n\n<li>\u015brodek (akcja),<\/li>\n\n\n\n<li>kulminacja (sprawdzenie), z<\/li>\n\n\n\n<li>ako\u0144czenie (oczekiwany rezultat).<\/li>\n<\/ul>\n\n\n\n<p>W krokach opisuj akcje u\u017cytkownika, a w oczekiwanym rezultacie stan systemu w taki spos\u00f3b, \u017ceby m\u00f3c p\u00f3\u017aniej \u0142atwo pozna\u0107, \u017ce akcja przynios\u0142a oczekiwany rezultat, dzi\u0119ki czemu kroki z przypadk\u00f3w testowych b\u0119dzie mo\u017cna wykorzysta\u0107 do raportowania defekt\u00f3w.<\/p>\n\n\n\n<p>W przypadku dokumentowania przypadk\u00f3w testowych warto rozwa\u017cy\u0107 u\u017cycie narz\u0119dzi takich jak TestRail, Xray (dla Jira), Zephyr, czy nawet Google Sheets \u2013 je\u015bli projekt jest niewielki. Niezale\u017cnie od narz\u0119dzia, zasada pozostaje ta sama: <strong>struktura, cel, dane, kroki, oczekiwany rezultat.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Priorytetyzacja przypadk\u00f3w testowych<\/strong><\/h3>\n\n\n\n<p>Nie wszystkie przypadki testowe s\u0105 r\u00f3wnie wa\u017cne. W praktyce warto ustali\u0107 ich priorytety, aby skupi\u0107 si\u0119 najpierw na tych, kt\u00f3re maj\u0105 najwi\u0119kszy wp\u0142yw na jako\u015b\u0107 systemu. Oto trzy popularne podej\u015bcia:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Analiza ryzyka<\/strong> \u2013 oce\u0144 prawdopodobie\u0144stwo wyst\u0105pienia b\u0142\u0119du oraz jego wp\u0142yw. Przypadki o wysokim ryzyku nale\u017cy wykonywa\u0107 w pierwszej kolejno\u015bci.<\/li>\n\n\n\n<li><strong>Metoda MoSCoW<\/strong> \u2013 podziel przypadki na Must have (musi by\u0107), Should have (powinno by\u0107), Could have (mo\u017ce by\u0107) i Won\u2019t have (nie b\u0119dzie).<\/li>\n\n\n\n<li><strong>Krytyczno\u015b\u0107 funkcji biznesowej<\/strong> \u2013 skup si\u0119 na testach dla funkcji najcz\u0119\u015bciej u\u017cywanych lub krytycznych z punktu widzenia klienta (np. logowanie, p\u0142atno\u015bci).<\/li>\n<\/ol>\n\n\n\n<p>Zastosowanie takich metod priorytetyzacji pozwala lepiej zarz\u0105dza\u0107 czasem testowania i zasobami zespo\u0142u.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"924\" height=\"732\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/3-1.jpg\" alt=\"Przypadek testowy\" class=\"wp-image-31173\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/3-1.jpg 924w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/3-1-300x238.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/3-1-768x608.jpg 768w\" sizes=\"(max-width: 924px) 100vw, 924px\" \/><figcaption class=\"wp-element-caption\">Ryc. 3 Przypadek testowy<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Nie b\u00f3j si\u0119 absurdu<\/strong><\/h3>\n\n\n\n<p>Vonnegut kocha\u0142 absurdalne sytuacje. Ty te\u017c mo\u017cesz testowa\u0107 skrajno\u015bci: \u201eco, je\u015bli u\u017cytkownik ma w nazwisku 1000 liter?\u201d, \u201ea co, je\u015bli wybra\u0142 wszystkie mo\u017cliwe opcje na raz?\u201d.<\/p>\n\n\n\n<p>Podczas pisania tzw. Edge cases \u2013 brzegowych przypadk\u00f3w testowych \u2013 stawiamy \u015bwiat na g\u0142owie i sprawdzamy, czy dzia\u0142a. Tak jak w najlepszej literaturze sprawdzamy, co by si\u0119 sta\u0142o, gdyby samoch\u00f3d by\u0142 z\u0142ym duchem albo opisujemy kosmiczne zoo, w kt\u00f3rym s\u0105 pokazywani kosmici \u2013 w tym ludzie.<\/p>\n\n\n\n<p><strong>Edge cases<\/strong>, czyli <strong>przypadki brzegowe<\/strong>, to testy zaprojektowane z my\u015bl\u0105 o zachowaniu systemu na granicy dopuszczalnych warto\u015bci. Ich g\u0142\u00f3wnym celem jest <strong>ujawnienie b\u0142\u0119d\u00f3w, kt\u00f3re nie wyst\u0119puj\u0105 w typowych warunkach<\/strong>, ale mog\u0105 mie\u0107 powa\u017cne konsekwencje, gdy jednak do nich dojdzie. Piszemy graniczne przypadki testowe, aby sprawdzi\u0107 zachowanie systemu przy pustych warto\u015bciach (brak Internetu), przy celowym \u201epsuciu\u201d systemu, przy ekstremalnych danych wej\u015bciowych (242 telewizory w koszyku, zam\u00f3wienie na nieistniej\u0105cy adres).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Stephen King: prostota, rytm i konkret<\/strong><\/h2>\n\n\n\n<p>Stephen King to mistrz pisania w stylu \u201eczyta si\u0119 jednym tchem\u201d. Sp\u00f3jrzmy, jakich rad mistrz horroru udziela pocz\u0105tkuj\u0105cym pisarzom.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>J\u0119zyk ma by\u0107 prosty<\/strong><\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Pisz przy otwartych drzwiach, redaguj przy otwartych.<\/p>\n\n\n\n<p>Stephen King<\/p>\n<\/blockquote>\n\n\n\n<p>Najpierw napisz przypadek testowy tak, jak go rozumiesz. Potem dopracuj go z my\u015bl\u0105 o innych. Zaplanuj przegl\u0105d przypadk\u00f3w testowych z innym testerem, programist\u0105 b\u0105d\u017a product ownerem. Warto zadba\u0107 o to, \u017ceby przypadki testowe by\u0142y tak napisane, \u017ceby mo\u017cna wys\u0142a\u0107 je do u\u017cytkownika ko\u0144cowego\/klienta.<\/p>\n\n\n\n<p>King radzi unika\u0107 zb\u0119dnych przymiotnik\u00f3w, ozdobnik\u00f3w i skr\u00f3t\u00f3w my\u015blowych. W testach r\u00f3wnie\u017c: <strong>proste, klarowne kroki s\u0105 najlepsze<\/strong><strong>.<\/strong> Warto pami\u0119ta\u0107, \u017ceby korzysta\u0107 z tego samego zestawu poj\u0119\u0107, co programi\u015bci i biznes. Pisz przypadki testowe tak, aby mog\u0142y zosta\u0107 prosto przerobione na instrukcje u\u017cytkownika lub jako dokumentacje produktow\u0105. Pami\u0119taj o takim przygotowaniu, \u017ceby by\u0142o \u0142atwo je zautomatyzowa\u0107: jednoznaczne dane, przejrzysta struktura. Warto te\u017c wzi\u0105\u0107 pod uwag\u0119, \u017ce przypadki testowe, kt\u00f3re tworzymy, mog\u0105 zosta\u0107 u\u017cyte przez innego testera albo programist\u0119, dlatego warto pisa\u0107 przyk\u0142adowe dane i uszczeg\u00f3\u0142owi\u0107 spodziewany rezultat.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Rytm i napi\u0119cie<\/strong><\/h3>\n\n\n\n<p>Nie chodzi o suspens w sensie literackim, ale o to, by test mia\u0142 logiczny ci\u0105g zdarze\u0144 i naturalne tempo, a <strong>ka\u017cdy krok ma wynika\u0107 z poprzedniego<\/strong>.<\/p>\n\n\n\n<p>Przypadki testowe powinny by\u0107 jak najbardziej zatomizowane, jeden przypadek sprawdza jeden obszar testowy na raz. Po\u015bwi\u0119\u0107 chwil\u0119 na to, aby ka\u017cdy z krok\u00f3w przypadku testowego mia\u0142 odpowiadaj\u0105cy mu oczekiwany rezultat, dzi\u0119ki czemu jednoznacznie b\u0119dziesz m\u00f3g\u0142 oceni\u0107, czy dany krok zosta\u0142 wykonany.<\/p>\n\n\n\n<p>To co ukryte, to czego nie wida\u0107, r\u00f3wnie\u017c ma znaczenie przy pisaniu przypadk\u00f3w testowych w kontek\u015bcie za\u0142o\u017ce\u0144 poczynionych co do stanu systemu, wiedzy testera oraz etapu wytwarzania oprogramowania. Przypadki testowe powinny by\u0107 sprawdzane i odpowiednio poprawiane przy ka\u017cdej zmianie systemu.<\/p>\n\n\n\n<p>Je\u017celi piszesz wysokopoziomowe przypadki testowe pod testy akceptacyjne, to bierz pod uwag\u0119 to, co jest ukryte:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>wiedza potrzebna u\u017cytkownikowi, aby wykona\u0107 dany przypadek testowy,<\/li>\n\n\n\n<li>narz\u0119dzia i dane testowe,<\/li>\n\n\n\n<li>\u015brodowisko testowe.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Przypadek testowy jako narracja: krok po kroku<\/strong><\/h3>\n\n\n\n<p>Przypadek testowy mo\u017cna potraktowa\u0107 jak ma\u0142\u0105 opowie\u015b\u0107:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ekspozycja<\/strong> \u2013 w jakim jeste\u015bmy kontek\u015bcie? Jakie dane wprowadzono? Jakie warunki pocz\u0105tkowe?<\/li>\n\n\n\n<li><strong>Konflikt<\/strong> \u2013 co u\u017cytkownik robi? Jak\u0105 akcj\u0119 podejmuje? Gdzie mo\u017ce pojawi\u0107 si\u0119 ryzyko?<\/li>\n\n\n\n<li><strong>Kulminacja<\/strong> \u2013 system reaguje. Czy pojawia si\u0119 b\u0142\u0105d? Czy dzieje si\u0119 co\u015b niespodziewanego?<\/li>\n\n\n\n<li><strong>Rozwi\u0105zanie<\/strong> \u2013 co powinno si\u0119 sta\u0107? Jak wygl\u0105da sukces, a jak pora\u017cka?<\/li>\n<\/ul>\n\n\n\n<p>Dzi\u0119ki tej narracyjnej strukturze testy staj\u0105 si\u0119 bardziej intuicyjne i naturalne do odtworzenia.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nadawaj im tytu\u0142y jak rozdzia\u0142y ksi\u0105\u017cek (\u201eTC_104_Zaloguj si\u0119 jak zapominalski u\u017cytkownik\u201d zamiast \u201eTC_104_Login_invalid\u201d).<\/li>\n\n\n\n<li>Tw\u00f3rz persony u\u017cytkownik\u00f3w \u2013 jak bohater\u00f3w opowie\u015bci.<\/li>\n\n\n\n<li>Pami\u0119taj o czytelniku \u2013 in\u017cynierze, kt\u00f3ry przyjdzie po tobie.<\/li>\n\n\n\n<li>Zamiast \u201eTC_0345_EditAccount_InvalidData\u201d, spr\u00f3buj:<strong> \u201eEdytuj dane u\u017cytkownika z b\u0142\u0119dnym adresem e-mail\u201d<\/strong> \u2013 od razu wiadomo, o co chodzi.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Persona jako bohater<\/strong><\/h3>\n\n\n\n<p>Wprowad\u017a u\u017cytkownika jako posta\u0107: \u201eKlient zalogowany jako premium\u201d, \u201eNowy u\u017cytkownik po rejestracji\u201d, \u201eAdministrator bez pe\u0142nych uprawnie\u0144\u201d. \u0141atwiej wtedy wyobrazi\u0107 sobie kontekst.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Dziesi\u0119\u0107 przykaza\u0144 pisania przypadk\u00f3w testowych<\/strong><\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Znaj swojego bohatera.<\/strong> Zawsze okre\u015bl, kto jest u\u017cytkownikiem testowanego scenariusza.<\/li>\n\n\n\n<li><strong>Zacznij od ko\u0144ca.<\/strong> Zdefiniuj cel testu, zanim napiszesz pierwszy krok.<\/li>\n\n\n\n<li><strong>Pisz konkretnie.<\/strong> U\u017cywaj jednoznacznych danych, czytelnych krok\u00f3w i mierzalnych oczekiwa\u0144.<\/li>\n\n\n\n<li><strong>Unikaj ozdobnik\u00f3w.<\/strong> Prostota i klarowno\u015b\u0107 to fundament testu \u2013 jak u Kinga.<\/li>\n\n\n\n<li><strong>Szanuj struktur\u0119.<\/strong> Ka\u017cdy test powinien mie\u0107 pocz\u0105tek, rozwini\u0119cie i zako\u0144czenie.<\/li>\n\n\n\n<li><strong>Nie b\u00f3j si\u0119 absurdu.<\/strong> Projektuj testy ekstremalne i brzegowe \u2013 one pokazuj\u0105 si\u0142\u0119 systemu.<\/li>\n\n\n\n<li><strong>My\u015bl jak czytelnik.<\/strong> Tw\u00f3j test powinien by\u0107 zrozumia\u0142y nawet dla osoby spoza zespo\u0142u.<\/li>\n\n\n\n<li><strong>Dobrze tytu\u0142uj.<\/strong> Tytu\u0142 testu powinien od razu m\u00f3wi\u0107, co jest sprawdzane.<\/li>\n\n\n\n<li><strong>Testuj jedno na raz.<\/strong> Jeden przypadek \u2013 jeden cel. Nie mieszaj cel\u00f3w w ramach jednego testu.<\/li>\n\n\n\n<li><strong>Ewaluuj i rozwijaj.<\/strong> Przypadek testowy nie jest wieczny \u2013 wracaj do niego po zmianach w systemie.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/oferty-pracy\/\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" width=\"737\" height=\"170\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/praca-m-2.jpg\" alt=\"oferty pracy\" class=\"wp-image-31178\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/praca-m-2.jpg 737w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/praca-m-2-300x69.jpg 300w\" sizes=\"(max-width: 737px) 100vw, 737px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"925\" height=\"255\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/4-2.jpg\" alt=\"5 pyta\u0144 zanim napiszesz test\" class=\"wp-image-31176\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/4-2.jpg 925w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/4-2-300x83.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/4-2-768x212.jpg 768w\" sizes=\"(max-width: 925px) 100vw, 925px\" \/><figcaption class=\"wp-element-caption\">Ryc.  5 pyta\u0144 zanim napiszesz test<\/figcaption><\/figure>\n\n\n\n<p>Pisanie przypadk\u00f3w testowych nie musi by\u0107 nudne, mechaniczne ani sztywne. Wr\u0119cz przeciwnie \u2013 <strong>mo\u017ce by\u0107 tw\u00f3rczym procesem, kt\u00f3ry \u0142\u0105czy precyzj\u0119 in\u017cyniersk\u0105 z narracyjn\u0105 klarowno\u015bci\u0105 i empati\u0105 dla u\u017cytkownika<\/strong>. Inspiruj\u0105c si\u0119 Stephenem Kingiem i Kurtem Vonnegutem, uczymy si\u0119 my\u015ble\u0107 o testach jak o opowie\u015bciach: z bohaterem, konfliktem, celem i puent\u0105.<\/p>\n\n\n\n<p>Dobrze napisany przypadek testowy nie tylko sprawdza dzia\u0142anie systemu, ale r\u00f3wnie\u017c przekazuje wiedz\u0119, wspiera komunikacj\u0119 zespo\u0142ow\u0105 i u\u0142atwia przysz\u0142e decyzje projektowe. To dokument, kt\u00f3ry mo\u017ce przetrwa\u0107 zmiany, ewoluowa\u0107 z produktem i s\u0142u\u017cy\u0107 wielu odbiorcom \u2013 testerom, deweloperom, analitykom, a nawet klientom.<\/p>\n\n\n\n<p>Pami\u0119taj: <strong>przypadek testowy<\/strong> to co\u015b wi\u0119cej ni\u017c lista krok\u00f3w. <strong>To historia o tym, jak dzia\u0142a Tw\u00f3j system \u2013 i jak powinien dzia\u0142a\u0107<\/strong>. Pisz j\u0105 \u015bwiadomie, odpowiedzialnie i z wyobra\u017ani\u0105.<\/p>\n\n\n\n<p>Stephen King nauczy ci\u0119 prostoty i rytmu.<\/p>\n\n\n\n<p>Kurt Vonnegut \u2013 struktury i charakteru.<\/p>\n\n\n\n<p>Ty po\u0142\u0105cz to wszystko i pisz testy, kt\u00f3re si\u0119 czyta z przyjemno\u015bci\u0105 \u2013 nawet je\u015bli ko\u0144cz\u0105 si\u0119 b\u0142\u0119dem 500.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Bibliografia<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/nofluffjobs.com\/pl\/log\/technologia-pl\/dall-e-i-storytelling-w-pracy-testera\/\" rel=\"nofollow\" >Praca testera w dobie AI &#8211; po\u0142\u0105cz DALL-E i storytelling<\/a><\/li>\n\n\n\n<li>Stephen King, <a href=\"https:\/\/lubimyczytac.pl\/ksiazka\/4962160\/jak-pisac-pamietnik-rzemieslnika\" rel=\"nofollow\" >Jak pisa\u0107. Pami\u0119tnik rzemie\u015blnika<\/a><\/li>\n\n\n\n<li>Kurt Vonnegut, <a href=\"https:\/\/lubimyczytac.pl\/ksiazka\/5054527\/zlituj-sie-nad-czytelnikiem-zasady-tworczego-pisania\" rel=\"nofollow\" >Zlituj si\u0119 nad czytelnikiem. Zasady tw\u00f3rczego pisania<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.satisfice.com\/blog\/archives\/6203\" rel=\"nofollow\" >How Much is Enough? Testing as Story-Telling<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/testerzy.pl\/baza-wiedzy\/jak-napisac-dobry-przypadek-testowy\" rel=\"nofollow\" >Jak napisa\u0107 dobry przypadek testowy?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/drive.google.com\/file\/d\/1TF5rroPmRuX1GsK3fMKmbLLQEZbmJkIR\/view\" target=\"_blank\" rel=\"noopener\" title=\"\" rel=\"nofollow\" >Rex Black on Software Testing Best Practices<\/a><\/li>\n<\/ul>\n\n\n\n<p><br><\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;31168&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;7&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( votes: 7)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Sztuka pisania przypadk\u00f3w testowych. Pisz przypadki testowe jak Stephen King i Kurt Vonnegut&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( votes: 7)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>My cenimy w naszych ksi\u0105\u017ckach g\u0142\u0119bi\u0119, jak\u0105 daje jednoczesne ogl\u0105danie wielu pi\u0119knych moment\u00f3w \u017cycia. Kurt Vonnegut, Rze\u017ania numer pi\u0119\u0107 Co &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/sztuka-pisania-przypadkow-testowych-pisz-przypadki-testowe-jak-stephen-king-i-kurt-vonnegut\/\">Continued<\/a><\/p>\n","protected":false},"author":529,"featured_media":31211,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1318],"tags":[2823,1727,1512,1095,291],"class_list":["post-31168","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-zarzadzanie-projektami","tag-przypadki-testowe","tag-persona","tag-poradnik","tag-sciezki-karier","tag-tester"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/05\/Coding.jpg","category_names":["Zarz\u0105dzanie projektami"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/31168"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/529"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=31168"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/31168\/revisions"}],"predecessor-version":[{"id":31184,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/31168\/revisions\/31184"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/31211"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=31168"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=31168"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=31168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}