Espresso testing framework

Operačný systém Android dominuje na trhu s mobilnými telefónmi s neuveriteľným 71 % podielom. Používatelia trávia na svojich smartfónoch viac času rôznymi činnosťami, ako sú hranie hier, posielanie správ, videohovory, čítanie, zábava, nakupovanie, stretnutia a práca, čo viedlo spoločnosti k vývoju aplikácií pre Android.

Keďže na trhu je viac aplikácií pre Android, máme viac možností výberu, a preto musia spoločnosti poskytovať špičkové aplikácie, aby si používateľov udržali a zaujali. Testovanie používateľského rozhrania zohráva významnú úlohu pri poskytovaní skvelého používateľského zážitku.

Espresso Testing kontroluje aplikáciu pre Android tým, že poskytuje automatizáciu používateľského rozhrania pre Android. Pomocou Espresso test frameworku môže QA tester zabezpečiť, aby ich aplikácia pre Android poskytovala používateľský zážitok, ktorý je v súlade s obchodnými požiadavkami.

Čo je Espresso framework?

Espresso je testovací framework, ktorý pomáha vývojárom písať automatizované testovacie prípady na testovanie používateľského rozhrania (UI). Vyvinula ho spoločnosť Google a jeho cieľom je poskytnúť jednoduchý, ale výkonný nástroj.

Espresso je jedným z populárnych frameworkov na testovanie aplikácií pre Android, ktorý je široko používaný softvérovými testermi. Umožňuje testovanie čiernej skrinky a zároveň umožňuje QA testovať fragmenty a jednotlivé komponenty počas vývojových cyklov.

Espresso framework je súčasťou AndroidX a je založený na UI Automator (frameworkom na automatizované testovanie aplikácií), ktorý je súčasťou systému Android SDK. Espresso testing sa používa na testovanie interakcie používateľa s používateľským rozhraním aplikácie.

Espresso umožňuje vývojárom testovať natívne zobrazenia systému Android, ako aj hybridné webové zobrazenia. Testovacie prípady využívajúce tento framework možno napísať v jazyku Java alebo Kotlin.

Pochopenie testovania Espresso v systéme Android

Prvým krokom pri začatí práce s Espresso je dôležité vžiť sa do role používateľa. Vytvor testovacie prípady tak, že najprv určíš, ktorý prvok používateľského rozhrania sa má testovať a potom na ňom iniciuješ nejakú akciu (v podstate s ním interaguješ). Má to zmysel, pretože to spôsobuje, že testeri píšu automatizované testovacie prípady, ktoré napodobňujú interakcie používateľa s používateľským rozhraním.

Komponenty API aplikácie Espresso framework

  1. Espresso

Toto je východiskový bod pre všetky testovacie prípady. Táto zložka poskytuje vstupné body alebo metódy na spustenie interakcie so zobrazením aplikácie. Každý pohľad aplikácie má dve zložky.

Prvou je časť pohľadu, ktorá patrí aplikácii. Testeri s ňou budú môcť interagovať pomocou metód onView() a onData(). Druhú časť pohľadu tvoria komponenty, ktoré poskytuje operačný systém ( tlačidlo domovskej obrazovky, tlačidlo späť a iné). Espresso poskytuje aj API na interakciu s komponentmi, ktoré nie sú súčasťou aplikácie. Napríklad metóda pressBack() iniciuje návrat späť.

  1. ViewMatchers

Pohľady sú vždy v hierarchii nazývanej View Hierarchy (Hierarchia pohľadov). Aby sa testovacie prípady mohli pohybovať v hierarchii zobrazení, používajú sa ViewMatchers. Technicky sú to kolekcie objektov a implementujú rozhranie Matcher. Testeri budú môcť odovzdať jeden alebo viac týchto objektov metóde OnView(), ktorú poskytuje Espresso Component.

  1. ViewActions

Tieto komponenty definujú akciu, ktorá sa má vykonať na akomkoľvek danom View. Espresso umožňuje testerom posielať viac ako jednu ViewAction ako kolekciu do metódy Interaction (Interakcia). Príkladom akcie View by mohla byť metóda click(), ktorá pomáha testovaciemu skriptu kliknúť na komponent používateľského rozhrania daného View.

  1. ViewAssertions

Assertions dopĺňajú testovací prípad. Sú to komponenty, ktoré kontrolujú, či test prešiel alebo zlyhal. V systéme Espresso Android možno ViewAssertions odovzdať metóde Check() z balíka ViewInteraction. Assertion o zhode je najčastejšie používaná kontrola, ktorá overuje konečný stav pohľadu s tým, čo sa očakáva.

Test Espresso Android Cheat Sheet

Vďaka spoločnosti Google majú testeri k dispozícii prehľadnú tabuľku, na ktorú sa môžu odvolávať pri vytváraní testovacích prípadov pomocou programu Espresso. Nižšie uvedený cheat sheet obsahuje odkazy na väčšinu prípadov, ktoré sú súčasťou komponentov Espresso, o ktorých sme hovorili skôr. Tu si môžeš stiahnuť cheatsheet.

espresso framework cheatsheet
Zdroj: https://android.github.io/android-test/downloads/espresso-cheat-sheet-2.1.0

Funkcie Espresso frameworku

Niektoré z hlavných funkcií podporovaných nástrojom Espresso sú tieto:

  • Veľmi jednoduché rozhranie API, ktoré sa ľahko naučíš.
  • Vysoko škálovateľné a flexibilné.
  • Poskytuje samostatný modul na testovanie komponentu Android WebView.
  • Poskytuje samostatný modul na overovanie, ako aj na napodobovanie Android Intents (Intent umožňuje spustiť činnosť v inej aplikácii tak, že v objekte Intent opíšeš akciu, ktorú chceš vykonať, napríklad „view a map“ alebo „take a picture“).
  • Poskytuje automatickú synchronizáciu medzi aplikáciou a testami.

Výhody Espresso framework

  • Ľahko sa nastavuje a používa.
  • Je úzko integrovaný s nástrojmi Android SDK.
  • Má vynikajúcu podporu pre spúšťanie testov na skutočných zariadeniach a emulátoroch.
  • Je výkonný a možno ho použiť na testovanie všetkých druhov aplikácií Android.
  • Má otvorený zdrojový kód a je dobre zdokumentovaný.
  • Spoločnosť Google ho neustále vylepšuje.
  • Podporuje JUnit4.
  • Automatizácia používateľského rozhrania vhodná na písanie testov čiernej skrinky.
  • Stabilný a rýchly framework.
  • Kompaktné API.
  • Keďže je založený na jazyku Java/Kotlin, Espresso poskytuje intuitívny spôsob práce pre vývojárov Androidu.
  • Espresso urýchľuje spätnú väzbu vývojárov tým, že umožňuje kompilovať testy do samostatného APK.

Nevýhody Espresso framework

  • Espresso podporuje iba programovacie jazyky Java a JUnit.
  • Espresso nie je vždy schopné správne simulovať interakciu používateľa s aplikáciou, ktorá používa viac vlákien.
  • Môže mať problémy s testovaním aplikácií, ktoré používajú animácie.
  • Espresso môže mať problémy s testovaním aplikácií, ktoré používajú neobvyklé vstupy, ako sú napríklad vstupy z externých zariadení (ak aplikácia používa vstup z kamery, Espresso môže mať problémy s overením, že aplikácia správne spracováva obrázky).
  • Espresso je určené len na testovanie používateľského rozhrania. Vzhľadom na rozsah toho, čo musíš testovať, to môže byť obmedzujúce.
  • Na testovanie pomocou aplikácie Espresso musíš mať prístup k zdrojovému kódu aplikácie.
  • Aby si mohol používať Espresso, musíš mať základné znalosti o testovaní aplikácií pre Android.

Typy automatizačných testov espresso framework

Espresso ponúka dva typy testov pre androidové aplikácie, oba sú stručne vysvetlené nižšie:

Funkčné testy

Tieto testy testujú funkčnosť aplikácie a overujú, či funguje podľa očakávaní.

Funkčné testy možno použiť na overenie, či aplikácia správne reaguje na vstupy používateľa, či zobrazuje správne údaje a či sa správa tak, ako očakávaš. Môžu sa použiť aj na testovanie toku aplikácie a zabezpečenie správneho fungovania všetkých častí.

Funkčné testy sú nevyhnutné, pretože pomáhajú zabezpečiť, aby bola aplikácia spoľahlivá a bez chýb. Pravidelným vykonávaním funkčných testov môžeš zachytiť a odstrániť prípadné problémy skôr, ako spôsobia vážne škody na tvojej aplikácii.

Testy používateľského rozhrania

Tieto testy testujú používateľské rozhranie tvojej aplikácie a kontrolujú, či vyzerá a pôsobí správne. Možno ich použiť na kontrolu rozloženia aplikácie, overenie vzhľadu textu a ikon a testovanie funkčnosti tlačidiel a iných prvkov používateľského rozhrania.

V tejto triede môžeš napísať testy na kontrolu rozloženia tvojej aktivity, overenie vzhľadu textu a ikon a testovanie funkčnosti tlačidiel a iných prvkov používateľského rozhrania. Môžeš ju použiť aj na testovanie toku aplikácie a zabezpečenie správneho fungovania všetkých častí.

K dispozícii sú však aj iné frameworky pre testovanie mobilných zariadení, poďme sa pozrieť na ich porovnanie:

Espresso vs. Appium

  • Oba frameworky sú určené na automatizované testovanie mobilných aplikácií.
  • Oba frameworky sú open-source.
  • Oba frameworky sú považované za spoľahlivé.
  • Espresso podporuje testovanie natívnych aplikácií na Androide, zatiaľ čo Appium podporuje testovanie natívnych a aj hybridných a webových aplikácií na Androide a iOS.
  • Espresso je považované za jednoduchšie na použitie ako Appium.
  • Espresso je považované za rýchlejšie ako Appium.
  • Appium sa považuje za flexibilnejšie ako Espresso.
  • Espresso je integrované s Android Studio, zatiaľ čo Appium je integrované s rôznymi IDE, ako sú Eclipse, IntelliJ IDEA a Visual Studio Code.

Espresso vs. XCUITest

  • Oba frameworky sú určené na automatizované testovanie mobilných aplikácií.
  • Espresso podporuje testovanie natívnych aplikácií na Androide, zatiaľ čo XCUITest podporuje testovanie natívnych aplikácií na iOS.
  • Espresso a XCUITest sú obe považované za jednoduché na použitie.
  • Espresso a XCUITest sú považované za rýchle a spoľahlivé.
  • XCUITest je považované za flexibilnejšie ako Espresso.
  • Espresso je integrované s Android Studio, zatiaľ čo XCUITest je integrované s Xcode.
  • Oba frameworky sú open-source.

Espresso vs. Selendroid

  • Oba frameworky sú určené na automatizované testovanie mobilných aplikácií.
  • Oba frameworky sú open-source.
  • Oba frameworky sú považované za spoľahlivé.
  • Espresso podporuje testovanie natívnych aplikácií na Androide, zatiaľ čo Selendroid podporuje testovanie natívnych aplikácií na Androide.
  • Espresso je považované za jednoduchšie na použitie ako Selendroid.
  • Espresso je považované za rýchlejšie ako Selendroid.
  • Selendroid je považované za flexibilnejšie ako Espresso.
  • Espresso je integrované s Android Studio, zatiaľ čo Selendroid je možné integrovať s rôznymi IDE, ako sú Eclipse, IntelliJ IDEA a Visual Studio Code.

Espresso vs. Robotium

  • Oba frameworky sú určené na automatizované testovanie mobilných aplikácií na Androide.
  • Oba frameworky sú open-source a bezplatné.
  • Espresso podporuje iba natívnu aplikáciu na Androide, zatiaľ čo Robotium podporuje natívnu, hybridnú a webovú aplikáciu na Androide.
  • Espresso je považované za jednoduchšie na použitie ako Robotium.
  • Espresso je považované za rýchlejšie ako Robotium.
  • Obe platformy sú považované za spoľahlivé.

Ak vieš po nemecky a si IT tester, pozri si naše firemné benefity a reaguj na pracovné ponuky.

O autorovi

Michaela Kojnoková

Agile Test Engineer

Po štúdiu informatiky na ŽU a TUKE som sa najviac ponorila do oblasti automatizácie testovania. Okrem toho sa venujem tvorbe webov, databázam, dátovej analytike, umelej inteligencii a strojovému učeniu. Mám rada cestovanie, šport a najviac si užívam čas strávený v prírode s mojimi blízkymi. LinkedIn

Daj nám o sebe vedieť