Appium - instalace a použití

Motivace

Appium umí testovat jak nativní, tak hybridní mobilní aplikace, takže jeden testovací stack pokrývá celý produkt. Je zavedený standard a testy lze spouštět lokálně (fyzická zařízení, emulátory nebo simulátory) i na externích testovacích farmách, včetně pronájmu zařízení (např. Sauce Labs, Kobiton). V kombinaci s AI poskytují automatické testy deterministickou zpětnou vazbu, kterou lze využít pro AI-driven vývoj a regrese. Náklady na psaní a údržbu testů jsou dnes natolik nízké, že absence automatizace již není obhajitelná.

Můj přístup

Klasické unit testy dávají smysl jen výjimečně, například pro izolované algoritmy; většina funkcí v aplikacích je integrační povahy, proto je vhodné stavět na end-to-end (e2e) testech a případně použít mock backendu tam, kde to dává smysl. Při testování backendu se používá reálná, typicky lokální databáze — komponenty, v nichž může dojít k chybě (síť, databáze, autentizace), by neměly být mockovány, aby nedošlo ke skrytí defektů. Přihlašování a uložení tokenu (session) řeší jeden dedikovaný skript nebo modul; ostatní testy z něj čerpají a neimplementují přihlašování znovu, což zjednodušuje údržbu a zrychluje běh. Testy se provádějí na Androidu i iOS, protože chování se mezi platformami může lišit. Kde je to možné, používají se fyzická zařízení místo emulátorů: počáteční nastavení je náročnější, ale výsledky lépe odpovídají produkčnímu prostředí.


package.json

{
  "name": "appka-appium-e2e",
  "version": "1.0.0",
  "description": "Appium E2E tests for Appka",
  "scripts": {
    "test": "wdio run wdio.conf.ts",
    "test:debug": "wdio run wdio.conf.ts --debug"
  },
  "devDependencies": {
    "@types/mocha": "^10.0.0",
    "@types/node": "^20.0.0",
    "@wdio/appium-service": "^8.32.0",
    "@wdio/cli": "^8.32.0",
    "@wdio/local-runner": "^8.32.0",
    "@wdio/mocha-framework": "^8.32.0",
    "@wdio/spec-reporter": "^8.32.0",
    "appium": "^2.2.1",
    "appium-uiautomator2-driver": "^2.7.0",
    "appium-xcuitest-driver": "^9.10.5",
    "ts-node": "^10.9.2",
    "typescript": "^5.2.2"
  },
  "dependencies": {
    "appium-chromedriver": "^8.2.0",
    "electron": "^39.2.4",
    "jws": "^4.0.0"
  }
}


Instalace chromedriveru:

CHROMEDRIVER_VERSION=107.0.5304.62 npm install appium-chromedriver





Jak to funguje:

  • test se píše v javascriptu. Je to v podstatě sekvence příkazů: najdi xxx, klikni na to, opakuj
  • test se provádí na aplikaci v emulátoru. Pro začátek je nejjednodušší Android emulátor. Test by ale měl fungovat i na iOS.
  • celé tohle funguje na windows, linuxu, osx

Potřebné nástroje:

ANDROID_HOME - C:\<installation location>\android-sdk-windows
PATH - %ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools

Příklad ke stažení:

Jak spustit příklad:

  • na Windows se příkazový řádek spouští přes GitBash
  • vytvořit emulátor androidu: příkaz start_avd.sh - ve windows je potřeba ve skriptu upravit "android" na "android.bat". Když to emulátor nevytvoří, doinstaluj si do Android SDK. Po spuštění skriptu je potřeba odmáčknout "no"
  • když je emulátor naběhnutý, myší odemknout obrazovku. Někdy se kvůli tomu nespustí testy
  • spustit Appium příkazem "appium". Napíše to asi tři řádky v tom smuslu, že poslouchá na nějakém portu
  • v eclipse naimportovat projekt: File, Import, Maven, Existing maven project
  • najít v projektu soubor Test1.java a spustit ho (pravé tlačítko, run as java application) nebo F11 nebo CTRL+F11
  • před novým spůuštěním testu je dobré občas restartovat Appium. Z některých stavů se neumí zotavit.

Video, jak to vypadá funkční: https://youtu.be/sAyNaXYPJLo