{"id":25957,"date":"2023-12-13T05:00:00","date_gmt":"2023-12-13T04:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=25957"},"modified":"2023-12-13T08:27:55","modified_gmt":"2023-12-13T07:27:55","slug":"wydajnosc-pod-kontrola-z-k6-dobre-praktyki-tworzenie-zbiorow-testow-i-konfiguracja","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/wydajnosc-pod-kontrola-z-k6-dobre-praktyki-tworzenie-zbiorow-testow-i-konfiguracja\/","title":{"rendered":"Wydajno\u015b\u0107 pod kontrol\u0105 z k6 \u2013 dobre praktyki, tworzenie zbior\u00f3w test\u00f3w i konfiguracja"},"content":{"rendered":"\n<p>Dobre praktyki w programowaniu test\u00f3w wydajno\u015bciowych w kontek\u015bcie k6 obejmuj\u0105 szereg technik i podej\u015b\u0107, kt\u00f3re pomagaj\u0105 w efektywnym, wiarygodnym i skutecznym testowaniu wydajno\u015bci aplikacji. Ponadto, dobre praktyki maj\u0105 za zadanie wskaza\u0107, w jaki spos\u00f3b tworzy\u0107 scenariusze testowe, aby by\u0142y one \u0142atwe w przygotowaniu i utrzymywaniu.<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"Testy wydajno\u015bciowe z k6: Dobre praktyki, tworzenie zbior\u00f3w test\u00f3w i konfiguracja | cz\u0119\u015b\u0107 6\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/KZ3JP9rCPl8?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<h2 class=\"wp-block-heading\"><strong>Upraszczanie scenariuszy testowych<\/strong><\/h2>\n\n\n\n<p>Do tej pory skupiali\u015bmy si\u0119 na tworzeniu prostych scenariuszy testowych. Ich problem polega na tym, \u017ce mimo reu\u017cywania wielu element\u00f3w w scenariuszu, istnieje mo\u017cliwo\u015b\u0107 jego dalszego uproszczenia.<\/p>\n\n\n\n<p>W tym celu wykorzystamy <strong>modu\u0142 httpx oparty na API k6<\/strong>. Zmienia on podej\u015bcie do tworzenia scenariuszy testowych, sprawiaj\u0105c, \u017ce staj\u0105 si\u0119 bardziej intuicyjne i \u0142atwiejsze w utrzymaniu. Jest te\u017c uznawany za jedn\u0105 z wielu dobrych praktyk stosowanych w k6.<\/p>\n\n\n\n<p>Podstaw\u0105 korzystania z modu\u0142u httpx jest tworzenie sesji u\u017cytkownika. Przywodzi to na my\u015bl podej\u015bcie stosowane w narz\u0119dziach takich jak JMeter. Na obiekcie sesji mo\u017cemy zdefiniowa\u0107 pola takie jak bazowy adres URL czy nag\u0142\u00f3wki, kt\u00f3re zostan\u0105 do\u0142\u0105czone do ka\u017cdego kolejnego \u017c\u0105dania. Dodatkowo, istnieje mo\u017cliwo\u015b\u0107 zdefiniowania ustawie\u0144 globalnych, takich jak czas, po kt\u00f3rym otrzymamy timeout w przypadku braku odpowiedzi aplikacji.<\/p>\n\n\n\n<p>Przyjrzyjmy si\u0119 przyk\u0142adowemu scenariuszowi testowemu.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-01.png\"><img decoding=\"async\" width=\"985\" height=\"1024\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-01-985x1024.png\" alt=\"Przyk\u0142adowy scenariusz testowy\" class=\"wp-image-25958\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-01-985x1024.png 985w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-01-289x300.png 289w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-01-768x798.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-01.png 1428w\" sizes=\"(max-width: 985px) 100vw, 985px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 1 Przyk\u0142adowy scenariusz testowy<\/figcaption><\/figure>\n\n\n\n<p>W powy\u017cszym przyk\u0142adzie nie musimy ju\u017c definiowa\u0107 za ka\u017cdym razem nag\u0142\u00f3wk\u00f3w czy pe\u0142nego adresu URL aplikacji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Pokrywanie \u017c\u0105daniami http zasob\u00f3w statycznych<\/strong><\/h3>\n\n\n\n<p>Inn\u0105 ciekaw\u0105 praktyk\u0105 jest pokrywanie \u017c\u0105daniami HTTP zasob\u00f3w statycznych. Pliki statyczne cz\u0119sto zmieniaj\u0105 si\u0119 na stronie, co mo\u017ce powodowa\u0107 uci\u0105\u017cliwe edycje scenariuszy testowych przy ka\u017cdej zmianie. W zwi\u0105zku z tym, stworzymy katalog utils, w kt\u00f3rym b\u0119dziemy przechowywa\u0107 nasze funkcje pomocnicze. Nast\u0119pnie, umie\u015bcimy w tym katalogu plik o nazwie helper.js z poni\u017csz\u0105 zawarto\u015bci\u0105:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-02.png\"><img decoding=\"async\" width=\"1024\" height=\"826\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-02-1024x826.png\" alt=\"Zawarto\u015b\u0107 pliku helper.js\" class=\"wp-image-25960\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-02-1024x826.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-02-300x242.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-02-768x620.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-02-1536x1239.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-02.png 1790w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 2 Zawarto\u015b\u0107 pliku helper.js<\/figcaption><\/figure>\n\n\n\n<p>W pliku znajduj\u0105 si\u0119 dwie funkcje. Pierwsza z nich jest nam ju\u017c znana i odpowiada za przerwanie dzia\u0142ania tekstu. Druga funkcja natomiast s\u0142u\u017cy do wydobycia wszystkich \u017c\u0105da\u0144 dotycz\u0105cych zasob\u00f3w statycznych na stronie, a nast\u0119pnie wykonuje na nich \u017c\u0105danie GET. Ta funkcja mo\u017ce zosta\u0107 rozbudowana o odpowiednie tagowanie i sprawdzanie czy domena nale\u017cy do tych, kt\u00f3re nas interesuj\u0105.<\/p>\n\n\n\n<p>Ponadto, mogliby\u015bmy doda\u0107 mo\u017cliwo\u015b\u0107 wykonywania sze\u015bciu r\u00f3wnoczesnych asynchronicznych wywo\u0142a\u0144 statycznych zasob\u00f3w r\u00f3wnocze\u015bnie. Skutkowa\u0142oby to tym, \u017ce nasze testy jeszcze bardziej przypomina\u0142yby dzia\u0142anie przegl\u0105darki.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Tworzenie zbioru test\u00f3w<\/strong><\/h2>\n\n\n\n<p>Bazuj\u0105c na wiedzy zdobytej <a href=\"https:\/\/sii.pl\/blog\/all\/k6\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">z ca\u0142ej serii artyku\u0142\u00f3w<\/a>, spr\u00f3bujmy utworzy\u0107 dwa scenariusze testowe, kt\u00f3re b\u0119d\u0105 oparte na aplikacji Sii. Za\u0142\u00f3\u017cmy, \u017ce chcemy pokry\u0107 poni\u017csze, uproszczone scenariusze testowe: <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Scenariusz o nazwie search-article.js \u2013 odpowiada za wyszukiwanie artku\u0142\u00f3w na stronie, a nast\u0119pnie wej\u015bcie w ten, kt\u00f3ry nas interesuje:<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Numer kroku<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Krok testowy<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Oczekiwany efekt<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownik przechodzi na stron\u0119 g\u0142\u00f3wn\u0105<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownik znajduje si\u0119 na stronie g\u0142\u00f3wnej<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">2<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownik wyszukuje 1 z 5 zdefiniowanych wcze\u015bniej artyku\u0142\u00f3w<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownikowi wy\u015bwietla si\u0119 wyszukany artyku\u0142<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">3<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownik klika w wyszukany artyku\u0142<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownikowi wy\u015bwietla si\u0119 nazwa artyku\u0142u<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Implementacja w k6:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-03-1.png\"><img decoding=\"async\" width=\"554\" height=\"1024\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-03-1-554x1024.png\" alt=\"Implementacja scenariusza w k6\" class=\"wp-image-26089\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-03-1-554x1024.png 554w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-03-1-162x300.png 162w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-03-1-768x1420.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-03-1-831x1536.png 831w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-03-1-1108x2048.png 1108w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-03-1.png 2048w\" sizes=\"(max-width: 554px) 100vw, 554px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 3 Implementacja scenariusza w k6<\/figcaption><\/figure>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Scenariusz o nazwie search-training.js. \u2013 ten scenariusz wyszukuje interesuj\u0105ce nas szkolenie:<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Numer kroku<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Krok testowy<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Oczekiwany efekt<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownik przechodzi na stron\u0119 g\u0142\u00f3wn\u0105<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownik znajduje si\u0119 na stronie g\u0142\u00f3wnej<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">2<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownik przechodzi do sekcji \u201eSzkolenia\u201d<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownik znajduje si\u0119 w sekcji \u201eSzkolenia\u201d<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">3<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownik przechodzi do wyszukiwarki szkole\u0144<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownik znajduje si\u0119 w wyszukiwarce szkole\u0144<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">4<\/td><td class=\"has-text-align-center\" data-align=\"center\">U\u017cytkownik wyszukuje szkolenie o nazwie \u201eZosta\u0144 Analitykiem Biznesowym\u201d<\/td><td class=\"has-text-align-center\" data-align=\"center\">Oferta zostaje wyszukana<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Implementacja w k6:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-04-1.png\"><img decoding=\"async\" width=\"573\" height=\"1024\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-04-1-573x1024.png\" alt=\"Implementacja scenariusza w k6\" class=\"wp-image-26092\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-04-1-573x1024.png 573w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-04-1-168x300.png 168w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-04-1-768x1372.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-04-1-860x1536.png 860w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-04-1-1147x2048.png 1147w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-04-1.png 2048w\" sizes=\"(max-width: 573px) 100vw, 573px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 4 Implementacja scenariusza w k6<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Konfiguracje scenariuszy<\/strong><\/h2>\n\n\n\n<p>W poprzednich cz\u0119\u015bciach omawiali\u015bmy r\u00f3\u017cne typy executor\u00f3w stosowanych w k6. Jest to o tyle kluczowe, \u017ce w przypadku, kiedy chcieliby\u015bmy zmieni\u0107 rodzaj, konieczna b\u0119dzie edycja kodu wewn\u0105trz scenariusza. Inn\u0105 mo\u017cliwo\u015bci\u0105 jest duplikowanie tego samego scenariusza testowego.<\/p>\n\n\n\n<p>Oba rozwi\u0105zania w d\u0142ugiej perspektywie s\u0105 ci\u0119\u017ckie w utrzymywaniu i niepraktyczne. W zwi\u0105zku z tym wykorzystuje si\u0119 r\u00f3\u017cne konfiguracje testowe, kt\u00f3re mog\u0105 zosta\u0107 u\u017cyte uniwersalne dla ka\u017cdego ze scenariuszy. Przyjrzyjmy si\u0119 dw\u00f3m konfiguracjom:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>smoke.json \u2013 konfiguracja odpowiedzialna za pojedynczy przebieg scenariusza:<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-05.png\"><img decoding=\"async\" width=\"1024\" height=\"734\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-05-1024x734.png\" alt=\"Konfiguracja smoke.json\" class=\"wp-image-25966\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-05-1024x734.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-05-300x215.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-05-768x550.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-05.png 1066w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 5 Konfiguracja smoke.json<\/figcaption><\/figure>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>load.json \u2013 docelowa konfiguracja zwi\u0119kszaj\u0105ca obci\u0105\u017cenie wraz z czasem trwania testu:<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-06.png\"><img decoding=\"async\" width=\"1024\" height=\"830\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-06-1024x830.png\" alt=\"Konfiguracja load.json\" class=\"wp-image-25968\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-06-1024x830.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-06-300x243.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-06-768x623.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-06.png 1204w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 6 Konfiguracja load.json<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Definiowanie w\u0142asnych polece\u0144<\/h2>\n\n\n\n<p>Ostatnim z etap\u00f3w jest zdefiniowanie polece\u0144 do uruchomienia docelowych scenariuszy. Skorzystamy ze znanego ju\u017c nam mechanizmu z pliku konfiguracyjnego package.json:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-07.png\"><img decoding=\"async\" width=\"1024\" height=\"681\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-07-1024x681.png\" alt=\"Definiowanie w\u0142asnych polece\u0144\" class=\"wp-image-25970\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-07-1024x681.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-07-300x199.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-07-768x510.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-07-1536x1021.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/12\/p6-attachment-07.png 1980w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 7 Definiowanie w\u0142asnych polece\u0144<\/figcaption><\/figure>\n\n\n\n<p>Zdefiniowali\u015bmy cztery polecenia, z kt\u00f3rych pierwsze odpowiadaj\u0105 za uruchomienie dw\u00f3ch test\u00f3w z konfiguracj\u0105 pojedynczej iteracji. W przypadku ostatnich, wykonanie dotyczy konfiguracji test\u00f3w obci\u0105\u017ceniowych.<\/p>\n\n\n\n<p>Jednym z aspekt\u00f3w, kt\u00f3ry mo\u017cna ulepszy\u0107, jest dynamiczne definiowanie ilo\u015bci wirtualnych u\u017cytkownik\u00f3w wykorzystywanych w drugim z konfiguracji scenariuszy. To ulepszenie sprawi\u0142oby, \u017ce konfiguracje sta\u0142yby si\u0119 jeszcze bardziej uniwersalne dla ka\u017cdego scenariusza. W ko\u0144cu obci\u0105\u017cenie stosowne dla pierwszego scenariusza b\u0119dzie si\u0119 najpewniej r\u00f3\u017cni\u0107 od tego w drugim. Mogliby\u015bmy to osi\u0105gn\u0105\u0107 za pomoc\u0105 zmiennych \u015brodowiskowych.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>W sz\u00f3stym ju\u017c artykule serii artyku\u0142\u00f3w o k6 om\u00f3wili\u015bmy dobre praktyki pisania scenariuszy testowych w k6, stworzyli\u015bmy przyk\u0142adowe scenariusze testowe i utworzyli\u015bmy konfiguracje do nich. Dzi\u0119ki temu, mogli\u015bmy zwi\u0119kszy\u0107 uniwersalno\u015b\u0107 frameworka testowego.<\/p>\n\n\n\n<p>Nasza podr\u00f3\u017c z narz\u0119dziem jeszcze si\u0119 nie ko\u0144czy \u2013 w kolejnej cz\u0119\u015bci, z wykorzystaniem Grafany, InfluxDB oraz Dockera, rozwiniemy framework i dostosujemy go do naszych potrzeb, aby zapewni\u0107 jako\u015b\u0107 oraz niezawodno\u015b\u0107 tworzonych aplikacji.<\/p>\n\n\n\n<p>***<\/p>\n\n\n\n<p>Je\u015bli jeszcze nie mieli\u015bcie okazji zapozna\u0107 si\u0119 z artyku\u0142ami z serii o narz\u0119dziu k6, znajdziecie je tutaj:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sii.pl\/blog\/wydajnosc-pod-kontrola-co-sklania-mnie-do-wyboru-k6\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">Wydajno\u015b\u0107 pod kontrol\u0105 \u2013 co sk\u0142ania mnie do wyboru k6?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/wydajnosc-pod-kontrola-z-k6-nagrywanie-parametryzacja-i-uruchamianie-pierwszego-scenariusza-testowego\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">Wydajno\u015b\u0107 pod kontrol\u0105 z k6 \u2013 nagrywanie, parametryzacja i uruchamianie pierwszego scenariusza testowego<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/wydajnosc-pod-kontrola-z-k6-metryki-progi-jakosci-tagowanie\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">Wydajno\u015b\u0107 pod kontrol\u0105 z k6 \u2013 metryki, progi jako\u015bci, tagowanie<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/wydajnosc-pod-kontrola-z-k6-dodatkowe-konfiguracje-typy-modeli-scenariuszy-oraz-executorow\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">Wydajno\u015b\u0107 pod kontrol\u0105 z k6 \u2013 dodatkowe konfiguracje, typy modeli scenariuszy oraz executor\u00f3w<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/sii.pl\/blog\/wydajnosc-pod-kontrola-z-k6-inicjalizacja-frameworka\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Wydajno\u015b\u0107 pod kontrol\u0105 z k6 \u2013 inicjalizacja frameworka<\/a><\/li>\n<\/ul>\n\n\n\n<p>Ponadto, zach\u0119cam do zapoznania si\u0119 z&nbsp;<a href=\"https:\/\/github.com\/gpiechnik2\/k6-boilerplate\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Repozytorium projektu<\/a>.<\/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;25957&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;2&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: 2)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Wydajno\u015b\u0107 pod kontrol\u0105 z k6 \u2013 dobre praktyki, tworzenie zbior\u00f3w test\u00f3w i konfiguracja&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: 2)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Dobre praktyki w programowaniu test\u00f3w wydajno\u015bciowych w kontek\u015bcie k6 obejmuj\u0105 szereg technik i podej\u015b\u0107, kt\u00f3re pomagaj\u0105 w efektywnym, wiarygodnym i &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/wydajnosc-pod-kontrola-z-k6-dobre-praktyki-tworzenie-zbiorow-testow-i-konfiguracja\/\">Continued<\/a><\/p>\n","protected":false},"author":517,"featured_media":25498,"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":[1317],"tags":[1701,1570,1546,1257],"class_list":["post-25957","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-testowanie","tag-k6","tag-tosca","tag-przeglad-narzedzi","tag-testy-wydajnosci"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/11\/Wydajnosc-pod-kontrola-\u2013-co-sklania-mnie-do-wyboru-k6.jpg","category_names":["Testowanie"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/25957"}],"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\/517"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=25957"}],"version-history":[{"count":3,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/25957\/revisions"}],"predecessor-version":[{"id":26094,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/25957\/revisions\/26094"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/25498"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=25957"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=25957"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=25957"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}