{"id":1578,"date":"2025-08-21T21:59:29","date_gmt":"2025-08-21T19:59:29","guid":{"rendered":"https:\/\/gdynia.wordcamp.org\/2025\/?post_type=wcb_session&#038;p=1578"},"modified":"2025-08-21T22:02:54","modified_gmt":"2025-08-21T20:02:54","slug":"testowanie-z-przygodami-czyli-jak-jeden-plugin-rozwalil-cale-testy-wydajnosciowe-case-study-z-woocommerce","status":"publish","type":"wcb_session","link":"https:\/\/gdynia.wordcamp.org\/2025\/session\/testowanie-z-przygodami-czyli-jak-jeden-plugin-rozwalil-cale-testy-wydajnosciowe-case-study-z-woocommerce\/","title":{"rendered":"Testowanie z przygodami &#8211; czyli jak jeden plugin rozwali\u0142 ca\u0142e testy wydajno\u015bciowe \u2013 case study z WooCommerce"},"content":{"rendered":"\n<p>Testy wydajno\u015bciowe mia\u0142y by\u0107 formalno\u015bci\u0105. Ot, kilka endpoint\u00f3w, zewn\u0119trzna aplikacja do dynamicznych cen i troch\u0119 danych z AWS Lambda. Po 17 sekundach odpowiedzi wszystko przesta\u0142o by\u0107 zabawne. Ten case poka\u017ce, jak jeden zapomniany plugin potrafi zrujnowa\u0107 dzie\u0144, co z tego wynie\u015bli\u015bmy i jak testowa\u0107, \u017ceby nie by\u0142o wstydu.<\/p>\n\n\n\n<p>Prezentacja opowiada prawdziw\u0105 histori\u0119 z projektu e-commerce, gdzie wdra\u017cali\u015bmy dynamiczne ceny sterowane z zewn\u0119trznego systemu. Zanim podpi\u0119li\u015bmy w\u0142a\u015bciw\u0105 integracj\u0119 (kt\u00f3rej stworzenie wymaga\u0142o r\u00f3wnie\u017c sporych koszt\u00f3w), stworzyli\u015bmy prosty symulator na AWS Lambda, kt\u00f3ry generowa\u0142 losowe ceny na potrzeby test\u00f3w wydajno\u015bciowych.<\/p>\n\n\n\n<p>Testy mia\u0142y by\u0107 tylko formalno\u015bci\u0105, a jednak ju\u017c po kilku requestach response time poszybowa\u0142 do 17 sekund. Zacz\u0119\u0142o si\u0119 \u015bledzenie log\u00f3w, profilowanie i analizowanie, gdzie si\u0119 wszystko sypie. Po nitce do k\u0142\u0119bka doszli\u015bmy do przyczyny: pojedynczy plugin zainstalowany kiedy\u015b do developmentu, kt\u00f3ry niepotrzebnie manipulowa\u0142 hookami w ka\u017cdej iteracji testu, co te\u017c by\u0142o tylko charakterystyczne dla kont za\u0142o\u017conych na potrzeby test\u00f3w. Po jego usuni\u0119ciu &#8211; wszystko wr\u00f3ci\u0142o do normalnych 150ms.<\/p>\n\n\n\n<p>W prezentacji opowiem:<br>\u2022 Jak wygl\u0105da\u0142 kontekst projektu i nasza architektura test\u00f3w (WooCommerce + AWS Lambda + pricing microservice, testy k6),<br>\u2022 Jakie narz\u0119dzia i metody pomog\u0142y nam zdiagnozowa\u0107 problem (m.in. query monitor),<br>\u2022 Jakie b\u0142\u0119dy pope\u0142nili\u015bmy w procesie testowania i jak je teraz adresujemy,<br>\u2022 Co ten przyk\u0142ad m\u00f3wi o \u201cniewinnych\u201d pluginach, stagingu i higienie \u015brodowisk dev\/test\/prod.<\/p>\n\n\n\n<p>Chc\u0119, aby ta prezentacja by\u0142a zar\u00f3wno techniczn\u0105 lekcj\u0105, jak i przestrog\u0105 &#8211; ale z przymru\u017ceniem oka.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Testy wydajno\u015bciowe mia\u0142y by\u0107 formalno\u015bci\u0105. Ot, kilka endpoint\u00f3w, zewn\u0119trzna aplikacja do dynamicznych cen i troch\u0119 danych z AWS Lambda. Po 17 sekundach odpowiedzi wszystko przesta\u0142o by\u0107 zabawne. Ten case poka\u017ce, jak jeden zapomniany plugin potrafi zrujnowa\u0107 dzie\u0144, co z tego wynie\u015bli\u015bmy i jak testowa\u0107, \u017ceby nie by\u0142o wstydu. Prezentacja opowiada prawdziw\u0105 histori\u0119 z projektu e-commerce, [&hellip;]<\/p>\n","protected":false},"author":108511,"featured_media":0,"template":"","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_wcpt_session_time":1758966600,"_wcpt_session_duration":1200,"_wcpt_session_type":"session","_wcpt_session_slides":"","_wcpt_session_video":"","_wcpt_speaker_id":[1575],"footnotes":""},"session_track":[32],"session_category":[33],"class_list":["post-1578","wcb_session","type-wcb_session","status-publish","hentry","wcb_track-apl","wcb_session_category-development"],"jetpack_sharing_enabled":true,"session_date_time":{"date":"27 wrze\u015bnia 2025","time":"11:50"},"session_speakers":[{"id":"1575","slug":"mateusz-zadorozny","name":"Mateusz Zadoro\u017cny","link":"https:\/\/gdynia.wordcamp.org\/2025\/speaker\/mateusz-zadorozny\/"}],"session_cats_rendered":"Development","_links":{"self":[{"href":"https:\/\/gdynia.wordcamp.org\/2025\/wp-json\/wp\/v2\/sessions\/1578","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gdynia.wordcamp.org\/2025\/wp-json\/wp\/v2\/sessions"}],"about":[{"href":"https:\/\/gdynia.wordcamp.org\/2025\/wp-json\/wp\/v2\/types\/wcb_session"}],"author":[{"embeddable":true,"href":"https:\/\/gdynia.wordcamp.org\/2025\/wp-json\/wp\/v2\/users\/108511"}],"version-history":[{"count":2,"href":"https:\/\/gdynia.wordcamp.org\/2025\/wp-json\/wp\/v2\/sessions\/1578\/revisions"}],"predecessor-version":[{"id":1581,"href":"https:\/\/gdynia.wordcamp.org\/2025\/wp-json\/wp\/v2\/sessions\/1578\/revisions\/1581"}],"speakers":[{"embeddable":true,"href":"https:\/\/gdynia.wordcamp.org\/2025\/wp-json\/wp\/v2\/speakers\/1575"}],"wp:attachment":[{"href":"https:\/\/gdynia.wordcamp.org\/2025\/wp-json\/wp\/v2\/media?parent=1578"}],"wp:term":[{"taxonomy":"wcb_track","embeddable":true,"href":"https:\/\/gdynia.wordcamp.org\/2025\/wp-json\/wp\/v2\/session_track?post=1578"},{"taxonomy":"wcb_session_category","embeddable":true,"href":"https:\/\/gdynia.wordcamp.org\/2025\/wp-json\/wp\/v2\/session_category?post=1578"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}