Testovanie aplikácie nSoric aAurela
1. | Informačný systém Sensorical |
2. | Platforma Android |
3. | Návrh aplikácie nSoric aAurela |
4. | Implementácia aplikácie nSoric aAurela |
5. | Testovanie aplikácie nSoric aAurela
|
Obsah
Finálnou fázou vývoja aplikácie bolo jej testovanie a následné nasadenie do praxe. Testovanie aplikácie bolo zamerané výhradne na používateľské testy, ktoré boli rozdelené na dve kategórie: testovanie scenármi a testovanie používateľských rozhraní. Počas celého procesu vývoja aplikácie boli používané logovacie správy (konzolové výpisy), pomocou ktorých sa sledovali sekvencie vykonávaných krokov aplikácie. Vďaka použitiu logovacích správ bolo možné odstrániť logické chyby a výrazne optimalizovať jednotlivé funkcionality aplikácie. Vo finálnej verzii aplikácie boli všetky logovacie správy odstránené.
Testovacie scenáre
Podstatou tejto skupiny testov bolo testovanie funkcií a správania aplikácie na základe vopred definovaných scenárov. Každý testovací scenár mal vopred definované vstupy a akcie, ktoré bolo nutné vykonať. Po vykonaní vstupných akcií sa sledovalo správanie aplikácie a jej vhodné zareagovanie na výstupe.
Testovací scenár č.1
- Akcia - pokus o pripojenie na server so zle zadanou adresou.
- Vstup - zadaná neplatná webová adresa Sensorical servera.
- Výstup - aplikácia zareagovala správne, zobrazila upozornenie, že daný server nebol rozpoznaný a vyzvala používateľa na opravu zadaných údajov.
Testovací scenár č.2
- Akcia - pokus o prihlásenie do aplikácie bez vyplnenia prihlasovacích údajov.
- Vstup - prázdne polia prihlasovacích údajov.
- Výstup - aplikácia zobrazila oznámenie s nevhodným textom: “Nesprávne zadané prihlasovacie meno alebo heslo”.
- Oprava - text oznámenia bol zmenený na: “Musíte vyplniť všetky polia”.
Testovací scenár č.3
- Akcia - odhlásenie a opätovné prihlásenie do aplikácie.
- Vstup - výber akcie z kontextového menu “Odhlásiť sa”.
- Výstup - v aplikácii boli zapamätané prihlasovacie údaje naposledy prihláseného používateľa a týmito údajmi boli automaticky predvyplnené polia prihlasovacej obrazovky.
- Oprava - chyba bola odstránená: po odhlásení z aplikácie sú odstránené údaje o naposledy prihlásenom používateľovi.
Testovací scenár č.4
- Akcia - spustenie aplikácie bez internetového pripojenia.
- Vstup - používateľ je prihlásený - otvorená obrazovka prehľadu.
- Výstup - aplikácia zareagovala správne, zobrazila dialóg o nedostupnosti internetového pripojenia a ponúkla možné riešenia (pokračovať s naposledy stiahnutými údajmi, aktivácia internetového pripojenia).
Testovací scenár č.5
- Akcia - prioritné otvorenie prehľadu obľúbených senzorov.
- Vstup - používateľ pridá ľubovoľný senzor do zoznamu obľúbených, ukončí a znova spustí aplikáciu.
- Výstup - aplikácia zareagovala správne, po spustení prednostne otvorila používateľom vytvorený prehľad obľúbených senzorov.
Testovací scenár č.6
- Akcia - zmena orientácie obrazovky zariadenia.
- Vstup - používateľ zmení orientáciu obrazovky zariadenia z vertikálnej na horizontálnu a naopak.
- Výstup - aplikácia zareagovala správne, zmenila rozloženie obrazovky. Pre horizontálnu orientáciu boli použité horizontálne rozloženia, pre vertikálnu orientáciu, rozloženia vertikálne.
Testovanie na rôznych zariadeniach
Druhá skupina testov bola zameraná na grafické používateľské rozhranie jednotlivých obrazoviek aplikácie. Tieto testy zahŕňali inštaláciu aplikácie na zariadeniach s rôznymi verziami OS Android (5.0 Lollipop až 9.0 Pie) a následné testovanie správneho zobrazenia jednotlivých komponentov na obrazovke. Aplikácia bola testovaná celkovo na 8 rôznych zariadeniach:
Telefóny
- Samsung Galaxy S9: OS - 9.0 Pie, uhlopriečka - 5.8", rozlíšenie - 1440x2960 px
- Sony Xperia XZ2: OS - 9.0 Pie, uhlopriečka - 5.7", rozlíšenie - 1080x2160 px
- Samsung Galaxy S7: OS - 8.1 Oreo, uhlopriečka - 5.1", rozlíšenie - 1440x2560 px
- Huawei P10: OS - 9 Pie, uhlopriečka - 5.1", rozlíšenie - 1080x1920 px
- Huawei P Smart: OS - 8.0 Oreo, uhlopriečka - 5.65", rozlíšenie - 1080x2160 px
- Samsung Galaxy S5: OS - 6.0.1 Marshmallow, uhlopriečka - 5.1", rozlíšenie - 1080x1920 px
- Google Pixel XL (emulátor) - OS - 9 Pie, uhlopriečka - 5.5", rozlíšenie - 1440x2560 px
- Google Pixel 2 XL (emulátor): OS - 5.0 Lollipop, uhlopriečka - 6.0", rozlíšenie - 1440x2880 px
- Nexus 6P (emulátor): OS - 9 Pie, uhlopriečka - 5.7", rozlíšenie - 1440x2560 px
Tablety
- Samsung Galaxy Tab S2: OS - 7.0 Nougat, uhlopriečka - 9.7", rozlíšenie - 1536x2048 px
- Nexus 10 (emulátor): OS - 9.0 Pie, uhlopriečka - 10.1", rozlíšenie - 2560x1600 px
Výsledkom týchto testov boli odhalené nasledujúce chyby: texty pri spustení aplikácie na tablete boli príliš veľké, rozhádzané rozloženie komponentov prihlasovacej obrazovky pri horizontálnej orientácii obrazovky zariadenia. Všetky odhalené chyby boli opravené.
Záver
Výstupom tejto bakalárskej práce je funkčná Android aplikácia pre prístup a vizuálnu prezentáciu dát meracieho systému Sensorical. Aplikácia má interné využitie obmedzené len na používateľov evidovaných v tomto systéme.
Každý používateľ má možnosť voľby adresy servera, ku ktorému sa chce prihlásiť a ktorého dáta chce zobraziť. Najnovšie dáta sú zo servera sťahované automaticky vždy pri spustení resp. prihlásení do aplikácie. V prípade nedostupnosti internetového pripojenia sú používateľovi zobrazené naposledy stiahnuté dáta uložené v SQLite databáze. Obsah zobrazený prihlásenému používateľovi je filtrovaný na základe prístupových oprávnení, ktoré má každý používateľ pridelené administrátorom systému.
Výsledná aplikácia disponuje funkcionalitami ako vykresľovanie grafov nameraných hodnôt za zvolené obdobie, zobrazovanie trendov nameraných hodnôt, zobrazovanie štatistík nameraných hodnôt za zvolené obdobie (priemerná, maximálna, minimálna hodnota) a iné. Každý používateľ má taktiež možnosť vytvoriť si vlastný zoznam obľúbených senzorov, ktorý mu bude zobrazovaný prioritne. Aplikácia bola implementovaná s dôrazom na intuitívne používateľské rozhranie vytvorené podľa sprievodcu Material Design. Pre vyšší používateľský komfort a pre efektívnejšie využívanie rozložení obrazoviek boli vytvorené rôzne rozloženia komponentov pre vertikálnu a horizontálnu orientáciu obrazovky. Aplikácia bola implementovaná v dvoch jazykových mutáciách anglickej a slovenskej, medzi ktorými sa prepína automaticky podľa predvoleného jazyka zariadenia.
Po vytvorení bola aplikácia podrobená používateľským testom. Na základe týchto testov boli odstránené nedostatky a chyby. Tieto testy taktiež poskytli viaceré námety na zlepšenie (napr. zmena štýlu tlačidla pre pridanie senzora do obľúbených), ktoré boli zakomponované do finálnej verzie aplikácie. Odladená verzia aplikácie bola nasadená do praxe a prevádzkovaná na dvoch rôznych serveroch. Jeden zo serverov prijímal namerané dáta s miernymi výpadkami s čím si aplikácia dokázala poradiť a zobrazovala správne hodnoty adekvátne realite.
Z vyššie uvedených funkcií a vlastností môžeme konštatovať, že výsledná aplikácia spĺňa všetky požiadavky, ktoré boli pre jej vývoj definované. Na druhú stranu existujú funkcie, ktoré by mohli byť v budúcnosti a v prípade záujmu pridané ako napr. administrátorská časť systému, alebo možnosť registrácie do systému priamo cez aplikáciu.
Vývoj tejto mobilnej aplikácie bol pre mňa veľkým prínosom. Oboznámil som sa so základnými princípmi tvorby mobilných aplikácií pre platformu Android, naučil som sa pracovať s efektívnymi Android knižnicami Room a RxJava a rozšíril som svoje znalosti v objektovo orientovanom programovaní a jazyku Java.
Zoznam použitej literatúry
[1] Juraj Ďuďák. Dátový model systému Sensorical. Firemná dokumentácia. TNTech s.r.o. 2014.
[2] Juraj Ďuďák. Komunikačný protokol systému Sensorical. Firemná dokumentácia. TNTech s.r.o. 2016.
[3] Application Fundamentals. Google Inc. url: https://developer.android.com/guide/components/fundamentals (cit. 12. 03. 2019).
[4] Obrázok, Activity lifecycle and states. Google Inc. url: https://codelabs.developers.google.com/codelabs/android-training-activity-lifecycle-and-state (cit. 10. 03. 2018).
[5] Understand the Activity Lifecycle. Google Inc. url: https://developer.android.com/guide/components/activities/activity-lifecycle (cit. 12. 03. 2019).
[6] Save data in a local database using Room. Google Inc. url: https://developer.android.com/training/data-storage/room (cit. 17. 03. 2018).
[7] Defining data using Room entities. Google Inc. url: https://developer.android.com/training/data-storage/room/defining-data (cit. 18. 03. 2019).
[8] Accessing data using Room DAOs. Google Inc. url: https://developer.android.com/training/data-storage/room/accessing-data (cit. 18. 03. 2018).
[9] Database. Google Inc. url: https://developer.android.com/reference/androidx/room/Database.html (cit. 17. 03. 2018).
[10] Murphy. Android’s Architecture Components. CommonsWare LLC, 2018, s. 3–73. url: https://commonsware.com/AndroidArch/.
[11] Processes and threads. Google Inc. url: https://developer.android.com/guide/components/processes-and-threads (cit. 10. 03. 2018).
[12] Murphy. The Busy Coder’s Guide to Android Development. CommonsWare LLC, 2018, s. 1140–1152. isbn: 978-0-9816780-0-9.
[13] SubscribeOn. ReactiveX. url: http://reactivex.io/documentation/operators/subscribe.html (cit. 19. 03. 2018).
[14] Class Schedulers. ReactiveX. url: http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/schedulers/Schedulers (cit. 20. 03. 2018).
[15] Subscribe. ReactiveX. url: http://reactivex.io/documentation/operators/subscribe.html (cit. 19. 03. 2018).
[16] ObserveOn. ReactiveX. url: http://reactivex.io/documentation/operators/observeon.html (cit. 19. 03. 2018).