Appium — bu nədir, iş prinsipləri və kross-platforma testi

Müəllif: IT Sectr Dərc olunub: 2026-04-09 Oxuma vaxtı: 8 dəq

Appium — WebDriver protokoluna əsaslanan mobil, veb və desktop tətbiqlərinin test avtomatlaşdırılması üçün kross-platforma freymvorkudur. O, istənilən proqramlaşdırma dilində testlər yazmağa və onları Android, iOS və Windows-da kod dəyişmədən işə salmağa imkan verir. Appium Foundation, 2025 məlumatlarına görə, WebDriver protokolu müxtəlif platformalarda tətbiqlərlə qarşılıqlı əlaqə üçün vahid interfeys təmin edir.

Əsas məqamlar

  • Appium — WebDriver əsasında test avtomatlaşdırılması üçün kross-platforma freymvorku
  • Vahid API Java, Python, JavaScript, Ruby, C# və digər dillərdə testlər yazmağa imkan verir
  • Platforma dəstəyi iOS, Android, Windows və veb-tətbiqləri əhatə edir
  • Black-box yanaşması tətbiqin mənbə koduna giriş tələb etmir
  • Appium Server test ilə platformanın yerli drayveri arasında proksi rolunu oynayır

Appium nədir

Appium — müştəri-server arxitekturası üzərində qurulmuş mobil tətbiqlərin test avtomatlaşdırılması üçün açıq mənbə freymvorkudur. Appium serveri müştəridən WebDriver protokolu ilə əmrlər qəbul edir və onları yerli drayverlərə ötürür: iOS üçün XCUITest, Android üçün UiAutomator2 və Windows üçün WinAppDriver.

Tarix və icma

Appium 2013-cü ildə yaradılmışdır və o vaxtdan kross-platforma testində sənaye standartına çevrilmişdir. Layihə Appium Foundation tərəfindən idarə olunur və böyük şirkətlər tərəfindən dəstəklənir: Sauce Labs, HeadSpin, Microsoft. Hər ay dünyada 500 mindən çox tester Appium-dan istifadə edir.

Dəstəklənən tətbiq növləri

Appium üç növ tətbiqi dəstəkləyir: yerli (iOS, Android, Windows), mobil veb brauzerlər (Safari, Chrome) və hibrid tətbiqlər (yerli qabıq daxilində WebView). Hər növ öz kontekstindən istifadə edir: NATIVE_APP, WEBVIEW və ya CHROMIUM.

Appium və WebDriver arxitekturası

Appium arxitekturası dörd səviyyədən ibarətdir: müştəri kodu → Appium Client Library → Appium Server → yerli drayver. Müştəri kitabxanası WebDriver protokolunu tətbiq edir və serverə HTTP sorğuları göndərir. Server onları platformanın yerli drayverinin əmrlərinə çevirir.

WebDriver protokolu

WebDriver — Appium tərəfindən mobil cihazlar üçün uyğunlaşdırılmış W3C brauzer avtomatlaşdırma standartıdır. Hər bir hərəkət — elementin axtarışı, klik, mətn daxil etmə — serverə HTTP sorğusu kimi göndərilir. Məsələn, POST /session/{id}/element yeni test seansı yaradır.

Seanslar və Desired Capabilities

Hər test Desired Capabilities obyekti vasitəsilə seans yaratmaqla başlayır. Orada göstərilir: platformName, deviceName, appPath, automationName və əlavə parametrlər. Appium bu məlumatları uyğun yerli drayveri seçmək və cihazı konfiqurasiya etmək üçün istifadə edir.

python
# Android üçün Desired Capabilities nümunəsi
desired_caps = {
    'platformName': 'Android',
    'deviceName': 'Pixel_4',
    'app': '/path/to/app.apk',
    'automationName': 'UiAutomator2',
    'appPackage': 'com.example.app',
    'appActivity': '.MainActivity'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

Appium-un quraşdırılması və konfiqurasiyası

Appium npm vasitəsilə quraşdırılır: npm install -g appium. Quraşdırmadan sonra hər platforma üçün yerli drayverləri konfiqurasiya etmək lazımdır: appium driver install xcuitest və appium driver install uiautomator2. iOS ilə iş üçün Xcode, Android üçün isə Android SDK tələb olunur.

Appium Inspector

Appium Inspector — interfeys elementlərinin inspeksiyası üçün qrafik vasitədir. O, işləyən Appium serverinə qoşulur və UI komponentlərinin iyerarxiyasını, onların atributlarını və lokatorlarını göstərir. Inspector test yazmazdan əvvəl selektoru yoxlamağa imkan verir.

Serverin işə salınması

Appium serveri appium əmri ilə işə salınır, port, ünvan, loglama kimi parametrlər əlavə edilə bilər. Defolt olaraq server 4723 portunu dinləyir. Çoxlu cihazların paralel işə salınması üçün müxtəlif portlar və ya Appium klasterlərindən istifadə olunur.

bash
# Appium serverinin loglama ilə işə salınması
appium \
  --port 4723 \
  --log-level debug \
  --use-plugins images \
  --base-path /wd/hub

Appium-da testlərin yazılması

Appium testləri kodun təşkili üçün Page Object nümunəsindən istifadə edir. Tətbiqin hər ekranı element lokatorları və qarşılıqlı əlaqə metodları ilə ayrıca sinif kimi təsvir olunur. Page Object Model interfeys dəyişikliklərində testlərin saxlanmasını asanlaşdırır və selektorları test ssenariləri arasında təkrar istifadə edir.

Element lokatorları

Appium elementlərin axtarışı üçün çoxlu strategiyaları dəstəkləyir: id, xpath, accessibilityId, className, androidUIAutomator və iOSClassChain. Ən çox accessibilityId və id tövsiyə olunur — onlar düzəliş dəyişikliklərində sabitdir. XPath yalnız digər lokatorlar olmadıqda istifadə edilməlidir.

java
// Giriş ekranı üçün Page Object
public class LoginPage {
    private AppiumDriver driver;

    private MobileElement emailField =
        (MobileElement) driver.findElement(MobileBy.AccessibilityId("emailInput"));
    private MobileElement passwordField =
        (MobileElement) driver.findElement(MobileBy.AccessibilityId("passwordInput"));
    private MobileElement loginButton =
        (MobileElement) driver.findElement(MobileBy.AccessibilityId("loginButton"));

    public void login(String email, String password) {
        emailField.sendKeys(email);
        passwordField.sendKeys(password);
        loginButton.click();
    }
}

İşarələr və hərəkətlərlə iş

Appium TouchAction sinfi və ya W3C Actions API vasitəsilə mürəkkəb işarələri dəstəkləyir: sürüşdürmələr, multitouch, uzun basmalar, elementə sürüşdürmə. Yeni W3C Actions API yeni layihələr üçün tövsiyə olunur, çünki standartlaşdırılmışdır və müxtəlif platforma versiyalarında daha sabit işləyir.

Appium-un alternativlərlə müqayisəsi

Appium tez-tez Detox, XCUITest və Espresso ilə müqayisə edilir. Appium-un əsas üstünlüyü kross-platformalıqdır: bir test iOS və Android-də dəyişiklik olmadan işə salına bilər. Lakin Detox React Native üçün daha yaxşı sinxronizasiya təmin edir, XCUITest/Espresso isə yerli testlər üçün daha sürətli icra verir.

Appium nə vaxt seçilməlidir

Appium iOS, Android və veb üçün vahid freymvork tələb olunan layihələr üçün uyğundur. Java və ya Python-da yazan testerləri olan komandalar üçün əvəzolunmazdır. Çox sayda E2E testi olan React Native layihələri üçün avtomatik sinxronizasiyaya görə Detox-u nəzərdən keçirmək daha yaxşıdır.

FreymvorkYanaşmaSürətKross-platformalıq
AppiumBlack-boxOrtaiOS, Android, Windows
DetoxGray-boxYüksəkiOS + Android (React Native)
XCUITestWhite-boxYüksəkYalnız iOS

Appium Grid və bulud testi

Appium Grid — testlərin çoxlu cihazlarda eyni vaxtda paralel işə salınması üçün genişlənmədir. Appium Grid Selenium Grid əsasında qurulmuşdur və testləri bir neçə Appium serveri arasında bölüşdürməyə imkan verir, hər biri öz cihaz və ya emulyator dəsti ilə idarə olunur. Bu, bir cihazda reqressiya testi saatlarla çəkən böyük layihələr üçün kritik əhəmiyyət daşıyır — Grid vaxtı düyünlərin sayına mütənasib olaraq dəqiqələrə endirir.

Grid konfiqurasiyası

Grid-in qurulması üçün cihazları olan düyünləri (nodes) təsvir edən JSON formatında konfiqurasiya faylı istifadə olunur. Hər düyün göstərir: server portu, platformalı cihazların siyahısı, OS versiyası və maksimum seans sayı. Hub testləri boş düyünlərə paylayaraq infrastrukturun maksimum yüklənməsini təmin edir.

json
{
  "capabilities": [
    {
      "browserName": "android",
      "platformName": "Android",
      "deviceName": "Pixel_4",
      "platformVersion": "14.0",
      "maxInstances": 2
    }
  ],
  "configuration": {
    "port": 4724,
    "registerCycle": 5000
  }
}

Bulud xidmətləri

Öz cihaz infrastrukturunuz yoxdursa, bulud xidmətləri mövcuddur: Sauce Labs, BrowserStack, LambdaTest. Onlar buludda yüzlərlə real cihaz və emulyator təqdim edir. Appium ilə inteqrasiya minimaldır: localhost əvəzinə Desired Capabilities-də bulud hubının URL-ni və etimadnaməni göstərmək kifayətdir.

Paralel işə salma

Appium TestNG (Java) və ya pytest-xdist (Python) ilə testlərin paralel işə salınmasını dəstəkləyir. Paralellik hər seans üçün unikal portlar və izolyasiya olunmuş test məlumatları tələb edir. Hər bir axın ayrıca cihaz və ya emulyatorda öz Appium seansını işə salır. Bulud xidmətlərindən istifadə edərkən paralellik avtomatikdir — platforma testləri mövcud cihazlara özü paylayır və bitdikdən sonra onları boşaldır.

Appium diaqnostikası və sazlanması

Appium ilə problemlər olduqda ilk addım server jurnalını yoxlamaqdır (appium --log-level debug). Tipik səhvlər: port məşğuldur (başqa --port göstərin), uyğun olmayan drayver versiyası, Android SDK və ya Xcode-un olmaması. iOS üçün WebKitAgent-in işlədiyinə və simulyatora girişi olduğuna əmin olun.

Elementlərin tapılması problemləri

Appium elementi tapmırsa, yoxlayın: kontekst düzgündürmü (NATIVE_APP vs WEBVIEW), element ekranda görünürmü, sürüşdürmə tələb edirmi və lokator düzgündürmü. Testə daxil etməzdən əvvəl interaktiv axtarış və XPath ifadələrinin yoxlanılması üçün Appium Inspector istifadə edin. WebDriverWait vasitəsilə elementin görünməsini gözləməyi aktiv etmək də faydalıdır — bu, UI-nin yavaş yüklənməsi zamanı sinxronizasiya problemini həll edir.

Seansların idarə edilməsi

Seansların səhv başa çatdırılması Appium testlərinin qeyri-sabitliyinin ümumi səbəbidir. Həmişə drayveri finally blokunda və ya AutoCloseable vasitəsilə bağlayın. Xətalar zamanı məcburi driver.quit() istifadə edin. iOS üçün WebKitAgent (WDA) seanslar arasında yenidən başladıldığına əmin olun, əks halda session not created xətası yarana bilər. CI-də seansların vəziyyətini izləmək üçün Appium Dashboard plaginini qoşmaq faydalıdır, o, bütün işləyən testlərin statusunu real vaxtda vizuallaşdırır.

Sabitlik flaqları

Testlərin sabitliyini artırmaq üçün istifadə edin: shouldTerminateApp (tətbiqin testlər arasında bağlanması), noReset (məlumatların seanslar arasında saxlanması), autoGrantPermissions (sistem dialoqlarının avtomatik icazəsi). Həmçinin cihazda Developer Options vasitəsilə animasiyaları söndürmək tövsiyə olunur.

Tez-tez verilən suallar

Appium hansı proqramlaşdırma dillərini dəstəkləyir?

Appium bütün populyar dilləri müştəri kitabxanaları vasitəsilə dəstəkləyir: Java, Python, JavaScript, Ruby, C#, PHP və Kotlin. Hər kitabxana eyni WebDriver protokolunu tətbiq edir, bu da istənilən dildə kross-platforma testləri yazmağa imkan verir.

Appium üçün real telefon lazımdırmı?

Xeyr, Appium həm real cihazlarla, həm də emulyatorlar və simulyatorlarla işləyir. Android üçün Android Studio emulyatorları, iOS üçün Xcode simulyatorları istifadə olunur. Real cihazlar yalnız aparat funksiyalarını test etmək üçün lazımdır: sensorlar, NFC, kamera.

Appium 1 və Appium 2 arasında nə fərq var?

Appium 2 tamamilə modul arxitekturası ilə plaginlər və ayrıca drayverlərlə yenidən yazılmışdır. Appium 1-də bütün drayverlər serverə daxil idi. Appium 2 drayverləri quraşdırmaq üçün appium driver install və plaginlər üçün appium plugin install əmrlərindən istifadə edir.

Appium ekranda elementləri necə tapır?

Appium axtarış strategiyalarından istifadə edir: By.id, By.xpath, By.accessibilityId, By.className, By.androidUIAutomator və By.iOSClassChain. Sürətləndirmək üçün accessibilityId istifadə etmək tövsiyə olunur — o, sabitdir və düzəliş dəyişikliklərindən asılı deyil.

Appium-da veb-tətbiqləri test etmək olarmı?

Bəli, Appium mobil brauzerlərin testini dəstəkləyir — iOS-da Safari və Android-də Chrome. Bunun üçün WEBVIEW və ya CHROMIUM konteksti istifadə olunur. Testlər Selenium kimi standart WebDriver vasitəsilə brauzerdə işə salınır.

Nəticə

  • Appium — iOS, Android və Windows dəstəyi ilə WebDriver əsaslı kross-platforma E2E freymvorku
  • Arxitektura müştəri-server Java, Python, JavaScript, Ruby və C# dillərində testlər yazmağa imkan verir
  • Desired Capabilities müəyyən platforma və cihaz üçün test seansını konfiqurasiya edir
  • Page Object Model test kodunun təşkili və selektorların təkrar istifadəsi üçün tövsiyə olunur
  • Appium Inspector interfeys elementlərini inspeksiya etməyə və lokatorlar seçməyə kömək edir
  • Black-box yanaşması tətbiqin mənbə koduna giriş tələb etmir
  • Appium 2 qoşulan drayverlər və plaginlərlə modul arxitekturasından istifadə edir

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun