• Rezultati Niso Bili Najdeni

Primerjava z ogrodjem XCUITest

Za razliko od ogrodja Espresso je ogrodje XCUITest v povpreˇcju za 32%

poˇcasnejˇse kot naˇse ogrodje. Tudi v tem primeru velja, da se testi izvajajo s pomoˇcjo streˇznika Appium, ki sprejema in prevaja ukaze, zaradi ˇcesar bi se na naˇsem ogrodju morali testi izvajati dlje ˇcasa. Vendar obstaja kljuˇcna razlika med tem, kako ti dve ogrodji izvajata testne primere. Pri ogrodju XCUITest se pred izvedbo vsakega testa aplikacija na novo zaˇzene, kar pomeni, da nam pri testiranju ni treba skrbeti glede trenutnega stanja aplikacije, saj se pri ponovnem zagonu ponastavi. Po drugi strani pa zaradi tega izgubimo veliko ˇcasa med izvedbo vsakega testnega primera. Pri naˇsem ogrodju se aplikacija ne zaˇzene ponovno po vsakem testnem primeru, zato moramo skrbeti, da spremembe enega testnega primera ne vplivajo na druge testne primere. V ta namen izkoriˇsˇcamo metode, opisane v razdelku 4.2.1, in tako pridobimo na hitrosti izvajanja testnih primerov.

Poglavje 7 Zakljuˇ cek

V diplomski nalogi smo spoznali avtomatizacijo testiranja mobilnih aplikacij in izdelali ogrodje, ki poenoti in olajˇsa testiranje mobilnih aplikacij. Na zaˇcetku smo razloˇzili, kaj sploh je avtomatizacija programske opreme, zakaj se pogosto uporablja in kakˇsne so njene prednosti ter slabosti. Podali smo tudi kriterij, po katerem se laˇzje odloˇcimo, ali je avtomatizacija smiselna odloˇcitev za naˇs projekt.

Potem smo si ogledali dve glavni orodji, potrebni za izdelavo naˇsega ogrodja. Streˇznik Appium, ki skrbi za izvajanje interakcij na mobilnih na-pravah, ter jezik Python in orodje Pytest, ki nam omogoˇcata, da piˇsemo te-stne skripte. Oboje poveˇze odjemalec Appium za jezik Python, ki omogoˇca komunikacijo med testnimi skriptami in streˇznikom Appium. Da bi lahko primerjali naˇse ogrodje z drugimi, smo izbrali najbolj priljubljeni ogrodji za testiranje uporabniˇskega vmesnika za platformi iOs in Android. To sta Espresso in XCUITest, ki smo ju na kratko predstavili.

Nadaljevali smo s podrobnim opisom implementacije naˇsega ogrodja. Po-jasnili smo, kakˇsen je pomen ogrodja Pytest, kako ga uporabljamo za pisanje testnih skript in kateri del logike sodi v katero posebno funkcijo (razdelek 4.2.1). Potem smo premislili, katere funkcionalnosti so skupne vsem testnim primerom ne glede na aplikacijo, in jih dodali v razred BaseCase. Tako se pred vsakim izvajanjem testov najprej inicializirata gonilnik (odjemalec

55

Appium) in prva stran aplikacije. Da bi bilo vzdrˇzevanje in pisanje novih testov laˇzje, smo vpeljali naˇcrtovalski vzorec Page object model in razloˇzili, kako ustvarimo razrede za nove strani, kako dostopamo do elementov na strani in kako definiramo prvo stran testirane aplikacije. Za izvajanje inte-rakcij na napravi smo uvedli odjemalec Appium za jezik Python. Razkrili smo, kaj vse moramo definirati, da ustvarimo sejo Appium, nadgradili smo ˇze obstojeˇce metode odjemalca Appium, na koncu pa smo si ogledali, kako izva-jamo interakcije z elementi na mobilnih napravah. Ker smo ˇzeleli, da je naˇse ogrodje ˇcim bolj prilagodljivo, smo vpeljali konfiguracijsko datoteko, kjer smo povedali, na kateri napravi ˇzelimo testirati doloˇceno aplikacijo z izbra-nim gonilnikom Appium. Na koncu poglavja o implementaciji smo prikazali ˇse datoteˇcno strukturo ogrodja in pojasnili, kam sodijo katere datoteke.

Implementirano ogrodje smo nato primerjali z drugimi ogrodji (XCUI-Test in Espresso). S tem smo ˇzeleli prikazati glavne prednosti, pomanjklji-vosti in razlike, ki veljajo za naˇse ogrodje. Najprej je bilo treba izdelati mobilni aplikaciji za platformi Android in iOs, na katerih bi izvajali teste, in definirati testne primere na podlagi izdelane aplikacije. Tako smo izdelali preprosto aplikacijo, ki vsebuje stran za prijavo in stran z razliˇcni elementi, ki se pogosto uporabljajo pri izdelovanju aplikacij. Zanjo smo definirali devet testnih primerov in v vsakem ogrodju tudi implementirali teste, ki pokrivajo te testne primere. Nato smo jih primerjali med sabo po naˇcinu pridobiva-nja elementov, naˇcinu izvajanja interakcij, naˇcinu preverjanja trditev (angl.

asserting) in izgledu implementacije celotnega testnega primera, na koncu pa smo jih primerjali ˇse po hitrosti ter zanesljivosti. Ugotovili smo, da se naˇse ogrodje po naˇcinu in slogu pisanja testnih skript ne razlikuje veliko od ogrodja XCUITest. Pri hitrosti in zanesljivosti smo videli, da je bilo naˇse ogrodje pri testiranju 100-odstotno zanesljivo ter da je bilo znatno poˇcasnejˇse od ogrodja Espresso in znatno hitrejˇse od ogrodja XCUITest. Opisali smo glavne razloge za razlike v hitrosti med ogrodji in pojasnili, kako bi se te razlike lahko zmanjˇsale.

Glede na vse naˇsteto menimo, da je naˇse ogrodje smiselna izbira za

avto-Diplomska naloga 57 matizacijo testiranja mobilnih aplikacij povsod, kjer hitrost izvajanja testov ni kljuˇcnega pomena. Ponuja enostaven naˇcin pisanja testov v jeziku python, naˇcrtovalski vzorec page object model, ki skrbi za laˇzji razvoj in vzdrˇzljivost testnih primerov, in konfiguracijske datoteke, ki omogoˇcajo prilagajanje oko-lja in orodja Appium. Poleg vsega naˇstetega omogoˇca testiranje tako plat-forme iOs kot tudi Android z enim naborom kode. Zaradi tega posameznikom ne bi bilo veˇc treba razvijati testov za vsako platformo, podjetjem pa ne bi bilo treba imeti dveh loˇcenih ekip za pisanje in vzdrˇzevanje avtomatiziranih testov za testiranje uporabniˇskega vmesnika mobilnih aplikacij. Stroˇski ra-zvoja in vzdrˇzevanja bi se tako zmanjˇsali, prilagodljivost pa bi bila zaradi izbranih orodij s ˇcasom vse veˇcja.

Python, Pytest in Appium so zelo priljubljena in pogosto uporabljena orodja, zato se redno vzdrˇzujejo in nadgrajujejo. Za jezik Python se redno dodajajo nove knjiˇznice, ki jih lahko uporabimo, da si olajˇsamo razvoj te-stnih skript. Orodje Pytest pogosto dobiva nove funkcionalnosti, s katerimi lahko dodatno prilagodimo izvajanje testnih skript. Tudi orodje Appium se konstantno izboljˇsuje in ponuja nove nastavitve. Zaradi teh razlogov me-nimo, da bo razvoj testnih primerov s ˇcasom postal laˇzji, hitrost izvajanja pa niˇzja. Prav tako pa je ˇse veliko priloˇznosti za nadgradnjo in prilagajanje ogrodja. Lahko bi uporabili orodje, imenovano Allure, ki rezultate orodja Pytest prikaˇze s preglednim grafiˇcnim vmesnikom. Lahko bi dodali logiko znotraj metode teardown method, ki bi naredila sliko zaslona, ˇce test ne bi bil uspeˇsno izveden. Konfiguracijske datoteke bi lahko nadgradili s poljem, ki definira trenutno razliˇcico aplikacije, in ta podatek uporabili, da iz ustreznega skladiˇsˇca v oblaku samodejno prenesemo pravilno razliˇcico aplikacije.

Moˇznosti je veliko, bralcu pa prepuˇsˇcamo, da jih po ˇzelji implementira.

Celotna koda naˇsega ogrodja, mobilnih aplikacij in njunih testov, streˇznika in skripte, ki je izvajala testiranje hitrosti, je na voljo na sledeˇcem naslovu URL:

https://github.com/super-nexus/thesis

Clanki v revijah ˇ

[15] Sikender Mohsienuddin Mohammad. “Automation Testing in Informa-tion Technology”. V: International Journal of Creative Research Tho-ughts (IJCRT) 3 (2015), str. 118–125.

[16] Farmeena Khanl Mohd Ehmer Khan. “A comparative study of whi-tebox, black box and grey box testing techniques”. V: International Journal of Advanced Computer Science and Applications 3.6 (2012), str. 12–15.

[25] Rucha Gadgil Shiwangi Singh in Ayushi Chudgor. “Automated Te-sting of Mobile Applications using Scripting Technique: A Study on Appium”. V:International Journal of Current Engineering and Tech-nology 4 (2014), str. 3627–3630.

59

Celotna literatura

[1] Accessibility ID.url:https://developer.apple.com/documentation/

uikit/uiaccessibilityidentification/1623132-accessibilityidentifier (pridobljeno 14. 10. 2021).

[2] An Introduction to Automating iOS Mobile Apps with XCUITest Fra-mework. url: https : / / payodatechnologyinc . medium . com / an - introduction-to-automating-ios-mobile-apps-with-xcuitest-framework-ae59b4c5474d(pridobljeno 26. 9. 2021).

[3] Appium reset. url: http://appium.io/docs/en/commands/device/

app/reset-app(pridobljeno 10. 10. 2021).

[4] Desired capabilities. url: https : / / appium . io / docs / en / writing -running-appium/caps/ (pridobljeno 26. 10. 2021).

[5] Funkcionalne in nefunkcionalne zahteve. url: https : / / teaching . lavbic.net/TPO/2020-2021/V4.html(pridobljeno 4. 10. 2021).

[6] Github python client. url: https : / / github . com / appium / python -client (pridobljeno 23. 10. 2021).

[7] Tom Badgett Glenford J. Myers Corey Sandler. The Art of Software Testing. 2011.

[8] Google View Matchers.

[9] R Gupta.Agile Automation and Unified Functional Testing. 2016.

[10] MALIN ERIKSSON VICTOR HALLBERG. “Comparison between JSON and YAML for data serialization”. School of Computer Science in En-gineering, Royal Institute of Technology, 2011.

61

[11] Manoj Hans. Appium Essentials. 2015.

[12] Viljan Mahni´c Igor Roˇzanc.Pou evanje kakovosti programske opreme s poudarkom na modelu PSP. Univerza v Ljubljani, Fakulteta za raˇcunalniˇstvo in informatiko, 2005.

[13] Implicitly wait. url: https : / / appium . io / docs / en / commands / session/timeouts/implicit-wait/(pridobljeno 1. 11. 2021).

[14] Introduction to Appium. url: https://appium.io/docs/en/about-appium/intro/ (pridobljeno 25. 9. 2021).

[15] Sikender Mohsienuddin Mohammad. “Automation Testing in Informa-tion Technology”. V: International Journal of Creative Research Tho-ughts (IJCRT) 3 (2015), str. 118–125.

[16] Farmeena Khanl Mohd Ehmer Khan. “A comparative study of whi-tebox, black box and grey box testing techniques”. V: International Journal of Advanced Computer Science and Applications 3.6 (2012), str. 12–15.

[17] Official appium website.url:https://appium.io(pridobljeno 18. 9. 2021).

[18] Brian Okken.Python Testing with pytest: Simple, Rapid, Effective, and Scalable. 2017.

[19] Clark Evans Oren Ben-Kiki in Brian Ingerson. YAML Ain’t Markup Language (YAML™) Version 1.1. 2004.

[20] PyTest good practives. url: https://docs.pytest.org/en/latest/

explanation/goodpractices.html(pridobljeno 18. 10. 2021).

[21] PyYaml. url: https : / / pyyaml . org / wiki / PyYAMLDocumentation (pridobljeno 17. 10. 2021).

[22] Selector Strategies. url: https://appium.io/docs/en/commands/

element/find-elements/(pridobljeno 14. 10. 2021).

[23] Selenium — Understanding the WebDriver Protocol. url: https://

medium.com/@ishabbi/automation-with-selenium-understanding-the-webdriver-protocol-117d33f79b6c (pridobljeno 13. 12. 2021).

Diplomska naloga 63 [24] Selenium WebDriver. url: https://www.selenium.dev/projects/

(pridobljeno 13. 12. 2021).

[25] Rucha Gadgil Shiwangi Singh in Ayushi Chudgor. “Automated Te-sting of Mobile Applications using Scripting Technique: A Study on Appium”. V:International Journal of Current Engineering and Tech-nology 4 (2014), str. 3627–3630.

[26] Supported clients. url: http://appium.io/downloads.html (prido-bljeno 19. 9. 2021).

[27] Mohariˇc Tadej. “Testiranje programske opreme”. Fakulteta za elektro-tehniko, raˇcunalniˇstvo in informatiko, Univerza v Mariboru, 2015.

[28] Nicolas Christin Timothy Vidas Daniel Votipka. All Your Droid Are Belong To Us: A Survey of Current Android Attacks. Carnegie Mellon University, 2011.

[29] Touch Actions.url: https://appium.io/docs/en/writing-running-appium/touch-actions/(pridobljeno 3. 11. 2021).

[30] UI Automator. url: https://developer.android.com/training/

testing/ui-automator (pridobljeno 19. 9. 2021).

[31] User interface testing.url:https://developer.apple.com/library/

archive / documentation / DeveloperTools / Conceptual / testing _ with_xcode/chapters/09-ui_testing.html(pridobljeno 26. 9. 2021).

[32] View Matchers. url: https://www.tutorialspoint.com/espresso_

testing/espresso_testing_view_matchers.htm(pridobljeno 6. 11. 2021).

[33] What Is Automation Testing (Ultimate Guide To Start Test Automa-tion). url: https://www.softwaretestinghelp.com/automation-testing-tutorial-1/(pridobljeno 8. 12. 2021).

[34] XCUITest driver. url: https://appium.io/docs/en/drivers/ios-xcuitest/(pridobljeno 19. 9. 2021).

[35] YAML Tutorial: Everything You Need to Get Started in Minutes.url: https://www.cloudbees.com/blog/yaml- tutorial- everything-you-need-get-started(pridobljeno 13. 12. 2021).

[36] Denys Zelenchuk. Android Espresso Revealed: Writing Automated UI Tests. 2019.