Android Alkalmazástesztelési oktatóanyag automatizálási keretrendszerrel

⚡ Okos összefoglaló

Android Az alkalmazástesztelés egy felépítést ellenőrz egy széttagolt eszközkörnyezetben, az egység-, integrációs, működési és rendszerellenőrzéseket automatizálási keretrendszerekkel kombinálva, amelyek vagy egy eszközön, vagy közvetlenül a JVM-en futnak.

  • 🔘 Miért számít: Android számtalan eszköz- és verziókombináción fut, így a kompatibilitási hibák szinte biztosak.
  • ☑️ Négy tesztszint: Az egység-, integrációs, működési és rendszertesztelések mindegyike más-más hibaosztályt azonosít.
  • Eszközön belüli keretrendszer: Az Android tesztelési keretrendszer épít JUnit és a műszerezés.
  • 🧪 JVM alternatíva: Roboelektromos árnyékok Android osztályok, így a csomagok eszköz vagy emulátor nélkül futnak a JVM-en.
  • 🇧🇷 Szélesebb eszköztár: Espresso, UI Automator és Appium kiterjeszteni a lefedettséget a beépített osztályokon túlra.
  • 📊 Kerülendő mítoszok: Az emulátorok önmagukban, néhány készülék, vagy az utolsó pillanatban végzett kísérleti tesztelés hibákat hagyhat maga után a gyártásban.

Android alkalmazástesztelési oktatóanyag, amely a tesztelési szinteket, az automatizálási keretrendszereket és az eszközlefedettséget tárgyalja

Miért Android Tesztelés?

Android a világ legnagyobb operációs rendszere. Egy időben, Android széttagolt: rengeteg eszköz van, és Android verziók, amelyekkel az alkalmazásnak kompatibilisnek kell lennie.

Nem számít, mennyi időt fektetsz a tervezésbe és a megvalósításba, a hibák elkerülhetetlenek, és hibák fognak megjelenni.

Android Tesztelési stratégia

Egy helyes Android a tesztelési stratégiának a következőket kell tartalmaznia

  1. Egységvizsgálat
  2. Integrációs teszt
  3. Operanemzeti teszt
  4. Rendszer teszt

Mértékegységek

Az egységtesztek olyan programkészletek, amelyek célja a forráskód egy atomi egységének, például egy metódusnak vagy egy osztálynak az ellenőrzése.

Az Android platform előre integrálva van a JUnit 3.0 keretrendszer. Ez egy nyílt forráskódú keretrendszer az automatizáláshoz Egység tesztelése, és lehetővé teszi a fejlesztők számára, hogy hatékony egységtesztelési programokat írjanak.

Az egységtesztelés kiegészítéseként a felhasználói felület (UI) teszteket is elvégezhetjük. Ezek a célalkalmazás felhasználói felületének komponenseit vizsgálják, és biztosítják, hogy az eszközön végrehajtott felhasználói műveletek sorozata esetén a helyes kimenetet adja vissza.

Gyakori felhasználói felületi műveletek egy Android olyan alkalmazások, mint a koppintás, gépelés és húzás

Az eszközön végzett felhasználói felület tesztelésének leggyakoribb módja a következő: Android Hangszerelés. De ennek teljesítményproblémái vannak. Az egyik legjobb eszköz a felhasználói felület tesztelésére Android is Robotium.

⚠️ Verzió megjegyzés: JUnit 3 osztály, mint például InstrumentationTestCase elavultak az API 24-nél; a jelenlegi projektek használják AndroidX teszt, Espresso és a UI Automator. Robotium 2016 óta nem jelent meg.

Integrációs tesztek

In Integrációs tesztelés, az összes egységtesztelt modult egyesítik és ellenőrzik. Android Ez gyakran azt jelenti, hogy ellenőrizni kell az olyan komponensekkel való integrációt, mint a Szolgáltatás, Tevékenység és Tartalomszolgáltató tesztelése.

Az integrációs teszt típusai on Android szolgáltatás-, tevékenység- és tartalomszolgáltatói tesztelést lefedő

Számos tesztelési keretrendszert használnak integrációs tesztek elvégzésére Android, mint például a Troyd, a Robolectric és Robotium.

Operanemzeti tesztek

OperaA funkcionális vagy elfogadási tesztek, más néven az interaktív tesztek, olyan magas szintű tesztek, amelyek az alkalmazás teljességét és helyességét ellenőrzik.

In Android, FitNesse egy nyílt forráskódú keretrendszer, amely megkönnyíti a működési tesztek futtatását a célalkalmazáson.

Rendszertesztek

In Rendszer tesztelés a rendszer egészét tesztelik, és ellenőrzik az összetevők, a szoftver és a hardver közötti interakciót.

In Android, A rendszertesztelés általában tartalmazza

  • GUI tesztek
  • Használhatósági tesztek
  • Teljesítményvizsgálatok
  • Stresszteszt

A fenti listában Teljesítményfelmérés nagyobb hangsúlyt kap. Használhat olyan eszközöket, mint pl Tracszemle teljesítménytesztek elvégzésére AndroidEz az eszköz segíthet az alkalmazás hibakeresésében és a teljesítményének profiljának felépítésében. Traca felülvizsgálatot most elavultnak tekintik, a javára a CPU Profiler.

Automatizált Android Tesztelés

As Android széttöredezett, sok eszközön kell tesztelni, és ez pénzbe kerül. Automatizált Android A tesztelés segít csökkenteni ezeket a költségeket.

Az automatizált előnyök Android tesztelés

  • Csökkentse a tesztesetek végrehajtásának idejét
  • Növelje fejlesztési folyamatának termelékenységét
  • Korai hibafelismerés, megtakaríthatja a szoftver karbantartási költségeit
  • Gyorsan megtalálta és kijavította a megvalósítás során fellépő hibákat
  • Biztosítsa a szoftver minőségét

A következő 2 keretrendszert vizsgáljuk meg

  • Android Tesztelési keretrendszer
  • Robolectric tesztelési keretrendszer

Android tesztelési keretrendszer

Az egyik szabványos tesztelési keretrendszer a Android az alkalmazások a Android tesztelési keretrendszer. Jól integrált a Android SDK eszközök, és architektúrája három részből áll.

  1. Az alkalmazáscsomag a célalkalmazás, amelyet tesztelni kell.
  2. Az InstrumentationTestRunner a Teszt eset futtatóprogram, amely teszteseteket hajt végre a célalkalmazáson. A következőket tartalmazza:
    • Teszteszközök: SDK eszközök tesztek készítéséhez. Ezek integrálva vannak az IDE-be, vagy parancssorból futtathatók.
    • MonkeyRunner: Egy eszköz, amely API-kat biztosít olyan programok írásához, amelyek egy Android eszköz vagy emulátor kívül Android kód.
  3. A tesztcsomag tesztprojektekbe van szervezve, és elnevezési konvenciót követ. Ha a tesztelt alkalmazás csomagneve „com.mydomain.myapp”, akkor a tesztcsomag neve „com.mydomain.myapp.test” kell legyen. A tesztcsomag 2 objektumot tartalmaz:
    • Teszteset osztályok: tartalmazzák a célalkalmazáson végrehajtandó tesztmetódusokat.
    • Mintatárgyak: tartalmazzon mock adatokat, amelyeket tesztesetek minta bemeneteként fognak használni.

Android Tesztesetek osztályai

AndroidTestCase osztálydiagram, amely a következőt mutatja: JUnit és az instrumentációs tesztesetek hierarchiája

  1. A TestCase tartalmazza JUnit futtatási módszerek JUnit teszt
  2. A TestSuite-et tesztesetek futtatására használják
  3. Az InstrumentationTestSuite egy olyan TestSuite, amely Instrumentation elemeket injektál az InstrumentationTestCase-be a futtatásuk előtt.
  4. Az InstrumentationTestRunner teszteseteket futtat a célalkalmazáson.
  5. AndroidTestCase kiterjesztések JUnit TestCase metódusokkal olyan erőforrások eléréséhez, mint az Activity Context.
  6. Az ApplicationTestCase ellenőrzi az Application osztályokat egy ellenőrzött környezetben.
  7. Az InstrumentationTestCase egy adott funkciót vagy viselkedést ellenőrz, például az alkalmazás felhasználói felületének kimenetét.
  8. Az ActivityTestCase egy alap osztály, amely támogatja az alkalmazástevékenységek tesztelését.
  9. A ProviderTestCase egy osztály egyetlen ContentProvider tesztelésére.
  10. A ServiceTestCase szolgáltatásosztályokat tesztel tesztkörnyezetben, és támogatja a szolgáltatás életciklusát.
  11. A SingleLaunchActivityTestCase egyetlen tevékenység InstrumentationTestCase segítségével történő tesztelésére szolgál.
  12. AktivitásEgységTeszteset egyetlen izolált aktivitás tesztelésére szolgál.
  13. AktivitásMűszerezésTeszteset2 kiterjeszti a JUnit TestCase osztály, és instrumentációval összekapcsolja Önt a célalkalmazással, így hozzáférhet grafikus felhasználói felület komponenseihez, és felhasználói felület eseményeket, például billentyűleütéseket vagy érintéseket küldhet.

Az alábbiakban az ActivityInstrumentationTestCase metódus egy példája látható. Ez a metódus egy Számológép alkalmazás felhasználói felületének működését, valamint a felhasználói felület kimeneteinek helyességét ellenőrzi.

ActivityInstrumentationTestCase2 példa a kalkulátor felhasználói felületének kimenetének ellenőrzésére Android

Roboelektromos tesztelési keretrendszer

Tesztelés a következővel: Android A tesztelési keretrendszer egy eszközzel vagy emulátorral nehézkes. A tesztek felépítése és futtatása lassú és sok fejlesztési erőfeszítést igényel. A probléma megoldására van egy másik lehetőség: a Robolectric tesztelési keretrendszer.

A Robolectric lehetővé teszi a futást Android közvetlenül a JVM-en tesztel, eszköz vagy emulátor nélkül.

Robolectric teszteset osztályok

A Robolectric a következő műveleteket tudja végrehajtani:

  • Regisztráljon és hozzon létre egy Shadow osztályt
  • Elfogja a betöltését Android osztály
  • Felhasználás Javaassist a metódus törzseinek felülbírálásához Android osztály
  • Árnyék objektum hozzárendelése Android osztály

Ez lehetővé teszi a tesztelt kód végrehajtását anélkül, hogy Android környezetben.

Egyéb tesztelési keretrendszerek

A fent említett tesztelési keretrendszereken kívül számos más is létezik, például:

Mítoszok a Android Tesztelés

Sok vállalkozás fejlődik Android Tesztelés olyan stratégiák, amelyek általános tévhiteken alapulnak. Ez a rész néhány népszerű mítoszt és valóságot vizsgál meg Android tesztelés.

1. mítosz: Minden Android az eszközök ugyanazok, tehát az emulátorokon való tesztelés elegendő

Egy alkalmazás tökéletesen működhet emulátorokon, mégis összeomolhat végrehajtás közben néhány valódi eszközön.

Android alkalmazás összeomlási párbeszédpanel megjelenítése valós eszközön végrehajtás közben

Az emulátorok nem elegendőek a mobilos teszteléshez. Az alkalmazásodat valódi eszközökön kell tesztelned.

2. mítosz: Elég néhány gyakori eszközön tesztelni

Az alkalmazásod másképp néz ki a különböző eszközökön, mivel a hardver, a képernyőméret és a memória eltérő. Teszteld különböző eszközökön, operációs rendszer verziókon, szolgáltatói hálózatokon és helyszíneken.

3. mítosz: Elegendő a közvetlenül a bevezetés előtti feltáró tesztelés

  • A legtöbb tesztelés során először teszteseteket tervezünk, majd végrehajtjuk azokat; a feltáró tesztelés során a tervezés és a végrehajtás együtt történik.
  • Nincs terv vagy előkészület, így a tesztelő bármilyen tesztet lefuttat, amit csak akar. Egyes függvényeket ismételten tesztelnek, míg másokat soha.

4. mítosz: Ha vannak hibák az alkalmazásban, a felhasználók meg fogják érteni

  • Ha az alkalmazás nem működik és hibákat tartalmaz, a felhasználók eltávolítják az alkalmazást.
  • A minőségi problémák a rossz értékelések elsődleges okai Google Játssz, rontva a hírnevedet és elveszítve az ügyfelek bizalmát.

Ezért elengedhetetlen a megfelelő Android tesztelési stratégia van érvényben.

A legjobb gyakorlatok itt Android Tesztelés

  • Az alkalmazásfejlesztőknek a kódírással egyidejűleg kell létrehozniuk a teszteseteket
  • Minden tesztesetet verziókövetésben kell tárolni, a forráskóddal együtt.
  • Használjon folyamatos integrációt, és futtasson teszteket minden alkalommal, amikor a kódot módosítja
  • Kerüld az emulátorokra és a rootolt eszközökre való kizárólagos támaszkodást; ellenőrizd az eredményeket valódi hardvereken egy ellenőrrel, például uiautomatorviewer

GYIK

Nem. A modern projektek használják AndroidX teszt ezzel: JUnit 4 és AndroidJUnitFutó. A JUnit Az itt leírt 3 teszteset-osztály elavulttá vált az API 24-nél, és csak a korábbi csomagokhoz maradt meg.

A gépi tanulás kijavítja a lokátorokat az elrendezés módosítása után, csoportosítja a duplikált összeomlási és ANR-jelentéseket, és megjósolja, hogy egy módosítás mely teszteket fog hibásan teljesíteni, így rövidebb ideig fut egy csomag véglegesítésenként.

A Copilot egy leírt forgatókönyv alapján írja ki a közös onView és check mintákat. Nem ismerheti a nézetazonosítókat vagy az időzítést, ezért minden javaslatot egyszer futtasson le, és először állítsa be az egyezőket.

Espresso A saját alkalmazásodon belül tesztel, gyors és stabil. Az UI Automator átlépi az alkalmazások határait, így illeszkedik az értesítésekhez, beállításokhoz és rendszerpárbeszédekhez. Sok csomag mindkettőt használja.

Az ActivityScenario API a következőben: AndroidX Teszt, általában egy ActivityScenarioRule szabállyal. Egy tevékenységet mozgat át meghatározott életciklus-állapotokon anélkül, hogy kiterjesztené az elavult teszteset-osztályt.

Kezdj egy alsó kategóriás, egy középkategóriás és egy újabb csúcskategóriás készülékkel, amely két vagy három kategóriás modellt foglal magában. Android verziók, plusz egy tablet. További hardver vásárlása helyett a kiadás előtt adjon hozzá eszközfelhő-futtatásokat.

A build machine JVM-en futnak árnyékosztályokkal valódi eszköz helyett, így nincs csomagolás, telepítés vagy emulátorindítás. Ez minden commitnál praktikussá teszi őket.

Googlejelenlegi tesztelési könyvtárkészletét. Csomagolja a JUnit és Igazság-kiterjesztések, AktivitásSzcenárió, Espresso és egy függőségi csoport mögött álló UI Automator, amely eszközökön, emulátorokon és a Robolectric-en működik.

Foglald össze ezt a bejegyzést a következőképpen: