{"id":27377,"date":"2024-04-15T05:00:00","date_gmt":"2024-04-15T03:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=27377"},"modified":"2025-01-29T09:43:43","modified_gmt":"2025-01-29T08:43:43","slug":"mabl-narzedzie-do-wieloaspektowego-testowania-aplikacji-wprowadzenie","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/mabl-narzedzie-do-wieloaspektowego-testowania-aplikacji-wprowadzenie\/","title":{"rendered":"Mabl \u2013 narz\u0119dzie do wieloaspektowego testowania aplikacji. Wprowadzenie"},"content":{"rendered":"\n<p>Od d\u0142ugiego czasu narz\u0119dzia no-code i low-code zyskuj\u0105 na popularno\u015bci w ca\u0142ym procesie wytwarzania oprogramowania, od tworzenia aplikacji do testowania ich. Innym rozwi\u0105zaniem wkraczaj\u0105c\u0105 na rynek rozwi\u0105za\u0144 IT jest AI.<\/p>\n\n\n\n<p>Mabl \u0142\u0105czy te zagadnienia w postaci platformy do wieloaspektowego testowania aplikacji. W serii artyku\u0142\u00f3w o tym narz\u0119dziu przedstawi\u0119 jego dzia\u0142anie w praktyce.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Aplikacja<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Low-code<\/strong><\/h3>\n\n\n\n<p>Co to znaczy, \u017ce mabl jest narz\u0119dziem low-code? Ot\u00f3\u017c bazuje ono na redukcji potrzeby pisania skrypt\u00f3w do tworzenia i uruchamiania test\u00f3w, zast\u0119puj\u0105c je interfejsem graficznym, czyli UI. Mabl pod tym wzgl\u0119dem niew\u0105tpliwie wyprzedza konkurencj\u0119, oferuj\u0105c nowoczesny i prosty do zrozumienia interfejs.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image1.png\"><img decoding=\"async\" width=\"1024\" height=\"605\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image1-1024x605.png\" alt=\"Przyk\u0142ad Trainera test\u00f3w UI\" class=\"wp-image-27378\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image1-1024x605.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image1-300x177.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image1-768x454.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image1.png 1349w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 1 Przyk\u0142ad Trainera test\u00f3w UI<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image2.png\"><img decoding=\"async\" width=\"1024\" height=\"681\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image2-1024x681.png\" alt=\"Przyk\u0142ad Trainera test\u00f3w API\" class=\"wp-image-27380\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image2-1024x681.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image2-300x200.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image2-768x511.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image2.png 1195w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 2 Przyk\u0142ad Trainera test\u00f3w API<\/figcaption><\/figure>\n\n\n\n<p>W takim razie \u2013 gdzie jest ten low-code, skoro na razie nie musimy pisa\u0107 \u017cadnego kodu? Ot\u00f3\u017c mabl daje nam mo\u017cliwo\u015b\u0107 zastosowania kodu napisanego w JavaScript\u00a0dla skomplikowanych lub nieoczywistych rozwi\u0105za\u0144.<\/p>\n\n\n\n<p>Dla test\u00f3w UI mo\u017cemy zastosowa\u0107 \u201e<strong>snippety<\/strong>\u201d. S\u0105&nbsp;to funkcje, w kt\u00f3rych wykonujemy interesuj\u0105ce nas dzia\u0142ania. Dobrym przyk\u0142adem akcji, jak\u0105 mo\u017cemy wykona\u0107, jest stworzenie niestandardowego formatu daty, kt\u00f3ry jest wymagany w jednym z p\u00f3l na stronie internetowej, kt\u00f3r\u0105 testujemy. &nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image3.png\"><img decoding=\"async\" width=\"1004\" height=\"662\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image3.png\" alt=\"Przyk\u0142ad Snippet Trainera\" class=\"wp-image-27382\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image3.png 1004w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image3-300x198.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image3-768x506.png 768w\" sizes=\"(max-width: 1004px) 100vw, 1004px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 3 Przyk\u0142ad Snippet Trainera<\/figcaption><\/figure>\n\n\n\n<p>Dla test\u00f3w API kod mo\u017cemy zamieszcza\u0107 w wielu miejscach, zale\u017cnie od naszych potrzeb.<\/p>\n\n\n\n<p>Dzielimy je ze wzgl\u0119du na:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>liczb\u0119 test\u00f3w, kt\u00f3rych dotycz\u0105 (dla wszystkich lub dla ka\u017cdego testu oddzielnie),<\/li>\n\n\n\n<li>moment wykonania (przed wys\u0142aniem zapytania lub po jego wys\u0142aniu).<\/li>\n<\/ul>\n\n\n\n<p>Dzi\u0119ki temu, mo\u017cemy w dynamiczny spos\u00f3b korzysta\u0107 z warto\u015bci, kt\u00f3re otrzymujemy lub wysy\u0142amy w zapytaniach.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image4.png\"><img decoding=\"async\" width=\"961\" height=\"614\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image4.png\" alt=\"Kod JS\u2013owy przed wszystkim zapytaniami\" class=\"wp-image-27384\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image4.png 961w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image4-300x192.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image4-768x491.png 768w\" sizes=\"(max-width: 961px) 100vw, 961px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 4 Kod JS\u2013owy przed wszystkim zapytaniami<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Artificial Intelligence<\/strong><\/h2>\n\n\n\n<p>AI jest w tym momencie gor\u0105cym tematem w \u015bwiecie IT. Mabl jest tego w pe\u0142ni \u015bwiadom, dlatego w przeciwie\u0144stwie do innych podobnych narz\u0119dzi nie traktuje AI jako dodatku, ale jako <strong>integraln\u0105 cz\u0119\u015b\u0107&nbsp;systemu.<\/strong> Stosuje on sztuczn\u0105&nbsp;inteligencj\u0119 <strong>w celu poprawy jako\u015bci, utrzymywalno\u015bci i szybko\u015bci test\u00f3w.<\/strong><\/p>\n\n\n\n<p>Uzyskuje to dzi\u0119ki 3 elementom:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Automatycznemu leczeniu <\/strong>(ang. Auto-healing) \u2013 dla krok\u00f3w, kt\u00f3re wykorzystuj\u0105 elementy strony internetowej, mabl uczy si\u0119\u00a0atrybut\u00f3w danego elementu i podczas odpalania na chmurze, kiedy nie jest w stanie go ponownie znale\u017a\u0107\u00a0na skutek jakie\u015b zmiany, stara si\u0119\u00a0sam uleczy\u0107 test poprzez znalezienie nowego silnego powi\u0105zania.<\/li>\n\n\n\n<li><strong>Inteligentnemu czekaniu <\/strong>(ang. Intelligent Wait) \u2013 mabl przechowuje informacj\u0119 o czasie i stabilno\u015bci poprzednich egzekucji testu, dzi\u0119ki czemu ucz\u0105c si\u0119, jest w stanie zbalansowa\u0107 czas, jaki jest potrzebny na wykonywania poszczeg\u00f3lnych akcji na stronie. Przek\u0142ada si\u0119 to\u00a0na redukcj\u0119 czasu potrzebnego na wykonanie testu przy jednoczesnym zachowaniu jego stabilno\u015bci.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image5.png\"><img decoding=\"async\" width=\"612\" height=\"384\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image5.png\" alt=\"Przyk\u0142ad inteligentnego czekania\" class=\"wp-image-27386\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image5.png 612w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image5-300x188.png 300w\" sizes=\"(max-width: 612px) 100vw, 612px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 5 Przyk\u0142ad inteligentnego czekania<\/figcaption><\/figure>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>Nauce wizualnej zmiany <\/strong>(ang. Visual change learning) \u2013 za pomoc\u0105 uczenia maszynowego tworzony jest dynamiczny model zmian wizualnych, kt\u00f3ry niweluje wp\u0142yw wszystkich dynamicznych element\u00f3w strony (jak banery z reklamami) i powie nam o wszelkich istotnych zmianach na naszej stronie.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Rodzaje test\u00f3w<\/strong><\/h2>\n\n\n\n<p>Mabl umo\u017cliwia tworzenie wielu rodzaj\u00f3w test\u00f3w. Nie tylko skupia si\u0119 na testach funkcjonalnych wykonywanych na poziomach UI i API, ale r\u00f3wnie\u017c na testach niefunkcjonalnych waliduj\u0105cych przyst\u0119pno\u015b\u0107 i wydajno\u015b\u0107 testowanego systemu. Informacje pozwalaj\u0105ce ocenia\u0107 metryki zwi\u0105zane z rzeczami niefunkcjonalnymi, s\u0105&nbsp;zbierane zar\u00f3wno podczas wykonywania test\u00f3w funkcjonalnych oraz podczas stworzonych dedykowanych test\u00f3w niefunkcjonalnych.<\/p>\n\n\n\n<p>Poni\u017cej, przedstawi\u0119\u00a0wszystkie rodzaje test\u00f3w, mo\u017cliwych do stworzenia za pomoc\u0105\u00a0mabl.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Testy UI<\/strong><\/h3>\n\n\n\n<p>Trainera test\u00f3w UI mo\u017cemy wykorzysta\u0107 na kilka spos\u00f3b. Jednym z nich jest <strong>pisanie test\u00f3w UI End-to-end<\/strong>, gdzie podczas nagrywania przechodzimy przez poszczeg\u00f3lne widoki zwi\u0105zane z funkcjonalno\u015bci\u0105, wykonujemy akcj\u0119, kt\u00f3re p\u00f3\u017aniej sprawdzimy asercjami. Natomiast przy skorzystaniu z dodatkowego modu\u0142u do test\u00f3w u\u017cyteczno\u015bci, jeste\u015bmy w stanie sprawdza\u0107 stan strony, jak i jej element\u00f3w pod wzgl\u0119dem przyst\u0119pno\u015bci.<\/p>\n\n\n\n<p>Kolejnym rodzajem test\u00f3w UI s\u0105 <strong>testy wizualne<\/strong>, gdzie test uruchamia dan\u0105 stron\u0119 internetow\u0105 i bazuj\u0105c na wcze\u015bniej przechowywanej informacji o jej wygl\u0105dzie, sprawdza czy jej interfejs graficzny nie uleg\u0142 zmianie.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Testy API<\/strong><\/h3>\n\n\n\n<p>W testach API mo\u017cemy przyj\u0105\u0107 dwie strategie testowania:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Sprawdzanie \u015bcie\u017cek poprzez wywo\u0142ywanie kolejnych powi\u0105zanych ze sob\u0105&nbsp;zapyta\u0144 API,<\/li>\n\n\n\n<li>Weryfikacja pojedynczego endpointa ze wzgl\u0119du na r\u00f3\u017cne parametry wej\u015bciowe.<\/li>\n<\/ol>\n\n\n\n<p>Jeste\u015bmy w stanie stworzy\u0107 takie dwa podej\u015bcia ze wzgl\u0119du na to, \u017ce mabl <strong>nie sko\u0144czy egzekucji testu<\/strong> przy wyst\u0105pieniu b\u0142\u0119d\u00f3w w odpowiedziach na wywo\u0142ane zapytania, o ile mu tego nie zlecimy. Pozwala to na grupowanie test\u00f3w dla danych zapyta\u0144, jak i redukcj\u0119 potrzebnych zasob\u00f3w na uruchomienie wielu test\u00f3w.\u00a0\u00a0<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Testy wydajno\u015bciowe<\/strong><\/h3>\n\n\n\n<p>Mabl zbiera informacje o wydajno\u015bci poszczeg\u00f3lnych komponent\u00f3w UI i API, jak i o czasie wykonywania samych test\u00f3w. Informacje te s\u0105&nbsp;wy\u015bwietlane na poszczeg\u00f3lnych wykresach i mo\u017cliwe do filtrowania ze wzgl\u0119du na plan testowy i \u015brodowisko.<\/p>\n\n\n\n<p>Poni\u017cej przedstawi\u0119 ich przyk\u0142ady.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image6.png\"><img decoding=\"async\" width=\"1024\" height=\"390\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image6-1024x390.png\" alt=\"Przyk\u0142ad wydajno\u015bci testu UI lub API\" class=\"wp-image-27388\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image6-1024x390.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image6-300x114.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image6-768x292.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image6-1536x585.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image6-2048x780.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 6 Przyk\u0142ad wydajno\u015bci testu UI lub API<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image7.png\"><img decoding=\"async\" width=\"1024\" height=\"386\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image7-1024x386.png\" alt=\" Przyk\u0142ad wydajno\u015bci zapyta\u0144 API\" class=\"wp-image-27390\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image7-1024x386.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image7-300x113.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image7-768x289.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image7-1536x579.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image7-2048x771.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 7 Przyk\u0142ad wydajno\u015bci zapyta\u0144 API<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image8.png\"><img decoding=\"async\" width=\"1024\" height=\"250\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image8-1024x250.png\" alt=\"Przyk\u0142ad wydajno\u015bci stron\" class=\"wp-image-27393\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image8-1024x250.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image8-300x73.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image8-768x187.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image8-1536x375.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image8-2048x500.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 8 Przyk\u0142ad wydajno\u015bci stron<\/figcaption><\/figure>\n\n\n\n<p>Dodatkowo, za pomoc\u0105&nbsp;jednego z modu\u0142\u00f3w mo\u017cliwe jest stworzenie test\u00f3w wydajno\u015bci, kt\u00f3re b\u0119d\u0105 korzysta\u0107 z wcze\u015bniej napisanych test\u00f3w przegl\u0105darki i\/lub API. Skraca to w znaczny spos\u00f3b czas potrzebny na stworzenie i utrzymanie dedykowanych test\u00f3w wydajno\u015bciowych.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image9.png\"><img decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image9-1024x576.png\" alt=\"Widok dla dodawania test\u00f3w wydajno\u015bciowych\" class=\"wp-image-27395\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image9-1024x576.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image9-300x169.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image9-768x432.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image9-1536x864.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image9-2048x1152.png 2048w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image9-555x312.png 555w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image9-1920x1080.png 1920w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 9 Widok dla dodawania test\u00f3w wydajno\u015bciowych<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Infrastruktura<\/strong><\/h2>\n\n\n\n<p>Jest to narz\u0119dzie dzia\u0142aj\u0105ce przede wszystkim w obr\u0119bie chmury, ale mamy mo\u017cliwo\u015b\u0107&nbsp;uruchamiania test\u00f3w lokalnie. Dzi\u0119ki temu zredukowano trudno\u015b\u0107&nbsp;i koszt potrzebny na zbudowanie skalowalnego systemu do testowania aplikacji.<\/p>\n\n\n\n<p>Na ten moment mabl wspiera takie przegl\u0105darki jak:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Chrome,<\/li>\n\n\n\n<li>Edge (tylko chmura),<\/li>\n\n\n\n<li>Firefox (tylko chmura),<\/li>\n\n\n\n<li>Safari (tylko chmura),<\/li>\n\n\n\n<li>emulacja przegl\u0105darki mobilnej na Chrome dla wszystkich najpopularniejszych urz\u0105dze\u0144.<\/li>\n<\/ul>\n\n\n\n<p>Trwaj\u0105 prace&nbsp;nad umo\u017cliwieniem testowania natywnych aplikacji mobilnych najpierw na emulatorach, a za jaki\u015b czas na rzeczywistych urz\u0105dzeniach. Przewidywane jest wprowadzenie pierwszej wersji jeszcze na pocz\u0105tku tego roku.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Platformy<\/strong><\/h3>\n\n\n\n<p>Mabl oferuje mo\u017cliwo\u015b\u0107 skorzystania z wersji desktopowej jak i przegl\u0105darkowej aplikacji.<\/p>\n\n\n\n<p>Wersje desktopowe s\u0105 dost\u0119pne na platformy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Windows,<\/li>\n\n\n\n<li>Linux,<\/li>\n\n\n\n<li>macOS Intel,<\/li>\n\n\n\n<li>macOS Apple.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Testy r\u00f3wnoleg\u0142e<\/strong><\/h3>\n\n\n\n<p>Bazuj\u0105c na skalowalnej infrastrukturze mabl, mo\u017cliwe jest nielimitowane uruchomienie test\u00f3w r\u00f3wnoleg\u0142ych, zar\u00f3wno na wielu przegl\u0105darkach jak i wielu funkcjonalno\u015bci. Brak ogranicze\u0144 w ilo\u015bci r\u00f3wnoczesnych egzekucji pozwala rozbi\u0107 plany testowe na mniejsze, skupiaj\u0105ce si\u0119 na jednej lub kilku funkcjonalno\u015bciach.<\/p>\n\n\n\n<p>Wprowadza to du\u017co wi\u0119ksz\u0105&nbsp;elastyczno\u015b\u0107 wykona\u0144 test\u00f3w jak i uzyskanie szybszej odpowiedzi&nbsp;zwrotnej z ich wynikami. Kolejn\u0105 zalet\u0105 wynikaj\u0105c\u0105 z tego jest mo\u017cliwo\u015b\u0107 zastosowania powy\u017cszych cech do wdro\u017cenia shift-left (czyli przesuni\u0119cia proces\u00f3w kontroli jako\u015bci na wcze\u015bniejsze etapy wytwarzania oprogramowania). Testy r\u00f3wnoleg\u0142e s\u0105 dost\u0119pne tylko na chmurze, lokalnie wszystkie testy s\u0105 uruchamiane w spos\u00f3b sekwencyjny. &nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Mabl CLI<\/strong><\/h3>\n\n\n\n<p>Uruchamianie test\u00f3w lokalnie ma pewne ograniczenia \u2013 wszystkie pojedyncze testy mo\u017cemy odpali\u0107 z poziomu widoku danego testu. Przedstawia to poni\u017csze zdj\u0119cie.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image10.png\"><img decoding=\"async\" width=\"1024\" height=\"580\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image10-1024x580.png\" alt=\"Przyk\u0142ad uruchomienia testu lokalnie\" class=\"wp-image-27398\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image10-1024x580.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image10-300x170.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image10-768x435.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image10-1536x871.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image10-2048x1161.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 10 Przyk\u0142ad uruchomienia testu lokalnie<\/figcaption><\/figure>\n\n\n\n<p>Aby <strong>uruchomi\u0107\u00a0plan testowy<\/strong>, musimy skorzysta\u0107 z narz\u0119dzia <strong>mabl CLI<\/strong>. Jest ono rozdzielne z aplikacj\u0105 desktopow\u0105 czy przegl\u0105darkow\u0105. Dzi\u0119ki temu mo\u017cliwa jest \u0142atwa inicjacja test\u00f3w lokalnie na systemie CI\/CD. Wymagane jest zainstalowanie \u015brodowiska Node.JS. Nast\u0119pnie nale\u017cy wywo\u0142a\u0107 w terminalu komend\u0119:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```npm install -g @mablhq\/mabl-cli```<\/pre>\n\n\n\n<p>Kolejnym krokiem jest zautoryzowanie aplikacji terminalowej z naszym \u015brodowiskiem pracy mabl.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```mabl auth activate-key KEY_VALUE```<\/pre>\n\n\n\n<p>Po wykonaniu krok\u00f3w mamy dost\u0119p do pe\u0142nej funkcjonalno\u015bci mabl CLI. Poni\u017cej zaprezentowa\u0142em kilka przyk\u0142ad\u00f3w konfiguracji uruchamiania lokalnego test\u00f3w:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Uruchomienie wybranego planu testowego za pomoc\u0105 jego id:<\/li>\n<\/ol>\n\n\n\n<p>&#8222;`mabl tests run &#8211;from-plan-id ID_PLANU \u2013headless&#8222;`<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Uruchomienie wybranego testu za pomoc\u0105&nbsp;jego id:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">```mabl tests run --id ID_TESTU \u2013headless```<\/pre>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Uruchomienie wielu test\u00f3w posiadaj\u0105cych dane kategori\u0119 1 i 2 z wykluczeniem 3:<\/li>\n<\/ol>\n\n\n\n<pre class=\"wp-block-preformatted\">```mabl tests run --labels KATEGORIA_1, KATEGORIA_2 --exclude-labels KATEGORIA_3 \u2013headless```<\/pre>\n\n\n\n<p>Opr\u00f3cz inicjacji lokalnej test\u00f3w, mabl CLI umo\u017cliwia wywo\u0142ywanie zdarze\u0144 zwi\u0105zanych z wdro\u017ceniem nowej wersji testowanego systemu lub jego cz\u0119\u015bci. W zwi\u0105zku z tym mo\u017cemy od razu wywo\u0142a\u0107 interesuj\u0105ce nas testy i sprawdzi\u0107, jak dana wersja wp\u0142yn\u0119\u0142a na stan naszej aplikacji. Wykonujemy to poprzez wywo\u0142anie komendy:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">```mabl deployments create --application-id ID_APLIKACJI --labels KATEGORIA_1 await-completion```<\/pre>\n\n\n\n<p>Je\u017celi posiadamy wi\u0119cej ni\u017c&nbsp;jedno \u015brodowisko zdefiniowane w aplikacji, to do wszystkich powy\u017cszych opcji warto jest doda\u0107 parametr `&#8211;environment-id ID_\u015aRODOWISKA.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Mabl Link<\/strong><\/h3>\n\n\n\n<p>Cz\u0119stym wyzwaniem, stoj\u0105cym przed zespo\u0142em testerskim, jest testowanie aplikacji na \u015brodowiskach lokalnych lub zamkni\u0119tych sieciach. Z pomoc\u0105 przychodzi mabl Link. Jest to jeden z modu\u0142\u00f3w, kt\u00f3ry umo\u017cliwia nawi\u0105zanie bezpiecznego po\u0142\u0105czenia mi\u0119dzy tymi \u015brodowiskami a chmur\u0105 mabl. Sk\u0142ada si\u0119 on z dw\u00f3ch element\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Link Agent,<\/li>\n\n\n\n<li>Link Service.<\/li>\n<\/ul>\n\n\n\n<p>Poni\u017cszy diagram pokazuje ruch mi\u0119dzy poszczeg\u00f3lnymi elementami tej funkcjonalno\u015bci.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image11.png\"><img decoding=\"async\" width=\"679\" height=\"344\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image11.png\" alt=\"Przyk\u0142ad Mabl Link\" class=\"wp-image-27400\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image11.png 679w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image11-300x152.png 300w\" sizes=\"(max-width: 679px) 100vw, 679px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 11 Przyk\u0142ad mabl Link<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Integracje<\/strong><\/h3>\n\n\n\n<p>Jednym z g\u0142\u00f3wnych za\u0142o\u017ce\u0144 mabl jest u\u0142atwienie wdro\u017cenia testowania do organizacji. Kryje si\u0119 za tym \u0142atwo\u015b\u0107\u00a0w tworzeniu integracji z innymi narz\u0119dziami, kt\u00f3re s\u0105\u00a0najcz\u0119\u015bciej u\u017cywane i powi\u0105zane z wytwarzaniem oprogramowania lub z samym testowaniem. Lista oficjalnych system\u00f3w, z jakim mabl jest zintegrowany, ca\u0142y czas jest poszerzana o nowe pozycje. Zesp\u00f3\u0142 odpowiedzialnych za to narz\u0119dzi jest otwarty na sugestie dostarczane przez spo\u0142eczno\u015b\u0107\u00a0w celu dodania nowych.<\/p>\n\n\n\n<p>Poni\u017cej przedstawi\u0119 wszystkie dost\u0119pne integracje na ten moment:<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image12.png\"><img decoding=\"async\" width=\"1024\" height=\"602\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image12-1024x602.png\" alt=\"Aktualne oficjalne integracje Mabl\" class=\"wp-image-27403\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image12-1024x602.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image12-300x176.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image12-768x451.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image12-1536x903.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image12-2048x1203.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 12 Aktualne oficjalne integracje mabl<\/figcaption><\/figure>\n\n\n\n<p>Opr\u00f3cz oficjalnych integracji, mo\u017cliwe jest skorzystanie z Webhook\u00f3w, kt\u00f3re wykonywane s\u0105&nbsp;przed i\/lub po egzekucji planu testowego. Daje nam to mo\u017cliwo\u015b\u0107&nbsp;rozszerzenia przesy\u0142u informacji we w\u0142asnym zakresie.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image13.png\"><img decoding=\"async\" width=\"1024\" height=\"444\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image13-1024x444.png\" alt=\"Dodawanie Webhooka\" class=\"wp-image-27405\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image13-1024x444.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image13-300x130.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image13-768x333.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image13-1536x666.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/image13-2048x888.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Ryc. 13 Dodawanie Webhooka<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>W artykule zobrazowa\u0142em, jak obszernym narz\u0119dziem jest mabl. Om\u00f3wi\u0142em, w jaki spos\u00f3b pozwala na redukcj\u0119\u00a0czasu i kosztu zwi\u0105zanego z automatyzacj\u0105\u00a0test\u00f3w. Jest to \u0142atwe do zrozumienia i otwarte narz\u0119dzie, dzi\u0119ki dost\u0119pno\u015bci aplikacji na wszystkich g\u0142\u00f3wnych systemach operacyjnych oraz dzi\u0119ki posiadaniu dedykowanej aplikacji internetowej. Mabl cechuje si\u0119 szybko\u015bci\u0105 uzyskiwania rezultat\u00f3w, poprzez mo\u017cliwo\u015b\u0107 egzekucji bardzo du\u017cej ilo\u015bci test\u00f3w r\u00f3wnolegle.<\/p>\n\n\n\n<p>Opr\u00f3cz wy\u017cej wymienionych zalet, mabl jest rozwi\u0105zaniem cechuj\u0105cym si\u0119 \u0142atwo\u015bci\u0105 rozszerzania. Zwi\u0105zane jest to z wieloma integracjami jak i dodatkowymi modu\u0142ami pozwalaj\u0105cymi skonfigurowa\u0107\u00a0narz\u0119dzie dla swoich potrzeb. Narz\u0119dzie to jest w stanie uzyska\u0107 wiele mo\u017cliwych typ\u00f3w analizy systemu podczas uruchamiania test\u00f3w funkcjonalnych UI i API lub poprzez dedykowane testy niefunkcjonalne.<\/p>\n\n\n\n<p>W kolejnych artyku\u0142ach przedstawi\u0119 proces tworzenia poszczeg\u00f3lnych typ\u00f3w test\u00f3w, jak i sposoby do zapewniania sukcesu we wdro\u017ceniu mabl w procesach organizacji. \u00a0\u00a0<\/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;27377&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;9&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;4.4&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.4\\\/5 ( votes: 9)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Mabl \u2013 narz\u0119dzie do wieloaspektowego testowania aplikacji. Wprowadzenie&quot;,&quot;width&quot;:&quot;122.1&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: 122.1px;\">\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.4\/5 ( votes: 9)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Od d\u0142ugiego czasu narz\u0119dzia no-code i low-code zyskuj\u0105 na popularno\u015bci w ca\u0142ym procesie wytwarzania oprogramowania, od tworzenia aplikacji do testowania &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/mabl-narzedzie-do-wieloaspektowego-testowania-aplikacji-wprowadzenie\/\">Continued<\/a><\/p>\n","protected":false},"author":435,"featured_media":27409,"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":[2193,1546,680],"class_list":["post-27377","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-testowanie","tag-mabl","tag-przeglad-narzedzi","tag-ai"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2024\/04\/Mabl-\u2013-narzedzie-do-wieloaspektowego-testowania-aplikacji.-Wprowadzenie.jpg","category_names":["Testowanie"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/27377"}],"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\/435"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=27377"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/27377\/revisions"}],"predecessor-version":[{"id":30298,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/27377\/revisions\/30298"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/27409"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=27377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=27377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=27377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}