{"id":29189,"date":"2022-06-07T13:10:22","date_gmt":"2022-06-07T11:10:22","guid":{"rendered":"https:\/\/nearshore-it.eu\/artykuly\/testowanie-funkcjonalne\/"},"modified":"2024-11-07T15:05:05","modified_gmt":"2024-11-07T14:05:05","slug":"testowanie-funkcjonalne","status":"publish","type":"post","link":"https:\/\/nearshore-it.eu\/pl\/artykuly\/testowanie-funkcjonalne\/","title":{"rendered":"Testy funkcjonalne oprogramowania \u2013 co trzeba wiedzie\u0107?"},"content":{"rendered":"\n<div class=\"table-of-contents\">\n    <p class=\"title\"><\/p>\n    <ol>\n                    <li><a href=\"#Czym-jest-testowanie-funkcjonalne-oprogramowania\">1.  Czym jest testowanie funkcjonalne oprogramowania<\/a><\/li>\n                    <li><a href=\"#Podstawowy-podzia\u0142-test\u00f3w-funkcjonalnych\">2.  Podstawowy podzia\u0142 test\u00f3w funkcjonalnych<\/a><\/li>\n                    <li><a href=\"#Jak-wykonujemy-testy-funkcjonalne?\">3.  Jak wykonujemy testy funkcjonalne?<\/a><\/li>\n                    <li><a href=\"#Testy-bia\u0142oskrzynkowe-czy-czarnoskrzynkowe?\">4.  Testy bia\u0142oskrzynkowe czy czarnoskrzynkowe?<\/a><\/li>\n                    <li><a href=\"#czy-warto-zainteresowa\u0107-si\u0119-testami-funkcjonalnymi?\">5.  Czy warto zainteresowa\u0107 si\u0119 testami funkcjonalnymi? <\/a><\/li>\n            <\/ol>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"Czym-jest-testowanie-funkcjonalne-oprogramowania\">Czym jest testowanie funkcjonalne oprogramowania<\/h2>\n\n\n\n<p>Testowanie funkcjonalne ma na celu sprawdzenie, czy aplikacja dzia\u0142a zgodnie z wymaganiami w okre\u015blonych warunkach. Osoba testuj\u0105ca na r\u00f3\u017cnych poziomach test\u00f3w sprawdza, czy oprogramowanie dzia\u0142a zgodnie z wymaganiami biznesowymi, postawionymi przez interesariuszy, oraz czy spe\u0142nia oczekiwania u\u017cytkownik\u00f3w.<\/p>\n\n\n\n<p>Testy funkcjonalne to jeden z 4 tradycyjnych typ\u00f3w test\u00f3w. Sk\u0142adaj\u0105 si\u0119 na nie testy funkcjonalne, <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/testy-niefunkcjonalne\" data-type=\"jpro\" data-id=\"62596\">testy niefunkcjonalne<\/a>, strukturalne oraz zwi\u0105zane ze zmian\u0105. Testy te sprawdzaj\u0105 czynno\u015bci,&nbsp;do wykonywania kt\u00f3rych program jest przeznaczony, a m\u00f3wi\u0105c pro\u015bciej: <strong>sprawdzaj\u0105, czy program robi to, co powinien.<\/strong><\/p>\n\n\n\n<p>\u017beby to sprawdzi\u0107, musimy najpierw wiedzie\u0107&#8230; co powinien robi\u0107 program. Klasycznie odpowiedzi na to pytanie powinni\u015bmy szuka\u0107 w <strong>specyfikacji wymaga\u0144, dokumentacji, <\/strong>a w ostateczno\u015bci musimy liczy\u0107 na nasze <strong>do\u015bwiadczenie.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Podstawowy-podzia\u0142-test\u00f3w-funkcjonalnych\">Testowanie funkcji na r\u00f3\u017cnych poziomach \u2013 podstawowy podzia\u0142 test\u00f3w funkcjonalnych<\/h2>\n\n\n\n<p>Wa\u017cne, aby na tym etapie pami\u0119ta\u0107, \u017ce <strong>typy test\u00f3w i poziomy test\u00f3w to poj\u0119cia niezale\u017cne od siebie. <\/strong><\/p>\n\n\n\n<p>Typy test\u00f3w wyznaczaj\u0105 nam ich cel. W tym wypadku jest to sprawdzenie zachowania aplikacji i zweryfikowanie, czy jest zgodne ze specyfikacj\u0105 oraz wymaganiami u\u017cytkownik\u00f3w. <\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.06.08_graphic1.png\" alt=\"testy funkcjonalne oprogramowania - jaki typ test\u00f3w warto wykona\u0107?\" class=\"wp-image-66544\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Poziomy test\u00f3w odnosz\u0105 si\u0119 do faz wytwarzania oprogramowania i ich podstawowy podzia\u0142 to: <strong>testy jednostkowe, integracyjne, systemowe i akceptacyjne. <\/strong>W tym artykule nie b\u0119dziemy skupia\u0107 si\u0119 na szerszym rozwijaniu tego podzia\u0142u, ale musimy pami\u0119ta\u0107, \u017ce testy funkcjonalne powinny by\u0107 wykonywane na ka\u017cdym dost\u0119pnym poziomie testowania.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Testy jednostkowe<\/h3>\n\n\n\n<p>Testy funkcjonalne na poziomie test\u00f3w jednostkowych<strong> to zazwyczaj domena programist\u00f3w, <\/strong>poniewa\u017c to oni zazwyczaj odpowiadaj\u0105 za tworzenie i utrzymanie unit test\u00f3w. Na tym poziomie <strong>sprawdzaj\u0105, czy pojedyncza metoda \/ funkcja robi to, co powinna, <\/strong>np. czy wywo\u0142ywana jest odpowiednia akcja lub czy obliczenia s\u0105 poprawne. Jest to najni\u017cszy z poziom\u00f3w test\u00f3w, same testy powinny by\u0107 proste i wykonywa\u0107 si\u0119 bardzo szybko. Dlatego w\u0142a\u015bnie ten poziom test\u00f3w powinien by\u0107 podstaw\u0105 automatycznej weryfikacji poprawnego dzia\u0142ania oprogramowania.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Testy integracji<\/h3>\n\n\n\n<p>Testy integracyjne natomiast <strong>mog\u0105 by\u0107 domen\u0105 zar\u00f3wno tester\u00f3w, jak i developer\u00f3w. <\/strong>Podstawowym wyznacznikiem b\u0119dzie tutaj to, na jakim poziomie sprawdzamy integracj\u0119. Je\u017celi sprawdzamy <strong>integracj\u0119 pojedynczych metod i funkcji <\/strong>(po sprawdzeniu testami jednostkowymi, czy one same dzia\u0142aj\u0105), to raczej b\u0119dzie to domena programist\u00f3w. Je\u017celi jednak b\u0119dziemy testowa\u0107 integracj\u0119 na wy\u017cszym poziomie, np.<strong> integracje mi\u0119dzy dwoma modu\u0142ami aplikacji<a>,<\/a> <\/strong>to prac\u0119 t\u0119 mo\u017ce, a cz\u0119sto powinien, wykonywa\u0107 tester. Wynika to z faktu, \u017ce programista testuj\u0105cy sw\u00f3j w\u0142asny kod testuje swoj\u0105 interpretacj\u0119 wymaga\u0144, ale niekoniecznie t\u0119 prawid\u0142ow\u0105. Nie jest to przytyk w kierunku programist\u00f3w, ale raczej wskazanie, dlaczego nie powinno testowa\u0107 si\u0119 w\u0142asnych rozwi\u0105za\u0144. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Testy systemu<\/h3>\n\n\n\n<p>To jednak testy funkcjonalne na poziomie systemowym stanowi\u0105 ten domy\u015blny rodzaj test\u00f3w w oczach wi\u0119kszo\u015bci os\u00f3b. Testowanie systemowe jest to <strong>sprawdzanie funkcjonalno\u015bci oprogramowania na zintegrowanym \u015brodowisku, <\/strong>gdzie funkcjonalno\u015bci mo\u017cemy testowa\u0107 <strong>od pocz\u0105tku do ko\u0144ca (end-to-end). <\/strong>Jest to te\u017c poziom, kt\u00f3ry jest najbardziej intuicyjny dla pocz\u0105tkuj\u0105cych tester\u00f3w czy os\u00f3b z testowaniem niezwi\u0105zanych. Ale to nie wszystko \u2013 skoro jest to testowanie funkcjonalno\u015bci od pocz\u0105tku do ko\u0144ca, to s\u0105 to r\u00f3wnie\u017c bardzo istotne testy z punktu widzenia biznesu i interesariuszy, bo u\u017cytkownicy ko\u0144cowi b\u0119d\u0105 korzysta\u0107 z oprogramowania w bardzo podobny spos\u00f3b. Cz\u0119sto dopiero teraz mo\u017cemy zwr\u00f3ci\u0107 uwag\u0119 na poprawno\u015b\u0107 interfejsu u\u017cytkownika (zar\u00f3wno zgodno\u015b\u0107 z makietami, jak i prostot\u0119 jego obs\u0142ugi) oraz kwesti\u0119 poprawno\u015bci prezentowania danych u\u017cytkownikowi. Na tym poziomie mo\u017cemy w ko\u0144cu sprawdzi\u0107 dost\u0119pno\u015b\u0107 produktu dla os\u00f3b z niepe\u0142nosprawno\u015bciami, co jest szczeg\u00f3lnie istotne dla tester\u00f3w pracuj\u0105cych w instytucjach publicznych.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Testy akceptacyjne<\/h3>\n\n\n\n<p>Testy akceptacyjne to ostatni etap test\u00f3w, kt\u00f3ry jest wykonywany zazwyczaj na gotowym produkcie, przez u\u017cytkownik\u00f3w ko\u0144cowych, przez klienta lub z jego udzia\u0142em. Testy funkcjonalne przeprowadza si\u0119 na tym poziomie, aby <strong>ostatecznie zweryfikowa\u0107 i zatwierdzi\u0107, \u017ce powsta\u0142y produkt spe\u0142nia stawiane mu wymagania. <\/strong>Jest to tak\u017ce ostatni etap na znalezienie defekt\u00f3w przed przekazaniem produktu u\u017cytkownikom ko\u0144cowym i ostatni dzwonek by sprawdzi\u0107 zgodno\u015b\u0107 produktu z wymaganiami wynikaj\u0105cymi z legislacji.<\/p>\n\n\n\n<p><strong>Czytaj r\u00f3wnie\u017c:<\/strong> <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/piramida-testow-czyli-co-kiedy-i-jak-testowac-zeby-testy-przyniosly-zysk\/\" data-type=\"link\" data-id=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/piramida-testow-czyli-co-kiedy-i-jak-testowac-zeby-testy-przyniosly-zysk\/\">Czym jest piramida test\u00f3w? Co, kiedy i w jaki spos\u00f3b testowa\u0107?<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Jak-wykonujemy-testy-funkcjonalne?\">Jak wykonujemy testy funkcjonalne?<\/h2>\n\n\n\n<p>Om\u00f3wili\u015bmy testy funkcjonalne na r\u00f3\u017cnych poziomach, ale odpowiedzmy sobie na pytanie, jak je wykona\u0107? Jak cz\u0119sto w testowaniu bywa: <strong>\u201eto zale\u017cy\u201d<\/strong>. Testy na wszystkich poziomach, opr\u00f3cz test\u00f3w jednostkowych, mo\u017cna wykona\u0107 z mniejszym lub wi\u0119kszym sukcesem manualnie.<\/p>\n\n\n\n<p>W przypadku test\u00f3w integracyjnych cz\u0119sto potrzebowa\u0107 b\u0119dziemy dodatkowego oprogramowania do pomocy, ale nie zmienia to faktu, \u017ce dobrze zaprojektowane testy mo\u017cemy wykona\u0107 r\u0119cznie.<\/p>\n\n\n\n<p>Testami automatycznymi mo\u017cemy pokry\u0107 wszystkie wymienione wcze\u015bniej poziomy test\u00f3w. Pozwala to na skuteczne prowadzenie test\u00f3w regresji, a tak\u017ce buduje zaufanie do powstaj\u0105cego produktu, poniewa\u017c jest on regularnie sprawdzany pod k\u0105tem poprawno\u015bci dzia\u0142ania (<a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/automatyzacja-testow-obalamy-mity\/\" data-type=\"link\" data-id=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/automatyzacja-testow-obalamy-mity\/\">testy automatyczne<\/a> nie s\u0142u\u017c\u0105 do znajdowania b\u0142\u0119d\u00f3w, lecz do upewniania si\u0119, \u017ce funkcjonalno\u015bci, kt\u00f3re ju\u017c dzia\u0142a\u0142y, nadal to robi\u0105).<\/p>\n\n\n\n<p>Najwa\u017cniejsze biznesowo \u015bcie\u017cki podczas test\u00f3w akceptacyjnych warto sprawdzi\u0107 manualnie, aby ostatecznie upewni\u0107 si\u0119, \u017ce produkt jest gotowy do udost\u0119pnienia u\u017cytkownikom. Testami automatycznymi przy testach akceptacyjnych warto si\u0119 wspiera\u0107, aby ograniczy\u0107 wykonywanie powtarzalnej pracy (np. przekierowania przy du\u017cej liczbie wersji j\u0119zykowych, t\u0142umaczenia itp.).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Testy-bia\u0142oskrzynkowe-czy-czarnoskrzynkowe?\">Testy bia\u0142oskrzynkowe czy czarnoskrzynkowe?<\/h2>\n\n\n\n<p>Wiemy ju\u017c, czym s\u0105 testy funkcjonalne, jaki maj\u0105 cel, na jakich poziomach powinni\u015bmy je wykonywa\u0107 oraz kto mo\u017ce takie testy wykona\u0107. Czas odpowiedzie\u0107 na pytanie: <strong>w jaki spos\u00f3b okre\u015bli\u0107, jak przetestowa\u0107 nasze cechy funkcjonalne?<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Testy oparte o dokumentacj\u0119<\/h3>\n\n\n\n<p>Tak jak ju\u017c wspomina\u0142em w tym artykule, testy funkcjonalne sprawdzaj\u0105 poprawno\u015b\u0107 dzia\u0142ania oprogramowania w odniesieniu do wymaga\u0144 klienta, ale r\u00f3wnie\u017c pod wzgl\u0119dem zgodno\u015bci z wymaganiami u\u017cytkownik\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Zgodno\u015b\u0107 z wymaganiami klienta<\/h3>\n\n\n\n<p>Skupmy si\u0119 na pocz\u0105tku na zgodno\u015bci z wymaganiami klienta. Wymagania te zazwyczaj s\u0105 uj\u0119te w specyfikacji, wymaganiach, makietach i ka\u017cdej innej formie dokumentacji. Projektowanie test\u00f3w na podstawie dokumentacji to wykorzystywanie technik czarnoskrzynkowych w praktyce. Pocz\u0105tkuj\u0105cy testerzy cz\u0119sto nawet nie wiedz\u0105, \u017ce projektuj\u0105c testy, korzystaj\u0105 z opisanych i popularnych technik czarnoskrzynkowych. Dzieje si\u0119 tak, poniewa\u017c podstawowe techniki s\u0105 proste i intuicyjne.<\/p>\n\n\n\n<p><strong>Przeczytaj tak\u017ce:<\/strong> <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/scenariusze-testowe\/\" data-type=\"link\" data-id=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/scenariusze-testowe\/\">Co \u0142\u0105czy testera z bran\u017c\u0105 filmow\u0105? Czyli scenariusze testowe bez tajemnic<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Zgodno\u015b\u0107 z oczekiwaniami u\u017cytkownik\u00f3w<\/h3>\n\n\n\n<p>Drug\u0105 cz\u0119\u015bci\u0105 test\u00f3w funkcjonalnych jest sprawdzenie zgodno\u015bci z oczekiwaniami u\u017cytkownik\u00f3w. Wtedy to do\u015bwiadczenie testera jest bardzo wa\u017cne. Mam tutaj na my\u015bli zar\u00f3wno do\u015bwiadczenie testerskie, jak i bran\u017cowe. W tych testach opieramy si\u0119 na technikach bazuj\u0105cych na do\u015bwiadczeniu jak np. zgadywanie b\u0142\u0119d\u00f3w, <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/testerze-eksploruj\" data-type=\"jpro\" data-id=\"53782\">testy eksploracyjne<\/a> czy korzystanie z list kontrolnych. <\/p>\n\n\n\n<p>Podsumowuj\u0105c, testerzy dysponuj\u0105 wachlarzem r\u00f3\u017cnych technik, jedne wymagaj\u0105 intuicji, inne do\u015bwiadczenia. Ich wsp\u00f3lnym mianownikiem jest rezultat: dobrze zaprojektowane testy, kt\u00f3rych wykonanie pozwala znale\u017a\u0107 defekty lub zwi\u0119kszy\u0107 nasze zaufanie do jako\u015bci wytwarzanego oprogramowania.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"czy-warto-zainteresowa\u0107-si\u0119-testami-funkcjonalnymi?\">Podsumowanie: czy warto zainteresowa\u0107 si\u0119 testami funkcjonalnymi? <\/h2>\n\n\n\n<p>W ramach test\u00f3w funkcjonalnych aplikacji testerzy s\u0105 odpowiedzialni za testowanie funkcji na r\u00f3\u017cnych poziomach. U\u017cywane do poszukiwania b\u0142\u0119d\u00f3w techniki daj\u0105 bardzo du\u017ce mo\u017cliwo\u015bci rozwoju i wyspecjalizowania si\u0119. Zapraszam was do obejrzenia spotkania z cyklu BiteIT, w kt\u00f3rym znajdziecie wi\u0119cej informacji o niezb\u0119dnych kompetencjach testera i rekrutacji w testach: <\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"BiteIT#75: Rekrutacja w testach \u2013 co warto o niej wiedzie\u0107 i jak zacz\u0105\u0107? | Pawe\u0142 Krysiak\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/GumZZId7_Gs?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><a id=\"_msocom_1\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Na fali rosn\u0105cego zapotrzebowania na tester\u00f3w oprogramowania temat testowania funkcjonalnego zyska\u0142 jeszcze wi\u0119ksz\u0105 popularno\u015b\u0107. Ch\u0119tnych do spr\u00f3bowania swoich si\u0142 w IT nie brakuje, ale wiele niejasno\u015bci mo\u017ce budzi\u0107 podzia\u0142 na r\u00f3\u017cne typy test\u00f3w. Ostatnio na blogu JPro pojawi\u0142 si\u0119 temat testowania niefunkcjonalnego, dzi\u015b zatem zastan\u00f3wmy si\u0119, czym jest testowanie funkcjonalne i jaki jest cel test\u00f3w funkcjonalnych.<\/p>\n","protected":false},"author":70,"featured_media":29195,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"iawp_total_views":805,"footnotes":""},"categories":[1,582],"tags":[562],"offering":[522],"class_list":["post-29189","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","category-technologie","tag-qa","offering-tech-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/users\/70"}],"replies":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/comments?post=29189"}],"version-history":[{"count":5,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29189\/revisions"}],"predecessor-version":[{"id":33924,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/29189\/revisions\/33924"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media\/29195"}],"wp:attachment":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media?parent=29189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/categories?post=29189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/tags?post=29189"},{"taxonomy":"offering","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/offering?post=29189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}