{"id":21765,"date":"2023-05-30T05:00:00","date_gmt":"2023-05-30T03:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=21765"},"modified":"2023-06-30T09:11:13","modified_gmt":"2023-06-30T07:11:13","slug":"wydajnosc-pod-kontrola-co-sklania-mnie-do-wyboru-k6","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/wydajnosc-pod-kontrola-co-sklania-mnie-do-wyboru-k6\/","title":{"rendered":"Wydajno\u015b\u0107 pod kontrol\u0105 \u2013 co sk\u0142ania mnie do wyboru k6?"},"content":{"rendered":"\n<p>W obecnych czasach, gdy wi\u0119kszo\u015b\u0107 aplikacji internetowych ma miliony u\u017cytkownik\u00f3w na ca\u0142ym \u015bwiecie, kluczowe znaczenie ma ich wydajno\u015b\u0107, failover i dost\u0119pno\u015b\u0107. Dlatego te\u017c testowanie wydajno\u015bciowe jest nieod\u0142\u0105cznym elementem procesu wytwarzania oprogramowania, a narz\u0119dzia do jego przeprowadzania s\u0105 niezb\u0119dne dla ka\u017cdego zespo\u0142u deweloperskiego. <\/p>\n\n\n\n<p>Ten artyku\u0142 jest pocz\u0105tkiem serii, podczas kt\u00f3rej skupimy si\u0119 na om\u00f3wieniu jednego z najszybciej rozwijaj\u0105cych si\u0119 <strong>narz\u0119dzi do testowania wydajno\u015bci aplikacji \u2013 k6<\/strong>, firmy Grafana Labs. W serii przeanalizujemy, jak dzia\u0142a k6, jakie funkcje oferuje oraz jak go skonfigurowa\u0107, aby przeprowadzi\u0107 skuteczne testy i analizy wydajno\u015bciowe. <\/p>\n\n\n\n<p>Om\u00f3wimy r\u00f3wnie\u017c zaawansowane aspekty korzystania z k6, takie jak tworzenie rozszerze\u0144, kt\u00f3re s\u0105 niezb\u0119dne do przeprowadzania test\u00f3w, a tak\u017ce poka\u017cemy, jak uruchomi\u0107 i zarz\u0105dza\u0107 obserwowalno\u015bci\u0105 we w\u0142asnych systemach.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Czym jest k6?<\/strong><\/h2>\n\n\n\n<p>Zanim przejdziemy do technicznych aspekt\u00f3w narz\u0119dzia k6, warto wspomnie\u0107, czym jest i jak powsta\u0142o. <\/p>\n\n\n\n<p>W 2016 roku zesp\u00f3\u0142 LoadImpact rozpocz\u0105\u0142 prac\u0119 nad nowym narz\u0119dziem opensource, kt\u00f3re mia\u0142o s\u0142u\u017cy\u0107 jedynie do przeprowadzania test\u00f3w wydajno\u015bciowych. Jednak, jak p\u00f3\u017aniej si\u0119 okaza\u0142o, nie ograniczyli si\u0119 tylko do tego. W 2017 roku LoadImpact zdecydowa\u0142 si\u0119 na udost\u0119pnienie narz\u0119dzia na zasadach licencji open source, a od 2020 roku jest ono w wersji 1.0. Od tego momentu k6 rozwijane jest przez niezale\u017cny zesp\u00f3\u0142&nbsp;developer\u00f3w oraz szerokie community.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-1-scaled.jpg\"><img decoding=\"async\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-1-1024x778.jpg\" alt=\"Rozw\u00f3j narz\u0119dzia k6\" class=\"wp-image-21767\" width=\"493\" height=\"374\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-1-1024x778.jpg 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-1-300x228.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-1-768x583.jpg 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-1-1536x1167.jpg 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-1-2048x1556.jpg 2048w\" sizes=\"(max-width: 493px) 100vw, 493px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 1 Rozw\u00f3j narz\u0119dzia k6<\/figcaption><\/figure>\n\n\n\n<p>K6 jest narz\u0119dziem generuj\u0105cym obci\u0105\u017cenie na potrzeby test\u00f3w wydajno\u015bciowych. Podobnie jak NeoLoad, jMeter, Gatling czy Locust pozwala na wygenerowanie niemal dowolnej ilo\u015bci transakcji na sekund\u0119, a przez to symulowanie zachowania u\u017cytkownik\u00f3w aplikacji webowych czy mobilnych. \u015awietnie te\u017c sprawdza si\u0119 jako narz\u0119dzie do test\u00f3w API. <\/p>\n\n\n\n<p>K6 w standardzie pozwala na pe\u0142n\u0105 integracj\u0119 uruchamiania test\u00f3w z procesem CI\/CD z u\u017cyciem takich narz\u0119dzi jak Jenkins, TeamCity, Bamboo i wiele innych. Dodatkowo, u\u017cywaj\u0105c gotowych konwerter\u00f3w, mo\u017cemy wykorzystywa\u0107 w testach wydajno\u015bciowych wcze\u015bniej przygotowane skrypty do test\u00f3w API pochodz\u0105cych m.in.: z Postman. <\/p>\n\n\n\n<p>Jednak tym, co wyr\u00f3\u017cnia k6 spo\u015br\u00f3d innych narz\u0119dzi do przeprowadzania test\u00f3w wydajno\u015bciowych, jest <strong>mo\u017cliwo\u015b\u0107 dog\u0142\u0119bnej analizy sieci, przeprowadzania test\u00f3w funkcjonalnych, a nawet chaos test\u00f3w<\/strong>. Dzi\u0119ki temu dost\u0119pne staje si\u0119 proste utrzymywanie jednego frameworka do ka\u017cdej cz\u0119\u015bci zwi\u0105zanej z testowaniem, co umo\u017cliwia rozw\u00f3j w wielu obszarach r\u00f3wnocze\u015bnie. <\/p>\n\n\n\n<p>Warto jednak pami\u0119ta\u0107, \u017ce g\u0142\u00f3wnym celem narz\u0119dzia k6 jest przeprowadzanie test\u00f3w wydajno\u015bciowych. Dlatego zesp\u00f3\u0142 k6 skupia si\u0119 szczeg\u00f3lnie na obs\u0142udze protoko\u0142u HTTP, websockets oraz zbieraniu metryk, kt\u00f3re cz\u0119sto s\u0105 pomijane w innych narz\u0119dziach.<\/p>\n\n\n\n<p>S\u0105 to miary takie jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>czas oczekiwania na dost\u0119p do wolnego slotu TCP,<\/li>\n\n\n\n<li>czas sp\u0119dzony na handshake sesji TLS,<\/li>\n\n\n\n<li>czas oczekiwania na odpowied\u017a od zdalnego hosta (time to first byte).<\/li>\n<\/ul>\n\n\n\n<p>Poprawne wykorzystanie tych danych w po\u0142\u0105czeniu z integracj\u0105 z innymi narz\u0119dziami pozwala na <strong>bardziej zaawansowan\u0105 analiz\u0119 aplikacji.<\/strong> <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>K6 Cloud vs k6 Open Source<\/strong><\/h2>\n\n\n\n<p>k6 wyst\u0119puje w dw\u00f3ch wersjach \u2013 open source oraz Cloud. W artyku\u0142ach skupi\u0119 si\u0119 na cz\u0119\u015bci open source, poniewa\u017c w obecnej formie jest ona <strong>wystarczaj\u0105ca do pracy w dojrza\u0142ym projekcie<\/strong>.<\/p>\n\n\n\n<p>Decyduj\u0105c si\u0119 na korzystanie z wersji Cloud, nale\u017cy pami\u0119ta\u0107 o pewnych ograniczeniach, kt\u00f3re mog\u0105 okaza\u0107 si\u0119 trudne do przeskoczenia. Korzy\u015bci\u0105 jest fakt, \u017ce po zalogowaniu otrzymujemy skonfigurowane \u015brodowisko, w pe\u0142ni gotowe do przeprowadzenia test\u00f3w. Jest to interesuj\u0105ce rozwi\u0105zanie, szczeg\u00f3lnie gdy musimy szybko wygenerowa\u0107 niewielkie obci\u0105\u017cenie i \u0142atwo przeanalizowa\u0107 wyniki test\u00f3w. <\/p>\n\n\n\n<p>Pozosta\u0142e zalety Clouda, kt\u00f3re zosta\u0142y wymienione na stronie producenta w por\u00f3wnaniu do wersji open source, mo\u017cna zast\u0105pi\u0107 darmowymi alternatywami. Na przyk\u0142ad:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>do wizualizacji danych mo\u017cemy u\u017cy\u0107 Grafany,<\/li>\n\n\n\n<li>do test\u00f3w rozproszonych (distributed testing) mo\u017cemy skorzysta\u0107 z rozszerzenia xk6-operator,<\/li>\n\n\n\n<li>a je\u015bli chodzi o automatyczn\u0105 bramk\u0119 jako\u015bci, skorzystamy z keptna.<\/li>\n<\/ul>\n\n\n\n<p><strong>K6 Cloud jest obecnie wersj\u0105 p\u0142atn\u0105<\/strong>, a koszty mog\u0105 by\u0107 kluczowe w przypadku startup\u00f3w. Ponadto, generowane, maksymalne obci\u0105\u017cenie ma swoje ograniczenia, co mo\u017ce okaza\u0107 si\u0119 niewystarczaj\u0105ce w przypadku wielkich projekt\u00f3w.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-2.png\"><img decoding=\"async\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-2-1024x519.png\" alt=\"Widok panelu g\u0142\u00f3wnego K6 Cloud \" class=\"wp-image-21772\" width=\"836\" height=\"423\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-2-1024x519.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-2-300x152.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-2-768x389.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-2-1536x779.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-2.png 1828w\" sizes=\"(max-width: 836px) 100vw, 836px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 2 Widok panelu g\u0142\u00f3wnego K6 Cloud<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>A tool that developers could love in the 21st century \u2013 co to oznacza?<\/strong><\/h2>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>A tool that developers could love in the 21st century<\/em><\/p>\n<\/blockquote>\n\n\n\n<p>Takimi s\u0142owami developerzy k6 podsumowuj\u0105 swoj\u0105 prac\u0119 nad narz\u0119dziem. Pomy\u015blmy nad tym chwil\u0119 d\u0142u\u017cej. Aby zrozumie\u0107, o co dok\u0142adnie chodzi, warto przeanalizowa\u0107 dwa podej\u015bcia, kt\u00f3re kszta\u0142tuj\u0105 si\u0119 na przestrzeni ostatnich kilku lat.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Podej\u015bcie pierwsze<\/strong><\/h3>\n\n\n\n<p>Pierwszym podej\u015bciem jest rezygnacja z tradycyjnych, nieco prymitywnych, form test\u00f3w wydajno\u015bciowych. W takim wariancie firma jednorazowo lub raz na kilka miesi\u0119cy zatrudnia Test Engineera odpowiedzialnego za przygotowanie i wykonanie skrypt\u00f3w, a ca\u0142a analiza i ocena ryzyka spoczywa po stronie Developer\u00f3w. To ogromny b\u0142\u0105d, poniewa\u017c wydajno\u015b\u0107 aplikacji powinna by\u0107 sprawdzana na bie\u017c\u0105co przy ka\u017cdym wdro\u017ceniu. Ponadto, utrzymywanie scenariuszy testowych, CI\/CD oraz analiza system\u00f3w obserwowalno\u015bci, to praca na pe\u0142noetatowym stanowisku. Wymaga to od Performance Testera posiadania specyficznych umiej\u0119tno\u015bci oraz szerokiej wiedzy z wielu obszar\u00f3w.<\/p>\n\n\n\n<p>Wy\u017cej opisane podej\u015bcie jest znane jako \u201e<a href=\"https:\/\/sii.pl\/blog\/z-pamietnika-inzyniera-wydajnosci\/?category=testowanie&amp;tag=autoamtyzacja-testow,inzynieria-wydajnosci,sciezki-karier,testing,testy-wydajnosci\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">In\u017cynieria wydajno\u015bci<\/a>\u201d. W ramach tej metodyki, <a href=\"https:\/\/sii.pl\/oferta\/testing-i-kontrola-jakosci\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Sii opracowa\u0142o nowatorsk\u0105 strategi\u0119 test\u00f3w wydajno\u015bciowych<\/a>, znan\u0105 jako <strong>Testy Wydajno\u015bciowe Nowej Generacji<\/strong> (Next Generation Performance Testing).<\/p>\n\n\n\n<p>Zak\u0142ada ona elastyczne podej\u015bcie do projekt\u00f3w i proces\u00f3w wytw\u00f3rczych, pe\u0142n\u0105 automatyzacj\u0119 ca\u0142ego procesu test\u00f3w wydajno\u015bciowych oraz indywidualne podej\u015bcie, dopasowane do u\u017cywanych technologii. Wszystko to osi\u0105gni\u0119to dzi\u0119ki bliskiej wsp\u00f3\u0142pracy z liderami bran\u017cy test\u00f3w wydajno\u015bciowych, takimi jak Tricentis, Dynatrace i Microsoft.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Podej\u015bcie drugie<\/strong><\/h3>\n\n\n\n<p>Drugie z podej\u015b\u0107, kt\u00f3re kszta\u0142tuj\u0105 si\u0119 na przestrzeni lat, to <a href=\"https:\/\/sii.pl\/blog\/wyszukiwarka\/infrastruktura%20jako%20kod\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Infrastructure as Code<\/a>. Polega ono na zarz\u0105dzaniu i dostarczaniu infrastruktury za pomoc\u0105 kodu zamiast poprzez procesy manualne. Obejmuje to zar\u00f3wno wdra\u017canie nowych wersji aplikacji, jak i testowanie.<\/p>\n\n\n\n<p>Jednak\u017ce, wykorzystanie klasycznych narz\u0119dzi do test\u00f3w wydajno\u015bciowych, takich jak np. JMeter, nie wpisuje si\u0119 w t\u0119 konwencj\u0119. Skrypty w nim pisane s\u0105 w formacie XML, co utrudnia przegl\u0105d kodu i spowalnia proces dostarczania skrypt\u00f3w. W praktyce skrypty nie s\u0105 dostarczane jako kod, poniewa\u017c do ich edycji potrzebne jest GUI, co utrudnia wdro\u017cenie automatycznego testowania w CI\/CD. Ponadto, dla wi\u0119kszych zespo\u0142\u00f3w problemem jest utrzymanie sp\u00f3jno\u015bci skrypt\u00f3w po wprowadzeniu kilku zmian r\u00f3wnocze\u015bnie. <\/p>\n\n\n\n<p>Aby rozwi\u0105za\u0107 te wyzwania, zesp\u00f3\u0142 k6 opracowa\u0142 wiele innowacyjnych rozwi\u0105za\u0144. W\u015br\u00f3d nich znajduje si\u0119:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>mo\u017cliwo\u015b\u0107 dodawania Service Level Objective (SLO) bezpo\u015brednio w skrypcie,<\/li>\n\n\n\n<li>integracja z r\u00f3\u017cnymi narz\u0119dziami do monitorowania systemu, <\/li>\n\n\n\n<li>zaawansowane opcje integracji z CI\/CD.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-3.png\"><img decoding=\"async\" width=\"1024\" height=\"599\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-3-1024x599.png\" alt=\"Kodyfikowanie SLO\" class=\"wp-image-21775\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-3-1024x599.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-3-300x175.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-3-768x449.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-3-1536x898.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-3.png 1758w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 3 Kodyfikowanie SLO<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Perspektywy rozwoju narz\u0119dzia k6<\/strong><\/h2>\n\n\n\n<p>Wa\u017cnym aspektem, kt\u00f3ry nale\u017cy wzi\u0105\u0107 pod uwag\u0119 przy wyborze narz\u0119dzia do projektu, jest wsparcie spo\u0142eczno\u015bci oraz zesp\u00f3\u0142 developerski odpowiedzialny za rozw\u00f3j narz\u0119dzia. Dlaczego jest to tak istotne? Istnieje ryzyko, \u017ce projekt zostanie porzucony z dnia na dzie\u0144 (jak np. w przypadku Pylot) lub przestan\u0105 by\u0107 udost\u0119pniane nowe wersje. Niestety, takie sytuacje cz\u0119sto wyst\u0119puj\u0105 w przypadku projekt\u00f3w open source. Dlatego patrz\u0119 bardziej przychylnie na narz\u0119dzia, kt\u00f3re s\u0105 w pe\u0142ni lub cz\u0119\u015bciowo p\u0142atne. Ich przyk\u0142adem s\u0105 m.in.: NeoLoad, NBomber czy Artillery. Jednak na nich skupimy si\u0119 w oddzielnym artykule.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Grafan Labs<\/strong><\/h3>\n\n\n\n<p>Aby zda\u0107 sobie spraw\u0119 z tego, jak wielkim przedsi\u0119wzi\u0119ciem jest k6, musimy cofn\u0105\u0107&nbsp;si\u0119 jeszcze na chwil\u0119 do jego historii. Kluczowe jest dla nas to, \u017ce od czerwca 2021 roku k6 jest rozwijane pod skrzyd\u0142ami Grafana Labs. S\u0105 to specjali\u015bci z obszar\u00f3w monitorowania i obserwowalno\u015bci system\u00f3w. Ich flagowym narz\u0119dziem jest Grafana odpowiedzialna za wizualizacj\u0119 danych. Projekty warte wyr\u00f3\u017cnienia to te\u017c: Loki, Mimir oraz Phlare.<\/p>\n\n\n\n<p>Opr\u00f3cz nich, Grafana Labs r\u00f3wnie\u017c anga\u017cuje si\u0119 w rozwijanie innych projekt\u00f3w open source, takich jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prometheus \u2013 gromadzenie i przechowywanie metryk w seriach czasu,<\/li>\n\n\n\n<li>Cortex \u2013 skalowalne magazyny metryk,<\/li>\n\n\n\n<li>Jaeger \u2013 rozproszone \u015bledzenie.<\/li>\n<\/ul>\n\n\n\n<p>Te projekty s\u0105 cz\u0119\u015bci\u0105 szerszego ekosystemu narz\u0119dzi monitoringu i analizy danych, cz\u0119sto wykorzystywanych razem z Grafan\u0105. <\/p>\n\n\n\n<p>To wszystko sk\u0142ania mnie do przekonania, \u017ce zaanga\u017cowanie tak du\u017cego gracza w dziedzinie monitorowania system\u00f3w w rozw\u00f3j narz\u0119dzia do test\u00f3w wydajno\u015bci jest trafn\u0105 decyzj\u0105, kt\u00f3ra <strong>mo\u017ce przynie\u015b\u0107 rewolucyjne zmiany w obszarze wydajno\u015bci.<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Kierunek rozwoju<\/strong><\/h3>\n\n\n\n<p>Innym, istotnym aspektem jest kierunek, w kt\u00f3rym rozwija si\u0119 samo narz\u0119dzie. Nie ogranicza si\u0119 ono jedynie do mierzenia i analizy wydajno\u015bci aplikacji, ale zosta\u0142o <strong>rozszerzone o mo\u017cliwo\u015b\u0107 wykonywania test\u00f3w funkcjonalnych, a nast\u0119pnie Chaos test\u00f3w<\/strong>. Pocz\u0105tkowo by\u0142y to oddzielne projekty, ale po wielu miesi\u0105cach pr\u00f3b i b\u0142\u0119d\u00f3w zdecydowano si\u0119 je w\u0142\u0105czy\u0107 do podstawowej dokumentacji narz\u0119dzia. Jest to istotne, poniewa\u017c wprowadza interesuj\u0105cy kierunek rozwoju wsp\u00f3\u0142czesnych tester\u00f3w jako\u015bci (QA) oraz ich dotychczasowej pracy. <\/p>\n\n\n\n<p>Charakter przeprowadzania test\u00f3w wydajno\u015bciowych oraz test\u00f3w chaosu rozwija si\u0119 w kierunku pe\u0142nej automatyzacji i integracji z procesami ci\u0105g\u0142ych integracji w zgodzie z praktyk\u0105 \u201eshift left\u201d. Jest to kluczowe, poniewa\u017c taki kierunek skutecznie poszerza kompetencje tester\u00f3w wydajno\u015bci o wiedz\u0119 zar\u00f3wno z obszaru DevOps, jak i architektury aplikacji. W tym momencie <strong>QA<\/strong> przestaje by\u0107 osob\u0105 odpowiedzialn\u0105 za przeprowadzanie test\u00f3w jedynie na ko\u0144cowym etapie wdro\u017cenia aplikacji, a zamiast tego <strong>zaczyna zautomatyzowan\u0105 analiz\u0119 ju\u017c na wczesnych jej etapach.<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Love hate relationship, czyli zalety i wady k6<\/strong><\/h2>\n\n\n\n<p><strong>K6 wyr\u00f3\u017cnia si\u0119 kilkoma zaletami<\/strong>, takimi jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>niewielki pr\u00f3g wej\u015bcia,<\/li>\n\n\n\n<li>zdolno\u015b\u0107 do integracji z r\u00f3\u017cnymi us\u0142ugami firm trzecich,<\/li>\n\n\n\n<li>wsparcie ze strony spo\u0142eczno\u015bci i do\u015bwiadczonego zespo\u0142u deweloper\u00f3w.<\/li>\n<\/ul>\n\n\n\n<p>Ponadto, dzi\u0119ki wykorzystaniu j\u0119zyka <strong>JavaScript<\/strong> do pisania scenariuszy, k6 zapewnia \u0142atwo\u015b\u0107 zrozumienia i pozwala na budow\u0119 przyjaznego frameworku do testowania wydajno\u015bci aplikacji. Dodatkowo, wykorzystanie <strong>j\u0119zyka Go<\/strong> jako podstawy narz\u0119dzia k6 przek\u0142ada si\u0119 na wysok\u0105 wydajno\u015b\u0107, umo\u017cliwiaj\u0105c przeprowadzanie test\u00f3w z du\u017cym obci\u0105\u017ceniem nawet przy ograniczonych zasobach.<\/p>\n\n\n\n<p>Jednak\u017ce, jak ka\u017cde narz\u0119dzie, <strong>k6 ma tak\u017ce swoje wady.<\/strong> <\/p>\n\n\n\n<p>Jedn\u0105 z napotkanych przeze mnie wad jest <strong>niestabilno\u015b\u0107 cz\u0119\u015bci z rozszerze\u0144 stworzonych przez spo\u0142eczno\u015b\u0107<\/strong>. Zrozumia\u0142e jest, \u017ce zesp\u00f3\u0142 deweloperski nie jest w stanie zapewni\u0107 pe\u0142nego wsparcia dla ka\u017cdego protoko\u0142u czy integracji k6 z mniej popularnymi narz\u0119dziami. To mo\u017ce prowadzi\u0107 do niestabilno\u015bci i du\u017cego stopnia zawodno\u015bci niekt\u00f3rych z rozszerze\u0144. Dodatkowo, je\u015bli zdecydujemy si\u0119 na jednoczesne u\u017cycie wielu z nich, istnieje du\u017ce prawdopodobie\u0144stwo, \u017ce nie b\u0119d\u0105 one kompatybilne ze wzgl\u0119du na wykorzystywane pod pow\u0142ok\u0105 biblioteki Go (k6 oraz jego rozszerzenia s\u0105 napisane w tym j\u0119zyku). <\/p>\n\n\n\n<p>Kolejn\u0105 wad\u0105 jest <strong>brak wsparcia dla ma\u0142o znanych protoko\u0142\u00f3w<\/strong>. Pomimo ogromnego zainteresowania spo\u0142eczno\u015bci k6, jest ono relatywnie nowym narz\u0119dziem w por\u00f3wnaniu do alternatyw takich jak JMeter, Locust czy NeoLoad. Wyb\u00f3r mniej dojrza\u0142ego oprogramowania mo\u017ce utrudni\u0107 rozbudow\u0119 frameworku, integracje i, w skrajnych przypadkach, wymusi\u0107 zmian\u0119 narz\u0119dzia oraz refaktoryzacj\u0119 test\u00f3w. Osobi\u015bcie uwa\u017cam, \u017ce k6 doskonale sprawdza si\u0119 w przypadku <strong>prostych projekt\u00f3w lub tych opartych g\u0142\u00f3wnie na protokole HTTP<\/strong>. Jednak\u017ce, je\u015bli chodzi o zast\u0105pienie narz\u0119dzi takich jak <a href=\"https:\/\/sii.pl\/blog\/wyszukiwarka\/playwright\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Playwright (do test\u00f3w funkcjonalnych)<\/a> czy LitmusChaos (do chaos test\u00f3w) przy u\u017cyciu k6, konieczne mo\u017ce okaza\u0107 si\u0119 poczekanie jeszcze kilka miesi\u0119cy, a nawet lat.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Alternatywy?<\/strong><\/h2>\n\n\n\n<p>Om\u00f3wili\u015bmy ju\u017c ca\u0142\u0105 metodologi\u0119 i wizj\u0119, kt\u00f3re kryj\u0105 si\u0119 za narz\u0119dziem k6. Wiemy, jakie s\u0105 perspektywy jego rozwoju oraz jakie posiada mo\u017cliwo\u015bci i ograniczenia. Na rynku trudno jest znale\u017a\u0107 alternatywy, kt\u00f3re pasowa\u0142yby do obecnych trend\u00f3w. Ponadto, niewiele narz\u0119dzi jest na tyle stabilnych, aby sprosta\u0107 wymaganiom zar\u00f3wno du\u017cych korporacji, jak i ma\u0142ych startup\u00f3w. W zwi\u0105zku z tym, poszukiwanie idealnego narz\u0119dzia trzeba prowadzi\u0107 tam, gdzie istnieje niezawodno\u015b\u0107 i nieograniczone mo\u017cliwo\u015bci u\u017cycia. Gdzie wi\u0119c mo\u017cna znale\u017a\u0107 ten \u201e\u015awi\u0119ty Graal\u201d? <\/p>\n\n\n\n<p>Jedn\u0105 z opcji jest<strong> NeoLoad od firmy Tricentis<\/strong>. Poniewa\u017c nie jest to narz\u0119dzie open source, unikniemy sytuacji, w kt\u00f3rych natkniemy si\u0119 na niestabilno\u015b\u0107 lub brak wsparcia dla integracji z protoko\u0142ami u\u017cywanymi we wsp\u00f3\u0142czesnych projektach. Co wi\u0119cej, na uznanie zas\u0142uguje fakt, \u017ce NeoLoad jest rozwijane nieprzerwanie od 2005 roku, a jego design umo\u017cliwia do\u015bwiadczonemu in\u017cynierowi migracj\u0119 z powszechnie stosowanego JMetera w zaledwie jeden dzie\u0144.<\/p>\n\n\n\n<p>Migracja do NeoLoad dla niejednego klienta okaza\u0142a si\u0119 bardzo dobr\u0105 inwestycj\u0105, kt\u00f3ra w d\u0142u\u017cszej perspektywie przynios\u0142a profity w postaci szybszego i \u0142atwiejszego wykonywania test\u00f3w oraz znacznie mniejsze nak\u0142ady na utrzymanie skrypt\u00f3w.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-4.png\"><img decoding=\"async\" width=\"1024\" height=\"502\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-4-1024x502.png\" alt=\"Strona g\u0142\u00f3wna Tricentis NeoLoad\" class=\"wp-image-21777\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-4-1024x502.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-4-300x147.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-4-768x377.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-4-1536x754.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/zalacznik-4.png 1828w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 4 Strona g\u0142\u00f3wna Tricentis NeoLoad<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Konkluzja<\/strong><\/h2>\n\n\n\n<p><strong>K6 wygrywa z wszystkimi innymi narz\u0119dziami<\/strong> dost\u0119pnymi na rynku, kt\u00f3re opieraj\u0105 si\u0119 na dostarczaniu test\u00f3w jako kodu (takimi jak JMeter, Artillery czy Gatling). Du\u017ce wsparcie ze strony spo\u0142eczno\u015bci sprawia, \u017ce k6 zajmuje wysok\u0105 pozycj\u0119, przewy\u017cszaj\u0105c zar\u00f3wno Locust jak i Gatlinga. Ponadto, dost\u0119pno\u015b\u0107 szerokiego spektrum rozszerze\u0144 pozwala na elastyczne i spersonalizowane podej\u015bcie do projekt\u00f3w. Obecnie na stronie k6 dost\u0119pnych jest ponad 73 rozszerze\u0144. Dla por\u00f3wnania, JMeter posiada ich 107. To \u015bwiadczy o zainteresowaniu i zaanga\u017cowaniu spo\u0142eczno\u015bci, kt\u00f3ra wspiera rozw\u00f3j k6. <\/p>\n\n\n\n<p>Dodatkowo, bliska wsp\u00f3\u0142praca z firm\u0105 Grafana Labs przyczyni\u0142a si\u0119 do znacznego rozwoju narz\u0119dzia w wielu obszarach testowania. To z kolei poskutkowa\u0142o promowaniem In\u017cynierii Wydajno\u015bci, wspieranej bezpo\u015brednio przez ekspert\u00f3w z zespo\u0142u w Sii.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Co przyniesie nam przysz\u0142o\u015b\u0107?<\/strong><\/h2>\n\n\n\n<p>W dzisiejszych czasach zakres kompetencji in\u017cyniera ds. wydajno\u015bci stale si\u0119 poszerza. Dlatego, aby sprosta\u0107 temu wyzwaniu, konieczne jest nie tylko wybranie odpowiedniego narz\u0119dzia, ale r\u00f3wnie\u017c opracowanie metodologii, kt\u00f3ra spe\u0142nia obecne wymagania projektowe. R\u0119czne uruchamianie test\u00f3w i wielokrotne analizowanie tych samych danych staje si\u0119 przestarza\u0142e na rzecz pe\u0142nej automatyzacji, testowania oprogramowania we wczesnych fazach projektu i dostarczania ca\u0142o\u015bci jako kodu.<\/p>\n\n\n\n<p>Nie jeste\u015bmy w stanie przewidzie\u0107, jakie zmiany przyniesie przysz\u0142o\u015b\u0107, ale jedno jest pewne \u2013 kszta\u0142tuj\u0105ce si\u0119 nowe podej\u015bcia w dziedzinie test\u00f3w wydajno\u015bci <strong>b\u0119d\u0105 rewolucyjne i wywr\u00f3c\u0105 ten obszar do g\u00f3ry nogami.<\/strong><\/p>\n\n\n\n<p>K6 \u015bwietnie wpisuje si\u0119 w koncept opisany powy\u017cej ze wzgl\u0119du na dostarczanie test\u00f3w jako kodu i projektowanie scenariuszy testowych z za\u0142o\u017ceniem wielokrotnego uruchomienia. Wszystko to dope\u0142nia w pe\u0142ni zautomatyzowana analiza wynik\u00f3w test\u00f3w oraz bliska wsp\u00f3\u0142praca z firm\u0105 Grafana Labs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u0179r\u00f3d\u0142a<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.tricentis.com\/products\/performance-testing-neoload\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >tricentis.com<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/k6.io\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >k6<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.artillery.io\/\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >artillery.io<\/a><a href=\"https:\/\/nbomber.com\/\" class=\"ek-link\" rel=\"nofollow\" > <\/a><\/li>\n\n\n\n<li><a aria-label=\" (opens in a new tab)\" href=\"https:\/\/nbomber.com\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >nbomber.com<\/a><\/li>\n<\/ul>\n\n\n\n<p>***<\/p>\n\n\n\n<p>Je\u015bli chcesz wiedzie\u0107 wi\u0119cej o narz\u0119dziu k6, <a href=\"https:\/\/sii.pl\/blog\/testy-wydajnosciowe-z-k6-korzysci-dla-projektu\/?category=testowanie&amp;tag=k6,przeglad-narzedzi,vlog\" target=\"_blank\" aria-label=\"zobacz koniecznie now\u0105 seri\u0119 vlog\u00f3w (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">zobacz koniecznie now\u0105 seri\u0119 vlog\u00f3w<\/a> przygotowan\u0105 przez naszych ekspert\u00f3w. <\/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;21765&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;4.9&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;4.9\\\/5 ( votes: 7)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Wydajno\u015b\u0107 pod kontrol\u0105 \u2013 co sk\u0142ania mnie do wyboru k6?&quot;,&quot;width&quot;:&quot;136.6&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: 136.6px;\">\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            4.9\/5 ( votes: 7)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>W obecnych czasach, gdy wi\u0119kszo\u015b\u0107 aplikacji internetowych ma miliony u\u017cytkownik\u00f3w na ca\u0142ym \u015bwiecie, kluczowe znaczenie ma ich wydajno\u015b\u0107, failover i &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/wydajnosc-pod-kontrola-co-sklania-mnie-do-wyboru-k6\/\">Continued<\/a><\/p>\n","protected":false},"author":517,"featured_media":21780,"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,1554,1546,1257],"class_list":["post-21765","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-testowanie","tag-k6","tag-tosca","tag-zalety-i-wady","tag-przeglad-narzedzi","tag-testy-wydajnosci"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/05\/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\/21765"}],"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=21765"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/21765\/revisions"}],"predecessor-version":[{"id":22582,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/21765\/revisions\/22582"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/21780"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=21765"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=21765"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=21765"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}