{"id":2000,"date":"2016-03-11T12:39:21","date_gmt":"2016-03-11T11:39:21","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=2000"},"modified":"2023-08-14T15:18:02","modified_gmt":"2023-08-14T13:18:02","slug":"automatyczne-testy-aplikacji-mobilnych-czesc-1","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/automatyczne-testy-aplikacji-mobilnych-czesc-1\/","title":{"rendered":"Automatyczne testy aplikacji mobilnych &#8211; cz\u0119\u015b\u0107 1"},"content":{"rendered":"\n<p>Na rynku pojawia si\u0119 coraz wi\u0119cej aplikacji oraz gier dost\u0119pnych na mobilne urz\u0105dzenia, wi\u0119c aby wyr\u00f3\u017cni\u0107 si\u0119 spo\u015br\u00f3d konkurencji nale\u017cy zadba\u0107, aby aplikacja mia\u0142a jak najlepsze oceny i opinie w sklepie. By zapewni\u0107 sobie wysok\u0105 pozycj\u0119 w rankingach nale\u017cy mie\u0107 pewno\u015b\u0107, \u017ce aplikacja lub gra spe\u0142nia nie tylko wysokie oczekiwania u\u017cytkownik\u00f3w pod wzgl\u0119dem logiki, u\u017cyteczno\u015bci itd., ale tak\u017ce pod wzgl\u0119dem jako\u015bciowym. Przecie\u017c ka\u017cdy chcia\u0142by aby zainstalowana aplikacja dzia\u0142a\u0142a na jego urz\u0105dzeniu mobilnym i \u017ceby by\u0142a wolna od bug\u00f3w czy crashy. Dynamicznie rozwijaj\u0105cy si\u0119 rynek wymusi\u0142 na developerach elastyczno\u015b\u0107 i mobilno\u015b\u0107 &#8211; teraz ich produkty musz\u0105 by\u0107 kompatybilne z wieloma platformami, systemami operacyjnymi oraz musz\u0105 obs\u0142ugiwa\u0107 wi\u0119cej ni\u017c jeden typ wy\u015bwietlacza. Dlatego tak wa\u017cne s\u0105 testy aplikacji mobilnych \u2013 zar\u00f3wno te manualne jak i te automatyczne. Dzi\u0119ki automatyzacji mo\u017cliwe jest usprawnienie procesu testowania, unikamy powtarzania pracy, mo\u017cemy testowa\u0107 24h na dob\u0119, mamy gwarantowan\u0105 szybko\u015b\u0107 i dok\u0142adno\u015b\u0107 zg\u0142aszanych b\u0142\u0119d\u00f3w. Dodatkowymi korzy\u015bciami s\u0105 zaufanie Klient\u00f3w, wysokie oceny w sklepie, pewno\u015b\u0107, \u017ce aplikacja dzia\u0142a na ka\u017cdym urz\u0105dzeniu oraz minimalizacja koszt\u00f3w zwi\u0105zanych z naprawianiem aplikacji po udost\u0119pnieniu jej u\u017cytkownikom.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Na co jeszcze mo\u017cna si\u0119 natkn\u0105\u0107, czyli wyzwania w testach aplikacji mobilnych<\/h2>\n\n\n\n<p>Z czym przyjdzie si\u0119 mierzy\u0107 testerowi podczas przeprowadzanych test\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>B\u0142\u0119dy maj\u0105 swoje \u017ar\u00f3d\u0142a zar\u00f3wno po stronie hardware\u2019u jak i software\u2019u, wi\u0119c tester b\u0119dzie musia\u0142 zmierzy\u0107 si\u0119 z ograniczeniami narzucanymi przez okre\u015blony OS<\/li>\n\n\n\n<li>Emulatory nie odzwierciedlaj\u0105 prawdziwego zachowania aplikacji na urz\u0105dzeniu \u2013 w ko\u0144cu procent u\u017cytkownik\u00f3w, kt\u00f3rzy u\u017cywaj\u0105 aplikacji na emulatorze to ca\u0142e 0% ;), dlatego wa\u017cne s\u0105 testy na realnych urz\u0105dzeniach<\/li>\n\n\n\n<li>Je\u015bli aplikacja nie instaluje si\u0119 na urz\u0105dzeniu to ni mo\u017cna jej na nim przetestowa\u0107 \u2013 co wtedy?<\/li>\n\n\n\n<li>Aplikacje si\u0119 crashuj\u0105, zu\u017cywaj\u0105 du\u017co pami\u0119ci \u2013 czym mo\u017ce to by\u0107 spowodowane? Co z u\u017cyciem baterii, jak aplikacja zachowa si\u0119 podczas roz\u0142adowania urz\u0105dzenia, co si\u0119 stanie kiedy nadejdzie po\u0142\u0105czenie, co ze wsp\u00f3\u0142prac\u0105 aplikacji z wtyczkami np. lokalizacja<\/li>\n\n\n\n<li>I najwi\u0119kszy problem czyli GUI \u2013 problemy z poprawnym wy\u015bwietlaniem aplikacji na r\u00f3\u017cnych rozdzielczo\u015bciach<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Czym testowa\u0107?<\/h2>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/03\/diagram-2.jpg\"><img decoding=\"async\" width=\"839\" height=\"422\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/03\/diagram-2.jpg\" alt=\"automatyzacja testow blogersii sii\" class=\"wp-image-2254\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/03\/diagram-2.jpg 839w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/03\/diagram-2-300x151.jpg 300w\" sizes=\"(max-width: 839px) 100vw, 839px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Powy\u017cej przedstawiono rodzin\u0119 framework\u00f3w, kt\u00f3re mo\u017cna wykorzysta\u0107 do automatyzacji test\u00f3w aplikacji mobilnych. Pokr\u00f3tce opowiem o wi\u0119kszo\u015bci, za\u015b jeden zostanie om\u00f3wiony szerzej.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Robotium<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/02\/robotium.jpg\"><img decoding=\"async\" width=\"300\" height=\"277\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/02\/robotium-300x277.jpg\" alt=\"robotium\" class=\"wp-image-2002\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/02\/robotium-300x277.jpg 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/02\/robotium.jpg 570w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Jest to framework przeznaczony do tworzenia \u0142atwych, solidnie zautomatyzowanych przypadk\u00f3w testowych UI dla aplikacji Android. Ze wsparciem Robotium developerzy mog\u0105 pisa\u0107 funkcje przypadk\u00f3w u\u017cycia, scenariusze test\u00f3w systemowych obejmuj\u0105cych wiele aktywno\u015bci Androida. Robotium jest na licencji open source, zawiera wiele u\u017cytecznych metod do test\u00f3w UI, wspiera aplikacje natywne, webowe oraz hybrydowe. Dodatkowym plusem s\u0105 cz\u0119ste aktualizacje. Robotium jest podobne do Selenium \u2013 wykorzystywany jest zar\u00f3wno wtedy kiedy kod \u017ar\u00f3d\u0142owy jest znany i dost\u0119pny oraz kiedy dost\u0119pne jest tylko API a szczeg\u00f3\u0142y implementacji s\u0105 niejawne.<\/p>\n\n\n\n<p>Zalety Robotium:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Kod \u0142atwy do pisania<\/li>\n\n\n\n<li>Kod jest do\u015b\u0107 kr\u00f3tki<\/li>\n\n\n\n<li>Automatyczny pomiar czasu i op\u00f3\u017anie\u0144<\/li>\n\n\n\n<li>Automatyczne prze\u0142\u0105czenie bie\u017c\u0105cej aktywno\u015bci<\/li>\n\n\n\n<li>Automatyczne wyszukiwanie Views<\/li>\n\n\n\n<li>Automatycznie podejmuje w\u0142asne decyzje jak np. kiedy konieczne jest scrollowanie<\/li>\n\n\n\n<li>Wykonywanie test\u00f3w jest szybkie<\/li>\n<\/ul>\n\n\n\n<p>Przyk\u0142ad kodu:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\nPublic class EditorTest extends ActivityInstrumentationTestCase2&lt;EditorActivity&gt; {\nprivate Solo solo;\npublic EditorTest() {\nsuper(&quot;com.test.editor&quot;, EditorActivity.class);\n}\npublic void setUp() throws Exception {\nsolo = new Solo(getInstrumentation(), getActivity());\n}\npublic void testPreferenceIsSaved() throws Exception {\n \nsolo.sendKey(Solo.MENU);\nsolo.clickOnText(&quot;More&quot;);\nsolo.clickOnText(&quot;Preferences&quot;);\nsolo.clickOnText(&quot;Edit File Extensions&quot;);\n \nAssert.assertTrue(solo.searchText(&quot;rtf&quot;));\nsolo.clickOnText(&quot;txt&quot;);\nsolo.clearEditText(2);\nsolo.enterText(2, &quot;robotium&quot;);\nsolo.clickOnButton(&quot;Save&quot;);\nsolo.goBack();\nsolo.clickOnText(&quot;Edit File Extensions&quot;);\nAssert.assertTrue(solo.searchText(&quot;application\/robotium&quot;));\n}\n \n@Override\npublic void tearDown() throws Exception {\nsolo.finishOpenedActivities();\n}\n}\n<\/pre><\/div>\n\n\n<p><a href=\"http:\/\/robotium.com\/\" rel=\"nofollow\" >Strona g\u0142\u00f3wna Robotium<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Chcesz lepiej zrozumie\u0107 aplikacje i systemy, kt\u00f3re testujesz? Do\u0142\u0105cz do ModernTester, poznaj najpotrzebniejsze narz\u0119dzia, frameworki oraz j\u0119zyki programowania i \u0107wicz na specjalnie przygotowanych \u015brodowiskach testowych: <a href=\"https:\/\/moderntester.sii.pl\/\" rel=\"nofollow\" >Platforma e-learningowa ModernTester<\/a><\/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;2000&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;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;2&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;0\\\/5&quot;,&quot;size&quot;:&quot;30&quot;,&quot;title&quot;:&quot;Automatyczne testy aplikacji mobilnych - cz\u0119\u015b\u0107 1&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/5&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: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 2px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 30px; height: 30px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 24px;\">\n            <span class=\"kksr-muted\"><\/span>\n    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Na rynku pojawia si\u0119 coraz wi\u0119cej aplikacji oraz gier dost\u0119pnych na mobilne urz\u0105dzenia, wi\u0119c aby wyr\u00f3\u017cni\u0107 si\u0119 spo\u015br\u00f3d konkurencji nale\u017cy &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/automatyczne-testy-aplikacji-mobilnych-czesc-1\/\">Continued<\/a><\/p>\n","protected":false},"author":37,"featured_media":2323,"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":[276,275,274,146],"class_list":["post-2000","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-testowanie","tag-framework","tag-mobile","tag-robotium","tag-testing"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2016\/03\/automatyzacja-test\u00f3w-sii-blogersii.jpeg","category_names":["Testowanie"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/2000"}],"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\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=2000"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/2000\/revisions"}],"predecessor-version":[{"id":23458,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/2000\/revisions\/23458"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/2323"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=2000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=2000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=2000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}