{"id":2976,"date":"2019-05-10T09:00:59","date_gmt":"2019-05-10T07:00:59","guid":{"rendered":"http:\/\/itcraftapps.com\/pl\/?p=2976"},"modified":"2020-12-16T08:47:00","modified_gmt":"2020-12-16T07:47:00","slug":"appium","status":"publish","type":"post","link":"https:\/\/itcraftapps.com\/pl\/blog\/appium\/","title":{"rendered":"Appium &#8211; darmowe narz\u0119dzie open-source do automatyzacji test\u00f3w aplikacji mobilnych"},"content":{"rendered":"\n<p>W ostatnich latach ca\u0142y czas ro\u015bnie popularno\u015b\u0107 aplikacji mobilnych. Spowodowa\u0142a ona bardzo du\u017cy wzrost nowych aplikacji pojawiaj\u0105cych si\u0119 na rynku. Ludzie coraz cz\u0119\u015bciej korzystaj\u0105 ze swoich smartfon\u00f3w na rzecz komputer\u00f3w &#8211; w ko\u0144cu to telefony mamy zawsze przy sobie i mo\u017cemy ich u\u017cy\u0107 w ka\u017cdej chwili. W \u015bwiecie testerskim testowanie aplikacji mobilnych r\u00f3\u017cni si\u0119 od testowania <a href=\"https:\/\/itcraftapps.com\/pl\/uslugi\/aplikacje-webowe\/\">aplikacji webowych<\/a>. Dlatego te\u017c pojawi\u0142o si\u0119 sporo nowych narz\u0119dzi do testowania aplikacji mobilnych oraz do automatyzowania test\u00f3w. Jednym z takich narz\u0119dzi jest Appium, o kt\u00f3rym chcia\u0142bym dzisiaj troch\u0119 opowiedzie\u0107.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Appium, narz\u0119dzie open-source do automatyzacji <\/h2>\n\n\n\n<p>Zaczynaj\u0105c od samego pocz\u0105tku &#8211; Appium jest jednym z najpopularniejszych narz\u0119dzi do automatyzacji test\u00f3w aplikacji na urz\u0105dzeniach mobilnych. <br \/><\/p>\n\n\n\n<p>Appium jest rozwi\u0105zaniem:<\/p>\n\n\n\n<p>&#8211; open-source, kt\u00f3re s\u0142u\u017cy do zautomatyzowania aplikacji natywnych, webowych i hybrydowych na platformach Android oraz <a href=\"https:\/\/itcraftapps.com\/pl\/zatrudnij-najlepszych-programistow-ios-do-swojego-projektu\/\">iOS<\/a>,|<br \/>&#8211; &#8222;wieloplatformowym&#8221;, a wi\u0119c umo\u017cliwia pisanie test\u00f3w przy u\u017cyciu tego samego API,<br \/>&#8211; wykorzystuj\u0105cym bibliotek\u0119 WebDriver, kt\u00f3ra rozszerzona zosta\u0142a o dodatkowe funkcje przydatne w kontek\u015bcie testu automatyzacji mobilnej.<\/p>\n\n\n\n<p>Filozofi\u0105 Appium jest brak konieczno\u015bci ponownej kompilacji aplikacji w celu automatyzacji. Nie ma te\u017c ograniczenia do jednego j\u0119zyka programowania. Co wi\u0119cej, nie musimy odkrywa\u0107 ko\u0142a na nowo, je\u017celi chodzi o API automatyzacji. A to wszystko dzi\u0119ki rozwi\u0105zaniu, kt\u00f3re jest open-source.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Architektura Appium<br \/><\/h2>\n\n\n\n<p>Architektura Appium jest bardzo prosta. Przede wszystkim, warto zaznaczy\u0107, \u017ce Appium jest architektur\u0105 klient-serwer. Klient \u0142\u0105czy si\u0119 z serwerem Appium w postaci obiektu JSON przez protok\u00f3\u0142 HTTP. Nast\u0119pnie, serwer tworzy sesj\u0119, zwracaj\u0105c tym samym klientowi indywidualny numer sesji (ID), kt\u00f3ry jest aktywny przez czas dzia\u0142ania serwera. Nast\u0119pnie uruchamiane s\u0105 testy, kt\u00f3re b\u0119d\u0105 wykonywane w ramach utworzonej sesji.<br \/><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"826\" height=\"1024\" src=\"http:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/architecture_appium-826x1024.png\" alt=\"\" class=\"wp-image-2979\" srcset=\"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/architecture_appium-826x1024.png 826w, https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/architecture_appium-242x300.png 242w, https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/architecture_appium-768x952.png 768w, https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/architecture_appium.png 1008w\" sizes=\"(max-width: 826px) 100vw, 826px\" \/><figcaption>\u0179r\u00f3d\u0142o: <a rel=\"nofollow noreferrer noopener\" href=\"https:\/\/subscription.packtpub.com\/book\/application_development\/9781787280168\/1\/ch01lvl1sec11\/appium-architecture\/\" target=\"_blank\">Packt\ufeff<\/a><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Instalacja appium<\/h2>\n\n\n\n<p>Instalacja narz\u0119dzia jest niezwykle prosta. Mo\u017cemy zrobi\u0107 to na dwa sposoby:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Instalacj\u0119 mo\u017cemy wykona\u0107 poprzez menad\u017cera npm wykonuj\u0105c poni\u017csz\u0105 komend\u0119:<br \/>npm <strong>install<\/strong> -g appium<\/li><li>Mo\u017cemy te\u017c pobra\u0107 wersj\u0119 do zainstalowania z interfejsem GUI.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Rozpocz\u0119cie pisania test\u00f3w automatycznych z u\u017cyciem Appium<\/h2>\n\n\n\n<p>Aby rozpocz\u0105\u0107 pisanie test\u00f3w automatycznych z u\u017cyciem Appium potrzebujemy szeregu narz\u0119dzi. Poni\u017cej lista, wraz z ustawieniami:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Java &#8211; instalujemy i ustawiamy JAVA_HOME,<\/li><li>Android SDK &#8211; pobieramy i ustawiamy ANDROID_HOME, <\/li><li>Appium &#8211; instalujemy i uruchamiamy,<\/li><li>IDE np. Eclipse razem z maven i testng &#8211; instalujemy i uruchamiamy,<\/li><li>Urz\u0105dzenie (lub emulator\/symulator) z systemem Android\/iOS &#8211; rzeczywiste urz\u0105dzenie pod\u0142\u0105czamy do komputera poprzez kabel USB lub WIFI. Sprawdzamy widoczno\u015b\u0107 poprzez adb devices.<\/li><li>Aplikacja do przetestowania.<\/li><\/ol>\n\n\n\n<p>Appium uruchamiamy na ho\u015bcie 0.0.0.0 oraz domy\u015blnym porcie 4723.<br \/><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1024\" height=\"457\" src=\"http:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/Appium-instalacja-1024x457.png\" alt=\"\" class=\"wp-image-2977\" srcset=\"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/Appium-instalacja-1024x457.png 1024w, https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/Appium-instalacja-300x134.png 300w, https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/Appium-instalacja-768x343.png 768w, https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/Appium-instalacja.png 1300w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>W Eclipse tworzymy nowy projekt. Zaczynamy od skonfigurowania po\u0142\u0105czenia z serwerem Appium. <br \/><\/p>\n\n\n\n<p>Konfiguracj\u0119 przygotowujemy osobno dla Androida i osobno dla iOS. Podczas konfiguracji b\u0119d\u0105 nam potrzebne informacje o urz\u0105dzeniu, na kt\u00f3rym maj\u0105 uruchamia\u0107 si\u0119 nasze testy.<br \/><\/p>\n\n\n\n<p>Przy przypadku Androida korzystamy z UiAutomator2 Driver. Przyk\u0142adowa konfiguracja wygl\u0105da nast\u0119puj\u0105co:<\/p>\n\n\n\n<pre class=\"wp-block-code java\"><code>capabilities.setCapability(\"platformName\", \"Android\");\ncapabilities.setCapability(\"deviceName\", \"Emulator\");\ncapabilities.setCapability(\"device\", \"emulator-5554\");\ncapabilities.setCapability(\"platformVersion\", 8.0.0);\ncapabilities.setCapability(\"app\", app.getAbsolutePath());\ncapabilities.setCapability(\"automationName\", \"uiautomator2\");\ncapabilities.setCapability(\"appPackage\", \"pl.itcraft.application\");\ncapabilities.setCapability(\"appActivity\", \"pl.itcraft.application.activity.LauncherActivity\");<\/code><\/pre>\n\n\n\n<p>W przypadku iOS korzystamy z XCUITest. Przyk\u0142adowa konfiguracja poni\u017cej:<\/p>\n\n\n\n<pre class=\"wp-block-code java\"><code>capabilities.setCapability(\"deviceName\", \"iPhone X\");\ncapabilities.setCapability(\"platformVersion\", \"12.0\");\ncapabilities.setCapability(\"platformName\", \"iOS\");\ncapabilities.setCapability(\"automationName\", \"XCUITest\");\ncapabilities.setCapability(\"app\", app.getAbsolutePath());<\/code><\/pre>\n\n\n\n<p>Na ko\u0144cu inicjalizujemy Drivera dla Androida:<\/p>\n\n\n\n<pre class=\"wp-block-code java\"><code>driver = new AndroidDriver(new URL(\"http:\/\/0.0.0.0:4723\/wd\/hub\"), capabilities);<\/code><\/pre>\n\n\n\n<p>oraz iOS:<\/p>\n\n\n\n<pre class=\"wp-block-code java\"><code>driver = new IOSDriver(new URL(\"http:\/\/0.0.0.0:4723\/wd\/hub\"), capabilities);<\/code><\/pre>\n\n\n\n<p>W projekcie u\u017cyjemy Page Object Model oraz Page Factory. <\/p>\n\n\n\n<p>Page Object Model jest to wzorzec, w kt\u00f3rym ka\u017cdy ekran aplikacji ma odzwierciedlenie jako osobna klasa. W ramach danej klasy dodajemy elementy oraz metody, kt\u00f3re wykonuj\u0105 operacje na elementach. <br \/><\/p>\n\n\n\n<p>Page Factory wykorzystamy jako wsparcie dla wzorca Page Object przy zainicjalizowaniu element\u00f3w oraz do przypisywania lokalizator\u00f3w Androida oraz iOS do jednej zmiennej. <br \/><\/p>\n\n\n\n<p>Na przyk\u0142ad dla ekranu logowania dodajemy w klasie loginScreen.java<\/p>\n\n\n\n<pre class=\"wp-block-code java\"><code>@iOSFindBy(accessibility = \"login\")\n@AndroidFindBy(id = \"loginInput\")\nMobileElement loginInput;\n\n@iOSFindBy(accessibility = \"pass\")\n@AndroidFindBy(id = \"passInput\")\nMobileElement passwordInput;\n\n@iOSFindBy(accessibility = \"loginButton\")\n@AndroidFindBy(id = \"loginBtn\")\nMobileElement loginButton;\n\npublic void loginApp(String login, String password){\n  loginInput.sendKeys(login);\n  passwordInput.sendKeys(password);\n  loginButton.click;\n}<\/code><\/pre>\n\n\n\n<p>Test zaczynamy od adnotacji @Test z biblioteki TestNG. Nast\u0119pnie przy wykorzystaniu napisanej metody tworzymy test, dodaj\u0105c na ko\u0144cu sprawdzenie czy na pewno zostali\u015bmy zalogowani &#8211; robimy to sprawdzaj\u0105c tre\u015b\u0107 komunikatu. Tak napisany test zostanie wykonany dla aplikacji z systemem zar\u00f3wno Android jak i iOS. <\/p>\n\n\n\n<pre class=\"wp-block-code java\"><code>@Test\npublic void firstTest(){\n  loginScreen.loginApp(\u201ctest\u201d,\u201dtest\u201d);\n  baseScreen.checkSuccessfulLogin();\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Podsumowanie<\/h2>\n\n\n\n<p>Do zalet Appium nale\u017cy na pewno to, \u017ce jest darmowe, open-source\u2019owe i wieloplatformowe. Przede wszystkim jednak plusem jest to, \u017ce Appium &#8211; przy zastosowaniu page object oraz page factory &#8211; pozwala nam mie\u0107 jeden kod test\u00f3w, napisany w jednym z kilku popularnych j\u0119zyk\u00f3w np. Java, C#. Kod ten wykonuje testy na Androidzie i na iOS.<\/p>\n\n\n\n<p>Du\u017cym plusem jest r\u00f3wnie\u017c popularno\u015b\u0107 Appium, a co za tym idzie, dost\u0119pno\u015b\u0107 materia\u0142\u00f3w informacyjnych na temat samego narz\u0119dzia oraz spo\u0142eczno\u015b\u0107, kt\u00f3ra j\u0105 tworzy.<br \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>W ostatnich latach ca\u0142y czas ro\u015bnie popularno\u015b\u0107 aplikacji mobilnych. Spowodowa\u0142a ona bardzo du\u017cy wzrost nowych aplikacji pojawiaj\u0105cych si\u0119 na rynku. Ludzie coraz cz\u0119\u015bciej korzystaj\u0105 ze swoich smartfon\u00f3w na rzecz komputer\u00f3w &#8211; w ko\u0144cu to telefony mamy zawsze przy sobie i mo\u017cemy ich u\u017cy\u0107 w ka\u017cdej chwili. W \u015bwiecie testerskim testowanie aplikacji mobilnych r\u00f3\u017cni si\u0119 od&hellip;<\/p>\n","protected":false},"author":1,"featured_media":2978,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[5,29],"tags":[],"class_list":{"0":"post-2976","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-news","8":"category-testowanie"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Appium - darmowe narz\u0119dzie open-source do automatyzacji test\u00f3w aplikacji mobilnych - itCraft blog<\/title>\n<meta name=\"description\" content=\"Testuj aplikacje na Androidzie i iOS z Appium - darmowym, open-source narz\u0119dziem!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/itcraftapps.com\/pl\/blog\/appium\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Appium - darmowe narz\u0119dzie open-source do automatyzacji test\u00f3w aplikacji mobilnych - itCraft blog\" \/>\n<meta property=\"og:description\" content=\"Testuj aplikacje na Androidzie i iOS z Appium - darmowym, open-source narz\u0119dziem!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/itcraftapps.com\/pl\/blog\/appium\/\" \/>\n<meta property=\"og:site_name\" content=\"Aplikacje mobilne i webowe dla firm | itCraft\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-10T07:00:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-16T07:47:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/Appium.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1950\" \/>\n\t<meta property=\"og:image:height\" content=\"1300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Appium - darmowe narz\u0119dzie open-source do automatyzacji test\u00f3w aplikacji mobilnych - itCraft blog","description":"Testuj aplikacje na Androidzie i iOS z Appium - darmowym, open-source narz\u0119dziem!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/itcraftapps.com\/pl\/blog\/appium\/","og_locale":"pl_PL","og_type":"article","og_title":"Appium - darmowe narz\u0119dzie open-source do automatyzacji test\u00f3w aplikacji mobilnych - itCraft blog","og_description":"Testuj aplikacje na Androidzie i iOS z Appium - darmowym, open-source narz\u0119dziem!","og_url":"https:\/\/itcraftapps.com\/pl\/blog\/appium\/","og_site_name":"Aplikacje mobilne i webowe dla firm | itCraft","article_published_time":"2019-05-10T07:00:59+00:00","article_modified_time":"2020-12-16T07:47:00+00:00","og_image":[{"width":1950,"height":1300,"url":"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/Appium.png","type":"image\/png"}],"author":"root","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/itcraftapps.com\/pl\/blog\/appium\/","url":"https:\/\/itcraftapps.com\/pl\/blog\/appium\/","name":"Appium - darmowe narz\u0119dzie open-source do automatyzacji test\u00f3w aplikacji mobilnych - itCraft blog","isPartOf":{"@id":"https:\/\/itcraftapps.com\/pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/itcraftapps.com\/pl\/blog\/appium\/#primaryimage"},"image":{"@id":"https:\/\/itcraftapps.com\/pl\/blog\/appium\/#primaryimage"},"thumbnailUrl":"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/Appium.png","datePublished":"2019-05-10T07:00:59+00:00","dateModified":"2020-12-16T07:47:00+00:00","author":{"@id":"https:\/\/itcraftapps.com\/pl\/#\/schema\/person\/7f005eebbb23587ebb5e67da80d14679"},"description":"Testuj aplikacje na Androidzie i iOS z Appium - darmowym, open-source narz\u0119dziem!","breadcrumb":{"@id":"https:\/\/itcraftapps.com\/pl\/blog\/appium\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/itcraftapps.com\/pl\/blog\/appium\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/itcraftapps.com\/pl\/blog\/appium\/#primaryimage","url":"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/Appium.png","contentUrl":"https:\/\/itcraftapps.com\/pl\/wp-content\/uploads\/sites\/5\/2019\/05\/Appium.png","width":1950,"height":1300},{"@type":"BreadcrumbList","@id":"https:\/\/itcraftapps.com\/pl\/blog\/appium\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/itcraftapps.com\/pl\/"},{"@type":"ListItem","position":2,"name":"Appium &#8211; darmowe narz\u0119dzie open-source do automatyzacji test\u00f3w aplikacji mobilnych"}]},{"@type":"WebSite","@id":"https:\/\/itcraftapps.com\/pl\/#website","url":"https:\/\/itcraftapps.com\/pl\/","name":"Aplikacje mobilne i webowe dla firm | itCraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/itcraftapps.com\/pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Person","@id":"https:\/\/itcraftapps.com\/pl\/#\/schema\/person\/7f005eebbb23587ebb5e67da80d14679","name":"root","image":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/itcraftapps.com\/pl\/#\/schema\/person\/image\/","url":"https:\/\/itcraftapps.com\/pl\/wp-content\/litespeed\/avatar\/5\/c28d2298456f70316440c99aa0dc214f.jpg?ver=1776254058","contentUrl":"https:\/\/itcraftapps.com\/pl\/wp-content\/litespeed\/avatar\/5\/c28d2298456f70316440c99aa0dc214f.jpg?ver=1776254058","caption":"root"},"url":"https:\/\/itcraftapps.com\/pl\/blog\/author\/root\/"}]}},"_links":{"self":[{"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/posts\/2976","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/comments?post=2976"}],"version-history":[{"count":0,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/posts\/2976\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/media\/2978"}],"wp:attachment":[{"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/media?parent=2976"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/categories?post=2976"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itcraftapps.com\/pl\/wp-json\/wp\/v2\/tags?post=2976"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}