{"id":32428,"date":"2025-11-10T05:00:00","date_gmt":"2025-11-10T04:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=32428"},"modified":"2026-02-18T15:50:04","modified_gmt":"2026-02-18T14:50:04","slug":"automatyzacja-iot-z-uzyciem-nfc-case-study","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/automatyzacja-iot-z-uzyciem-nfc-case-study\/","title":{"rendered":"Automatyzacja IoT z u\u017cyciem NFC \u2013 case study"},"content":{"rendered":"\n<p>Aplikacje mobilne komunikuj\u0105ce si\u0119 z urz\u0105dzeniami IoT potrafi\u0105 nastr\u0119czy\u0107 unikalnych wyzwa\u0144 podczas automatyzacji test\u00f3w. Moj\u0105 rol\u0105, jako architekta rozwi\u0105za\u0144, by\u0142o <strong>przygotowanie frameworka umo\u017cliwiaj\u0105cego kompleksowe testy automatyczne aplikacji mobilnej wymieniaj\u0105cej komunikaty za pomoc\u0105 NFC<\/strong> (Near Field Communication) <strong>z urz\u0105dzeniem fizycznym<\/strong>. W omawianym przypadku standardowe, gotowe rozwi\u0105zania testowania aplikacji mobilnych nie maj\u0105 zastosowania przez ograniczenie, jakie wprowadza ten spos\u00f3b komunikacji.<\/p>\n\n\n\n<p>W niniejszym case study opisz\u0119 <strong>napotkane problemy i zastosowane rozwi\u0105zania<\/strong> podczas tworzenia tak niestandardowego \u015brodowiska testowania.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Czym jest NFC?<\/strong><\/h2>\n\n\n\n<p>Zanim zaczn\u0119 om\u00f3wienie frameworka, chcia\u0142bym przybli\u017cy\u0107, czym jest NFC. Jest to technologia \u0142\u0105czno\u015bci kr\u00f3tkiego zasi\u0119gu (do ~4 cm) umo\u017cliwiaj\u0105ca wymian\u0119 danych mi\u0119dzy smartfonem a tagiem lub drugim urz\u0105dzeniem.<\/p>\n\n\n\n<p>Istniej\u0105 3 tryby pracy:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>reader\/writer \u2013 smartfon odczytuje i zapisuje tagi,<\/li>\n\n\n\n<li>card emulation \u2013 telefon udaje kart\u0119 lub tag,<\/li>\n\n\n\n<li>peer-to-peer \u2013 bezpo\u015brednia wymiana danych mi\u0119dzy smartfonami\/urz\u0105dzeniami.<\/li>\n<\/ul>\n\n\n\n<p>W projektach IoT s\u0142u\u017cy do identyfikacji urz\u0105dze\u0144, bezdotykowego uruchamiania czy przekazywania parametr\u00f3w i konfiguracji. Nasz przypadek dotyczy w\u0142a\u015bnie takich zdarze\u0144. Ze wzgl\u0119du na fizyczne ograniczenie zasi\u0119gu komunikacji, <strong>w testach automatycznych istotne jest precyzyjne sterowanie momentem skanowania<\/strong>, co bezpo\u015brednio wp\u0142ywa na architektur\u0119 rozwi\u0105zania.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u015arodowisko testowe i wyzwania konfiguracji<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"837\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/11\/Ryc.-1-1024x837.png\" alt=\"\u015arodowisko testowe i wyzwania konfiguracji (grafika na podstawie opracowania Belimo\" class=\"wp-image-32457\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/11\/Ryc.-1-1024x837.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/11\/Ryc.-1-300x245.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/11\/Ryc.-1-768x628.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/11\/Ryc.-1-1536x1256.png 1536w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/11\/Ryc.-1-2048x1675.png 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Ryc. 1 \u015arodowisko testowe i wyzwania konfiguracji (grafika na podstawie opracowania <a href=\"https:\/\/www.belimo.com\/pl\/pl_PL\/\" title=\"\" rel=\"nofollow\" >Belimo<\/a>)<\/figcaption><\/figure>\n\n\n\n<p>Maj\u0105c komunikacj\u0119 NFC jako jeden z cel\u00f3w testowania, trzeba wykluczy\u0107 u\u017cycie wszelkiego rodzaju gotowych chmur urz\u0105dze\u0144. Wszystkie chmury, zar\u00f3wno prywatne jak i wsp\u00f3\u0142dzielone, a nawet te dedykowane fizyczne poza siedzib\u0105 klienta, maj\u0105 <strong>jedno wsp\u00f3lne ograniczenie<\/strong> \u2013 brak dost\u0119pu fizycznego do telefonu. To poci\u0105ga za sob\u0105 brak mo\u017cliwo\u015bci po\u0142\u0105czenia telefonu z urz\u0105dzeniem, kt\u00f3re musi znajdowa\u0107 si\u0119 w odleg\u0142o\u015bci nie dalej ni\u017c 4 cm.<\/p>\n\n\n\n<p>Pierwszym krokiem by\u0142o wi\u0119c zbudowanie lokalnego laboratorium testowego. <strong>Aplikacja jest dost\u0119pna zar\u00f3wno na Androida, jak i iOS, co stawia dodatkowe wymagania wobec architektury projektu<\/strong>. Poniewa\u017c automatyzacja test\u00f3w aplikacji na iPhone\u2019a jest mo\u017cliwa wy\u0142\u0105cznie na komputerach z systemem macOS, konieczne jest u\u017cycie takiego sprz\u0119tu.<\/p>\n\n\n\n<p>Pocieszaj\u0105cy jest fakt, \u017ce Android r\u00f3wnie\u017c jest wspierany, dzi\u0119ki czemu mo\u017cna u\u017cy\u0107 tylko jednego komputera do obs\u0142ugi obu system\u00f3w. Przed rozpocz\u0119ciem prac skonfigurowano oba urz\u0105dzenia poprzez w\u0142\u0105czenie tryb\u00f3w deweloperskich i debugowania czy zainstalowaniu odpowiednich certyfikat\u00f3w.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Robot Framework i Appium<\/strong><\/h3>\n\n\n\n<p>Do automatyzacji wybrano <a href=\"https:\/\/sii.pl\/blog\/all\/robot-framework\/\" target=\"_blank\" rel=\"noopener\" title=\"\">Robot Framework<\/a>, kt\u00f3ry to jest zakorzeniony w organizacji, w po\u0142\u0105czeniu z Appium zdolnym za pomoc\u0105 driver\u00f3w obs\u0142u\u017cy\u0107 obie platformy.<\/p>\n\n\n\n<p>Robot Framework zapewnia czytelno\u015b\u0107 scenariuszy testowych w formie BDD, co pozwala analitykom i kadrze managerskiej przegl\u0105da\u0107 wyniki. Appium pe\u0142ni rol\u0119 serwera automatyzuj\u0105cego \u2013 testy wysy\u0142aj\u0105 komendy do serwera, kt\u00f3ry to przekazuje odpowiednie instrukcje do urz\u0105dze\u0144 mobilnych.<\/p>\n\n\n\n<p>Przy tym, wydawa\u0142oby si\u0119 prostym, setupie napotyka si\u0119 na <strong>pierwsze problemy natury konfiguracyjnej:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>stabilne po\u0142\u0105czenie kablowe do komputera uruchamiaj\u0105cego testy,<\/li>\n\n\n\n<li>konfiguracja automatycznych update\u2019\u00f3w,<\/li>\n\n\n\n<li>zapewnienie sta\u0142ego zasilania.<\/li>\n<\/ul>\n\n\n\n<p><strong>Prawdziwym wyzwaniem okaza\u0142a si\u0119<\/strong>, mimo wszystko, <strong>obs\u0142uga NFC<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Problem fizycznego zbli\u017cenia urz\u0105dze\u0144<\/strong><\/h2>\n\n\n\n<p>Najwi\u0119kszym wyzwaniem stworzenia frameworka by\u0142a <strong>obs\u0142uga dzia\u0142ania mechanizmu NFC<\/strong>.<\/p>\n\n\n\n<p>Poza oczywistymi ustawieniami telefonu jak wy\u0142\u0105czenie wibracji przy wykryciu taga, wy\u0142\u0105czeniu domy\u015blnej akcji czy wprost zabezpieczeniu telefonu w uchwycie tam, gdzie wibracji nie da si\u0119 wy\u0142\u0105czy\u0107, pozostaje problem odleg\u0142o\u015bci. Do wymiany danych trzeba zasymulowa\u0107 tapni\u0119cie telefonem o tag, \u017ceby wymusi\u0107 wzbudzenie i dzia\u0142anie mechanizmu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Podej\u015bcie pierwsze<\/strong><\/h3>\n\n\n\n<p>Istnieje kilka podej\u015b\u0107, w zale\u017cno\u015bci od testowanego systemu oraz potrzeb. Jednym z nich jest <strong>wykorzystanie programowalnych czytnik\u00f3w NFC pod\u0142\u0105czanych do komputera za pomoc\u0105 USB.<\/strong> Czytnik mo\u017ce symulowa\u0107 tag (w moim przypadku urz\u0105dzenie), a programowo m\u00f3g\u0142by si\u0119 pojawia\u0107 i znika\u0107 w polu NFC telefonu. Je\u015bli celem testowania jest sprawdzenie poprawno\u015bci stworzenia i wys\u0142ania komunikatu NFC przez aplikacj\u0119, takie podej\u015bcie b\u0119dzie wystarczaj\u0105ce. Daje ono pe\u0142n\u0105 kontrol\u0119 nad wys\u0142an\u0105 przez telefon ramk\u0105, jak r\u00f3wnie\u017c nad jej odpowiedzi\u0105.<\/p>\n\n\n\n<p>Niestety, w przypadku test\u00f3w E2E taki <strong>test nie odpowie<\/strong>, czy software urz\u0105dzenia poprawnie interpretuje komunikaty i generuje odpowiedzi przy okazji oczekiwanego zachowania.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Podej\u015bcie drugie<\/strong><\/h3>\n\n\n\n<p>Kolejnym podej\u015bciem jest u\u017cycie serwomechanizmu lub programowalnego ramienia odsuwaj\u0105cego i przysuwaj\u0105cego telefon i tag do siebie. Wyb\u00f3r ten znacz\u0105co podnosi <strong>z\u0142o\u017cono\u015b\u0107 infrastruktury testowej<\/strong>, jak i kodu utrzymuj\u0105cego ca\u0142e rozwi\u0105zanie. Samo rozwi\u0105zanie nie jest pozbawione wad, poniewa\u017c musi zosta\u0107 spe\u0142niony warunek odpowiedniej szybko\u015bci ruchu taga w polu NFC, a ca\u0142o\u015b\u0107 musi by\u0107 zsynchronizowana z przebiegiem testu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Skuteczne rozwi\u0105zanie<\/strong><\/h3>\n\n\n\n<p>Najprostszym rozwi\u0105zaniem, kt\u00f3re okaza\u0142o si\u0119 r\u00f3wnie skuteczne, jest <strong>programowe wy\u0142\u0105czanie i w\u0142\u0105czanie modu\u0142u NFC telefonu, b\u0119d\u0105cego w sta\u0142ym zasi\u0119gu taga.<\/strong><\/p>\n\n\n\n<p>Testowany telefon fizycznie styka si\u0119 z anten\u0105 NFC urz\u0105dzenia, ale jego modu\u0142 zostaje wy\u0142\u0105czony do momentu potrzeby wymiany danych. W\u0142\u0105czenie modu\u0142u w telefonie powoduje wykrycie taga analogicznie, jak w przypadku zbli\u017cenia telefonu. Wy\u0142\u0105czenie modu\u0142u symuluje oddalenie urz\u0105dzenia i eliminuje problem ci\u0105g\u0142ego skanowania, czy te\u017c znajdowania taga przez telefon.<\/p>\n\n\n\n<p>Ta metoda pozwoli <strong>zrealizowa\u0107 automatyzacj\u0119 komunikacji NFC<\/strong> zar\u00f3wno bez udzia\u0142u cz\u0142owieka, jak i eliminuj\u0105c symulacj\u0119 ruchu urz\u0105dze\u0144, sprowadzaj\u0105c problem do kontrolowania modu\u0142u w urz\u0105dzeniu mobilnym.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Programowe sterowanie NFC<\/strong><\/h2>\n\n\n\n<p>Przeprowadzony test manualny podej\u015bcia sterowania modu\u0142em zako\u0144czy\u0142 si\u0119 sukcesem, potwierdzaj\u0105c tym samym, \u017ce w\u0142\u0105czenie modu\u0142u wywo\u0142a komunikacj\u0119. Trzeba to by\u0142o zatem <strong>zautomatyzowa\u0107.<\/strong><\/p>\n\n\n\n<p>Android jest stosunkowo otwart\u0105 platform\u0105, co pozwoli\u0142o na zdalne sterowanie ustawieniami telefonu z poziomu test\u00f3w. ADB (Android Debug Bridge) udost\u0119pnia komendy systemowe, kt\u00f3re pos\u0142u\u017cy\u0142y do sterowania stanem NFC.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n{code}\nadb shell svc nfc enable # w\u0142\u0105czenie NFC\nadb shell svc nfc disable # wy\u0142\u0105czenie NFC\n{\/code}\n<\/pre><\/div>\n\n\n<p>Powy\u017csze polecenia, wywo\u0142ane na Androidzie z uprawnieniami debuggera, aktywuj\u0105 b\u0105d\u017a dezaktywuj\u0105 NFC. W ramach frameworka wywo\u0142anie komendy nast\u0119puje dynamicznie w trakcie testu za pomoc\u0105 dedykowanego keyworda dostarczonego przez bibliotek\u0119 Appium Robot Framework. <strong>Dodatkowych zaskocze\u0144 po stronie Androida nie by\u0142o<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Apple way<\/strong><\/h2>\n\n\n\n<p>Automatyzacja by\u0142aby za prosta, gdyby jedno rozwi\u0105zanie dzia\u0142a\u0142o out-of-the-box dla wielu platform. Dopiero sprytnie ukryta customizacja b\u0119dzie sprawia\u0142a wra\u017cenie jednolitego kodu obs\u0142uguj\u0105cego obie platformy. W <strong>systemie iOS mamy dodatkowe wyzwania<\/strong> oczekuj\u0105ce rozwi\u0105zania, z uwagi na inaczej zaprojektowany model NFC.<\/p>\n\n\n\n<p>Apple udost\u0119pnia korzystanie z NFC przez aplikacj\u0119 za pomoc\u0105 Core NFC. To poprzez ten framework aplikacja inicjuje sesj\u0119 skanowania taga i oczekuje na jego wykrycie. Problemem jest jednak to, \u017ce <strong>iOS nie oferuje wy\u0142\u0105czenia NFC<\/strong>. Nie istnieje tu \u017caden mechanizm sterowania, a dodatkowo nowsze telefony Apple posiadaj\u0105 tzw. Background Tag Reading, kt\u00f3ry sprawia, \u017ce NFC \u201enas\u0142uchuje\u201d ca\u0142y czas.<\/p>\n\n\n\n<p>Idea rozwi\u0105zania polega na ci\u0105g\u0142ym, fizycznym kontakcie telefonu z tagiem, wi\u0119c NFC znajduje tag, o czym powiadamia za pomoc\u0105 pop-upu. Wyskakuj\u0105ce pop-upy potrafi\u0105 przes\u0142oni\u0107 niekt\u00f3re elementy UI i da\u0107 <strong>fa\u0142szywie negatywny wynik testu<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Rozwi\u0105zanie<\/strong><\/h3>\n\n\n\n<p>Jak temu zaradzi\u0107? Ot\u00f3\u017c okazuje si\u0119, \u017ce BTR jest powi\u0105zany z niekt\u00f3rymi funkcjami systemu, wi\u0119c aktywuj\u0105c tryb samolotowy, nie tylko dezaktywuje si\u0119 sie\u0107 kom\u00f3rkow\u0105, ale wy\u0142\u0105czany jest r\u00f3wnie\u017c BTR. Core NFC natomiast w dalszym ci\u0105gu pozwala na korzystanie z NFC w trybie offline i aplikacja mo\u017ce wywo\u0142a\u0107 inicjalizacj\u0119 sesji celem wymiany danych.<\/p>\n\n\n\n<p>Tym samym uda\u0142o si\u0119 osi\u0105gn\u0105\u0107 identyczny efekt jak w przy telefonie z Androidem. Znaj\u0105c dok\u0142adny moment, w kt\u00f3rym NFC musi zosta\u0107 uruchomiony, dostajemy <strong>mo\u017cliwo\u015b\u0107 wywo\u0142ania i przygotowania telefonu<\/strong> z wzbudzeniem IoT do wymiany informacji na obu platformach.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img decoding=\"async\" width=\"737\" height=\"170\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/10\/praca-m-3.jpg\" alt=\"oferty pracy\" class=\"wp-image-32429\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/10\/praca-m-3.jpg 737w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/10\/praca-m-3-300x69.jpg 300w\" sizes=\"(max-width: 737px) 100vw, 737px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>Automatyzacja test\u00f3w w systemach IoT niesie ze sob\u0105 wiele niestandardowych wyzwa\u0144 oraz ich rozwi\u0105za\u0144. Framework obs\u0142uguj\u0105cy ca\u0142e rozwi\u0105zanie zazwyczaj jest du\u017co bardziej skomplikowany, przez co r\u00f3wnie\u017c rosn\u0105 koszty jego utrzymania.<\/p>\n\n\n\n<p>Ostatecznie framework spe\u0142ni\u0142 swoje zadanie, a przede wszystkim pozwoli\u0142 na pe\u0142n\u0105 obs\u0142ug\u0119 potrzebn\u0105 do automatyzacji. Case study ukazuje, \u017ce nawet tak wydawa\u0142oby si\u0119 proste zadanie jak interakcja poprzez NFC, potrafi wymusi\u0107 nieszablonowe rozwi\u0105zania, a czasem prosty trick zapewni stabilno\u015b\u0107 egzekucji.<\/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;32428&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;5&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;4.2&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.2\\\/5 ( votes: 5)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Automatyzacja IoT z u\u017cyciem NFC \u2013 case study&quot;,&quot;width&quot;:&quot;116.3&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: 116.3px;\">\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.2\/5 ( votes: 5)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Aplikacje mobilne komunikuj\u0105ce si\u0119 z urz\u0105dzeniami IoT potrafi\u0105 nastr\u0119czy\u0107 unikalnych wyzwa\u0144 podczas automatyzacji test\u00f3w. Moj\u0105 rol\u0105, jako architekta rozwi\u0105za\u0144, by\u0142o &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/automatyzacja-iot-z-uzyciem-nfc-case-study\/\">Continued<\/a><\/p>\n","protected":false},"author":436,"featured_media":32431,"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":[1512,464,1032,521,435,679,146],"class_list":["post-32428","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-testowanie","tag-poradnik","tag-android","tag-case-study","tag-ios","tag-iot","tag-robot-framework","tag-testing"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2025\/10\/Smartphone.jpg","category_names":["Testowanie"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/32428"}],"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\/436"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=32428"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/32428\/revisions"}],"predecessor-version":[{"id":32460,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/32428\/revisions\/32460"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/32431"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=32428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=32428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=32428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}