Miks Androidi testimine?
Android on maailma suurim operatsioonisüsteem. Samal ajal on Android killustatud. on palju seadmeid ja Androidi versioone, millega teie rakendus peab ühilduma.
Pole tähtis, kui palju aega investeerite disaini ja juurutamisse, vead on vältimatud ja ilmnevad vead.
Selles õpetuses saate teada
- Miks Androidi testimine?
- Androidi testimisstrateegia
- Ühikutestid
- Integreerimiskatsed
- Töökatsed
- Süsteemi testid
- Androidide automatiseeritud testimine
- Androidi testimisraamistik
- Robolektrilise testimise raamistik
- Androidi testimise müüdid
- Androidi testimise parimad tavad
Androidi testimisstrateegia
Õige android-testimise strateegia peaks sisaldama järgmist
- Ühiku test
- Integreerimiskatse
- Töökatse
- Süsteemi test
Ühikutestid
Ühikutestid hõlmavad ühe või mitme programmi komplekte, mis on loodud lähtekoodi aatomiüksuse, näiteks meetodi või klassi kontrollimiseks.
Androidi platvormil on eelintegreeritud Junit 3.0 raamistik. See on avatud lähtekoodiga raamistik üksuste testimise automatiseerimiseks. Android Testing Framework on arendajale võimas tööriist efektiivse ühikutestimisprogrammi kirjutamiseks.
Androidi ja JUniti raamistiku integreerimine
Ühikutestimise täienduseks on kasutajaliidese (UI) testid. Need testid on seotud teie sihtrakenduse kasutajaliidese komponentidega. Kasutajaliidese testid tagavad, et teie rakendus tagastab seadme kasutaja toimingute järjestusele õige kasutajaliidese väljundi.
Tavalised kasutajaliidese toimingud rakenduses
Seadme kasutajaliidese testimise levinud viis on Android Instrumentation. Kuid sellel on jõudlusega seotud probleeme. Üks parimatest vahenditest Androidi kasutajaliidese testimise läbiviimiseks on Robotium.
Integreerimiskatsed
Integreerimistestimises ühendatakse ja kontrollitakse kõiki üksuse testitud mooduleid. Androidis hõlmavad integreerimistestid sageli integreerimise kontrollimist Android-komponentidega, näiteks teenuse testimine, tegevuse testimine, sisupakkuja testimine jne
Integreerimistesti tüübid Androidis
Androidi integreerimistesti läbiviimiseks kasutatakse palju testimisraamistikke, näiteks Troyd, Robolectric, Robotium.
Töökatsed
- Operatiivseid nimetatakse ka funktsionaalseteks testideks või aktsepteerimistestideks. Need on kõrgetasemelised testid, mis on loodud rakenduse täielikkuse ja õigsuse kontrollimiseks.
- Androidis on FitNesse avatud lähtekoodiga raamistik, mis hõlbustab sihtrakenduse operatiivtestide läbiviimist.
Süsteemi testid
Süsteemi testimisel testitakse süsteemi tervikuna ning kontrollitakse komponentide, tarkvara ja riistvara vastastikust mõju.
Androidis hõlmab süsteemi testimine tavaliselt ka järgmist
- GUI testid
- Kasutatavuse testid
- Jõudluskontroll
- Stressitestid
Ülaltoodud loendis keskendutakse jõudlustestimisele rohkem. Android-is jõudlustesti läbiviimiseks võite kasutada selliseid tööriistu nagu Traceview. See tööriist aitab teil oma rakendust siluda ja selle toimivust profileerida.
Androidide automatiseeritud testimine
Kuna android on killustatud, on vaja testida paljude seadmetega. Kuid see maksab ka teile raha. Automaatne Androidi testimine aitab kulusid vähendada
Androidi automatiseeritud testimise eelised
- Vähendage testjuhtumite sooritamise aega
- Suurendage oma arendusprotsessi tootlikkust
- Varajane veatuvastus võimaldab säästa tarkvara hoolduskulusid
- Kiiresti leitud ja parandatud vead rakendamisel
- Tagage tarkvara kvaliteet
Uurime järgmist 2 raamistikku
- Androidi testimisraamistik
- Robolektrilise testimise raamistik
Androidi testimisraamistik
Üks Androidi rakenduse standardne testimisraamistik on Androidi testimisraamistik . See on võimas ja hõlpsasti kasutatav testimisraamistik, mis on hästi integreeritud Android SDK tööriistadega.
Androidi testimisraamistiku arhitektuur
- Rakenduspakett on teie sihtrakendus, mida tuleb testida
- InstrumentationTestRunner on testjuhtumi jooksja, kes viib testrakenduse läbi sihtrakenduses. See sisaldab:
2a) Testitööriistad: SDK tööriistad ehitustesti jaoks. Need on integreeritud Eclipse IDE-sse või töötavad käsureana.
2b) MonkeyRunner: tööriist, mis pakub API-sid programmi kirjutamiseks, mis juhib Android-seadet või emulaatorit väljaspool Android-koodi.
- Testpakett on korraldatud testprojektideks. See pakett järgib nimetamiskorda. Kui testitava rakenduse paketi nimi on "com.mydomain.myapp", peaks testipakett olema "com.mydomain.myapp.test". Testipakett sisaldab 2 järgmist objekti:
3a) Testjuhtumiklassid: hõlmavad testimismeetodeid, mis viiakse läbi sihtrakenduses.
3b) Mock-objektid: sisaldab mõnitavaid andmeid, mida kasutatakse proovijuhtumite valimisisendina.
Androidi testjuhtumite klassid
AndroidTestCase klassi diagramm
- TestCase sisaldab JUniti meetodeid JUniti testi käivitamiseks
- TestSuite'i kasutatakse testjuhtumite komplekti käitamiseks
- InstrumentationTestSuite on TestSuite, mis süstib Instrumentationi InstrumentationTestCase'i enne nende käivitamist.
- InstrumentationTestRunner on testjuhtumi jooksja, kes viib sihtrakenduses testjuhtumi ellu.
- AndroidTestCase laiendab JUnit TestCase'i. See sisaldab meetodeid juurdepääsuks ressurssidele, nagu tegevuskontekst.
- ApplicationTestCase kontrollib rakendusklasse kontrollitud keskkonnas.
- InstrumentationTestCase kontrollib sihtrakenduse konkreetset funktsiooni või käitumist, näiteks kontrollib rakenduse kasutajaliidese väljundit.
- ActivityTestCase on baasklass, mis toetab rakendustegevuste testimist.
- ProviderTestCase on üksiku ContentProvideri testimise klass.
- ServiceTestCase'i kasutatakse teenindusklasside testimiseks testimiskeskkonnas. Samuti toetab see teenuse olelusringi.
- SingeLauchActivityTestCase'i kasutatakse ühe tegevuse testimiseks InstrumentationTestCase'iga.
- ActivityUnitTestCase
kasutatakse üksiku isoleeritud aktiivsuse testimiseks. - ActivityInstrumentationTestCase2
laiendab klassi JUnit TestCase. See ühendab teid rakenduse sihtimiseks seadmetega. Selle klassi abil saate juurde pääseda rakenduse GUI-komponendile ja saata kasutajaliidese kasutajaliidese sündmuse (klahvivajutus või puutesündmus).
Allpool on näide ActivityInstrumentationTestCase'ist. See kontrollib rakenduse Calculator kasutajaliidese tööd, kontrollib kasutajaliidese väljundite õigsust.
Testimise näide ActivityInstrumentationTestCase2
Robolektrilise testimise raamistik
Testimine Androidi testimisraamistiku abil seadme või emulaatoriga on keeruline. Katse ehitamine ja läbimine on aeglane ning nõuab palju arendustööd. Selle probleemi lahendamiseks on veel üks valik - Robolectric testing framework.
Robolektriline raamistik võimaldab teil Android-teste käivitada otse JVM-is, ilma et oleks vaja seadet või emulaatorit.
Robolectricu eelised
Robolektriliste testjuhtumite klassid
Robolektriku töö
- Nagu eespool näidatud, saab Robolectric teha järgmisi toiminguid:
- Registreeruge ja looge klass Shadow
- Peatuge Android-klassi laadimisest
- Kasutab javaassisti Android-klassi meetodite kehade tühistamiseks
- Varjude sidumine Android-klassi
- See võimaldab testitavat koodi käivitada ilma Android-keskkonnata.
Teised testimisraamistik
Lisaks ülalnimetatud raamistike testimisele on palju muid testimisraamistikke, näiteks:
- Android Junit Report, Androidi kohandatud seadmete testimise jooksja, mis loob XML-aruandeid teiste tööriistadega integreerimiseks.
- Expresso
- Appium
Androidi testimise müüdid
Paljud ettevõtted töötavad välja android-testimisstrateegiad, mis põhinevad levinud eksiarvamustel. Selles jaotises uuritakse mõnda Androidi testimise populaarset müüti ja tegelikkust.
Müüt nr 1: kõik Android-seadmed on ühesugused ... piisab emulaatorite testimisest
Alustame lihtsast näitest. Rakendus töötab suurepäraselt emulaatoritel, kuid mõnes reaalses seadmes kukub see käivitamisel kokku
Rakendus kukub reaalses seadmes käivitamise ajal kokku
Emulaatoritest ei piisa teie mobiilseadmete testimiseks. Peate oma rakendust testima reaalsetes seadmetes.
Müüt nr 2: piisab mõne tavalise seadme testimisest
- Erinevates seadmetes näeb teie rakendus välja erinev, kuna erinevatel seadmetel on erinev riistvara, ekraanisuurus, mälu jne. Peate oma rakendust testima erinevates seadmetes, operatsioonisüsteemi versioonides, operaatorvõrkudes ja asukohtades.
Müüt nr 3: piisab uurimuslikust testimisest vahetult enne käivitamist
- Üldiselt kavandame kõigis testides testjuhtumid ja täidame need. Kuid uurimuslikus testimises tehakse testide kavandamine ja teostamine kõik koos.
- Uurimistestimisel pole plaani ega ettevalmistust, siis testija teeks testid, mida ta tahab teha. Mõnda funktsiooni testitakse korduvalt, samas kui mõnda funktsiooni ei testita täielikult.
Müüt nr 4: kui rakenduses on vigu, saavad kasutajad sellest aru
- Kui rakendus ei tööta ja sellel on vigu, desinstallivad kasutajad teie rakenduse
- Kvaliteediprobleemid on esimene halva arvustuse põhjus Google Plays. See mõjutab teie mainet ja kaotate kliendi usalduse.
Seetõttu on oluline, et oleks olemas korralik android-testimise strateegia
Androidi testimise parimad tavad
- Rakenduste arendajad peaksid testi kirjutamise ajal looma testjuhtumid
- Kõik testjuhtumid tuleks koos lähtekoodiga salvestada versioonihalduses
- Kasutage pidevat integreerimist ja käivitage testid iga kord, kui kood muudetakse
- Vältige emulaatorite ja juurdunud seadmete kasutamist