E2E-testinq proqram təminatının hazırlanmasında — bu nədir, ssenarilər və alətlər

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

E2E-testinq (End-to-End) istifadəçinin tam ssenarilərini əvvəldən axıra qədər yoxlayır, tətbiqin bütün qatlarını əhatə edir: interfeys, biznes məntiqi, şəbəkə sorğuları və verilənlər bazası. Komponentlərin təcrid olunmuş əlaqələrini yoxlayan inteqrasiya testlərindən fərqli olaraq, E2E-testlər istifadəçinin real davranışını modelləşdirir — tətbiqin açılmasından hədəf hərəkətin tamamlanmasına qədər. Martin Fowler, 2020 tədqiqatına görə, E2E-testlər sistemin düzgünlüyünə ən yüksək inamı təmin edir, lakin kövrəklik və həddindən artıq icra müddətindən qaçmaq üçün diqqətli layihələndirmə tələb edir.

Əsas məqamlar

  • E2E-testinq — tətbiqin bütün qatları vasitəsilə tam istifadəçi ssenarilərinin yoxlanılması: UI, API, verilənlər bazası və xarici xidmətlər.
  • Detox — Wix-dən React Native üçün freymvork, JS axını ilə sinxronlaşan və mobil tətbiqlər üçün stabil E2E-testlər təmin edir.
  • Appium — WebDriver protokolunu dəstəkləyən və kod dəyişmədən Android və iOS-da E2E-testləri işə salmağa imkan verən çoxplatformalı alət.
  • Maestro — YAML ssenari formatı ilə müasir freymvork, kompilasiya tələb etmir və 10 dəqiqəyə CI ilə inteqrasiya olunur.
  • Test piramidası E2E-testlərə ümumi test əhatəsinin 5–10%-ni ayırır, çünki onlar vaxt və dəstək baxımından ən bahalıdır.

E2E-testinq nədir?

E2E-testinq (End-to-End) — proqram təminatının yoxlanılması metodudur, burada test sistemin bütün komponentləri vasitəsilə istifadəçinin tam yolunu keçir. Mobil tətbiq üçün tipik E2E ssenarisi daxildir: tətbiqin işə salınması, yeni istifadəçinin qeydiyyatı, email təsdiqi, hədəf hərəkətin icrası (sifarişin verilməsi, mesajın göndərilməsi) və nəticənin interfeysdə yoxlanılması. Hər addım real komponentlərdən istifadə edir — heç bir kölgə və mock olmadan.

E2E-testlərin əsas üstünlüyü onların sistemi vahid bir bütöv olaraq yoxlamasıdır, o cümlədən müştəri tərəfi, server, verilənlər bazaları və xarici xidmətlər arasında qarşılıqlı əlaqə. E2E-testlər test piramidasının aşağı səviyyələrində aşkar edilə bilməyən problemləri aşkarlayır: müştəri və server arasında məlumat formatlarının uyğunsuzluğu, real mühitdə avtorizasiya səhvləri və ödəniş şlüzləri ilə inteqrasiya nasazlıqları.

World Quality Report 2023 hesabatına görə, E2E-testinqi CI/CD pipeline-na tətbiq edən komandalar buraxılış zamanı kritik defektlərin sayını 45% azaldır. Eyni zamanda tam E2E dəstinin icra müddəti ssenarilərin sayından asılı olaraq 20 dəqiqədən 2 saata qədər dəyişir ki, bu da paralel işə salma strategiyasının düşünülməsini tələb edir.

E2E-testinq inteqrasiya testindən nə ilə fərqlənir

Əsas fərq yoxlama sərhədlərindədir. İnteqrasiya testləri tətbiq daxilində iki və ya üç komponentin qarşılıqlı əlaqəsini yoxlayır: şəbəkə qatının repozitoriya ilə, verilənlər bazasının ViewModel ilə. E2E-testlər bütün zənciri yoxlayır: UI-dən xarici backendə və geriyə. İnteqrasiya testi API sorğusunun düzgün JSON qaytardığını yoxlayırsa, E2E-test istifadəçinin bu məlumatları tam yükləmə dövründən sonra ekranda gördüyünü yoxlayır.

Dəstək xərci də fərqlənir. İnteqrasiya testləri idarə olunan mühitdə işləyir — test kölgələri və in-memory verilənlər bazaları ilə, bu da onları sabit və sürətli edir. E2E-testlər xarici sistemlərin vəziyyətindən, şəbəkə əlçatanlığından və backend versiyalarından asılıdır, bu da yalançı uğursuzluqlar (flakiness) ehtimalını artırır. Google Testing Blog (2021) məlumatına görə, E2E-testlər inteqrasiya testlərindən orta hesabla 3–5 dəfə daha kövrəkdir ki, bu da təkrar cəhd mexanizmlərinin və sabitlik analitikasının tətbiqini tələb edir.

E2E və inteqrasiya testləri arasında seçim ssenarinin kritikliyindən asılıdır. Əsas istifadəçi yolları — qeydiyyat, ödəniş, girişin bərpası — E2E yoxlaması tələb edir. Köməkçi ssenarilər — siyahının yüklənməsi, profilin yenilənməsi — ayrı-ayrı ekranlar səviyyəsində UI yoxlamaları ilə inteqrasiya testləri ilə əhatə oluna bilər.

Hansı ssenariləri E2E-testlərlə əhatə etməli

Hər istifadəçi ssenarisi E2E-test tələb etmir. Seçim meyarları üç amili əhatə edir: yolun istifadə tezliyi, prodüksiyonda səhvin dəyəri və cəlb olunan sistemlərin sayı. Hər istifadəçinin ilk işə salmada yerinə yetirdiyi ssenari (onboarding, qeydiyyat) açıq namizəddir. İstifadəçilərin 5%-nin girişi olan inzibati panel ssenarisi — inteqrasiya testi üçün namizəddir.

  • Qeydiyyat və giriş — email təsdiqi və sessiyanın qurulması daxil olmaqla hesab yaradılmasının tam dövrü. Səhv bütün yeni istifadəçiləri bloklayır.
  • Sifarişin verilməsi və ödəniş — səbətin yoxlanılması, çatdırılma üsulunun seçilməsi, xarici şlüz vasitəsilə ödənişin aparılması və təsdiqin göstərilməsi.
  • Şifrənin bərpası — sıfırlama sorğusu, məktubun alınması, yeni şifrənin daxil edilməsi, yeni məlumatlarla daxil olma. Server məntiqi dəyişdikdə tez-tez sınır.
  • Məlumatların sinxronizasiyası — bir cihazda qeydin yaradılması, bulud vasitəsilə sinxronizasiyadan sonra digər cihazda görünməsinin yoxlanılması.
  • Push bildirişləri — bildirişin alınması, ondan tətbiqin müvafiq ekranına keçid, bildirişdən sonra vəziyyətin yenilənməsi.

Hər ssenari üçün minimal E2E-test dəsti müəyyən edilir — bir happy path və bir error path (məsələn, müddəti bitmiş token və ya əlçatmaz server). E2E əhatəsini əsas ssenarilərdən kənara genişləndirmək iqtisadi cəhətdən əsaslandırılmalıdır: E2E-testlərin ROI 10–15 əsas yolun əhatəsindən sonra azalır, çünki əlavə E2E-testlər keyfiyyət inamında mütənasib artım vermir.

E2E-testinq üçün alətlər

Mobil E2E-testinq üçün üç əsas alət kateqoriyası mövcuddur: platforma freymvorkları, çoxplatformalı həllər və yeni nəsil alətlər. Alət seçimi texnoloji yığımdan, komandanın ixtisasından və CI inteqrasiyasının tələb olunan quraşdırma sürətindən asılıdır.

Platforma freymvorkları

XCUITest — Apple-ın iOS üçün yerli aləti, Xcode-un tərkib hissəsi. iOS üçün ən sabit və məhsuldar variant, sistemin Accessibility qatına birbaşa giriş təmin edir. Espresso — Google-ın Android üçün yerli freymvorku, AndroidX Test-in tərkib hissəsi. E2E ssenariləri üçün Espresso AndroidX Test Orchestrator ilə birlikdə testlərin təcrid edilməsi və qarşılıqlı təsirin qarşısının alınması üçün istifadə olunur. Platforma freymvorklarının çatışmazlığı — hər platforma üçün ayrıca testlər yazmaq zərurəti.

Çoxplatformalı həllər

Appium — WebDriver əsaslı alət, Java, Python, JavaScript və digər dilləri dəstəkləyir. Appium memarlığına əmrləri platforma API-lərinə proksiləyən server daxildir — Android üçün UIAutomator, iOS üçün XCUITest. Hər cihaz üçün Desired Capabilities konfiqurasiyası tələb olunur. Detox Wix-dən — React Native üçün freymvork, JS axını ilə sinxronlaşan və animasiyaların və şəbəkə sorğularının tamamlanmasını avtomatik gözləyir. Detox Jest və ya Mocha ilə inteqrasiya olunur və server quraşdırılması tələb etmir.

Yeni nəsil alətlər

Maestro — ssenariləri təsvir etmək üçün YAML fayllarından istifadə edən müasir freymvork. Maestro kompilasiya tələb etmir, isti yenidən yükləməni dəstəkləyir və nəticələrin təhlili üçün daxili Flow Report təqdim edir. Alət 10 dəqiqəyə CI ilə inteqrasiya olunur və tətbiqin vəziyyəti ilə avtomatik sinxronlaşır ki, bu da Appium ilə müqayisədə testlərin flakiness-ni əhəmiyyətli dərəcədə azaldır.

  • Detox (Wix) — React Native üçün freymvork, JS axını ilə sinxronlaşır. Android və iOS-u dəstəkləyir, animasiyaların və şəbəkə sorğularının tamamlanmasını avtomatik gözləyir.
  • Appium — WebDriver əsaslı çoxplatformalı alət, istənilən proqramlaşdırma dilini dəstəkləyir.
  • Maestro — YAML ssenariləri ilə müasir freymvork, kompilasiya tələb etmir və 10 dəqiqəyə CI ilə inteqrasiya olunur.

E2E-testlər üçün kod nümunələri

Ən sürətli böyüyən mobil test alətlərindən biri olan Maestro-da avtorizasiya ssenarisi üçün E2E-testi nəzərdən keçirək. Maestro YAML formatından istifadə edir ki, bu da proqramlaşdırma dillərini bilmədən testlər yazmağa imkan verir. İkinci nümunə — React Native tətbiqi üçün Detox-da E2E-test.

Maestro: YAML avtorizasiya ssenarisi

Ssenari tam axını təsvir edir: tətbiqin açılması, email və şifrənin daxil edilməsi, giriş düyməsinin basılması və əsas ekranın göstərilməsinin yoxlanılması. Maestro əmrləri intuitiv başa düşüləndir və seçicilərin konfiqurasiyasını tələb etmir — freymvork elementləri tapmaq üçün element mətnindən istifadə edir.

yaml
# E2E: İstifadəçi girişi
appId: com.example.myapp
---
- launchApp
- waitForVisibile:
    text: "Email"
- tapOn:
    text: "Email"
- inputText:
    text: "user@example.com"
- tapOn:
    text: "Password"
- inputText:
    text: "secret123"
- tapOn:
    id: "loginButton"
- waitForVisibile:
    text: "Welcome back!"
- assertVisible:
    text: "Welcome back!"

Detox: React Native üçün E2E-test

Detox Wix-dən JS axını ilə avtomatik sinxronizasiya sayəsində testlərin sabitliyini təmin edir. Test sleep istifadə etmir — Detox yoxlamadan əvvəl bütün asinxron əməliyyatların tamamlanmasını gözləyir.

js
describe('Login flow', () => {
    beforeEach(async () => {
        await device.reloadReactNative()
    })

    it('should login successfully', async () => {
        await expect(element(by.id('emailInput'))).toBeVisible()
        await element(by.id('emailInput')).typeText('user@example.com')
        await element(by.id('passwordInput')).typeText('secret123')
        await element(by.id('loginButton')).tap()
        await expect(element(by.text('Xoş gəldiniz!'))).toBeVisible()
    })
})

CI/CD pipeline-da E2E-testinq

E2E-testlərin CI/CD ilə inteqrasiyası onların effektivliyinin əsas amilidir. Tövsiyə olunan strategiya — iki səviyyəli pipeline: hər pull request üçün 3–5 kritik E2E ssenarisindən ibarət minimal smoke dəsti işə salınır, tam reqressiya dəsti isə gecə (nightly build) və ya buraxılışdan əvvəl icra olunur. Bu yanaşma geribildirim sürəti ilə yoxlama dərinliyi arasında tarazlıq yaradır.

CI-da E2E-testlər üçün üç aspekt kritikdir: paralelləşdirmə — Firebase Test Lab və ya AWS Device Farm vasitəsilə eyni anda bir neçə cihazda testlərin işə salınması icra müddətini saatlardan dəqiqələrə endirir; mühitin konteynerizasiyası — backend və test serveri üçün Docker istifadəsi təkrarlanabilirliyi təmin edir; hesabatlar və təkrar cəhdlər — uğursuz testlərin avtomatik yenidən işə salınması (2 cəhdə qədər) və hər ssenarinin keçid videosu ilə HTML hesabatın yaradılması.

Google Testing Blog (2022) məlumatına görə, paralel işə salma ilə xüsusi E2E-CI pipeline istifadə edən komandalar reqressiyaların aşkarlanma müddətini 60% azaldır. E2E-testlərin effektivliyinin əsas metriki testlərin sayı deyil, yalançı uğursuzluqlar olmadan uğurlu CI işlərinin faizidir. Hədəf göstərici — kritik yolların tam əhatəsi ilə E2E dəstinin sabitliyi 95%-dən yuxarı.

Tez-tez verilən suallar

Mobil tətbiq üçün neçə E2E-test lazımdır?

Orta tətbiq üçün kritik istifadəçi ssenarilərini əhatə edən 15–25 E2E-test kifayətdir. Optimal miqdar test piramidası ilə müəyyən edilir: E2E-testlər ümumi test dəstinin 5–10%-ni təşkil edir. E2E-testlərin payının 10%-dən yuxarı artırılması icra müddətinin və dəstək xərclərinin qeyri-mütənasib artımına gətirib çıxarır.

E2E-testlərin flakiness ilə necə mübarizə aparmalı?

Avtomatik təkrar cəhdlərdən (2–3 cəhd) istifadə edin, test mühitini Docker vasitəsilə təcrid edin, emulatorda animasiyaları söndürün və sabit pauzalar əvəzinə waitForVisible tətbiq edin. Detox və Maestro kimi alətlər Appium ilə müqayisədə flakiness-ni əhəmiyyətli dərəcədə azaldan daxili sinxronizasiyaya malikdir.

E2E-testlər üçün real backend lazımdırmı?

E2E-testlər üçün ideal mühit — prodüksiyonla eyni olan, test məlumatları ilə staging serverdir. Staging əlçatan deyilsə, Docker-də konteynerləşdirilmiş backend istifadə edin. Real prodüksiyon server E2E-testlər üçün istifadə edilə bilməz — testlər uyğunsuz məlumatlar yaradar və real istifadəçilərə təsir edər.

E2E-testləri Swift və ya Kotlin-də yazmaq olarmı?

Bəli, yerli E2E-testlər üçün iOS-da XCUITest (Swift) və Android-də AndroidX Test ilə Espresso (Kotlin) istifadə olunur. Bu freymvorklar daha yaxşı performans verir, lakin çoxplatformalılığı dəstəkləmir. Appium və Maestro hər iki platforma üçün bir dil lazım olan komandalar üçün seçim olaraq qalır.

E2E-testləri nə qədər tez-tez yeniləmək lazımdır?

E2E-testlər istifadəçi ssenarisində hər dəyişiklik zamanı yenilənir: axına yeni ekranın əlavə edilməsi, UI elementlərinin və ya naviqasiya məntiqinin dəyişdirilməsi. Hər sprintdə test dəstinin auditi aparmaq tövsiyə olunur, köhnəlmiş ssenariləri silmək və yenilərini əlavə etmək, dəstin tətbiqin cari vəziyyətini əks etdirməsi üçün.

Nəticə

  • E2E-testinq tətbiqin bütün qatları vasitəsilə tam istifadəçi ssenarilərini yoxlayır, sistemin düzgünlüyünə ən yüksək inamı təmin edir.
  • Əsas ssenarilər E2E əhatəsi üçün — qeydiyyat, ödəniş, şifrənin bərpası və cihazlar arasında məlumat sinxronizasiyası.
  • Detox və Maestro — testlərin flakiness-ni azaldan avtomatik sinxronizasiya ilə müasir alətlər.
  • CI/CD strategiyası: hər pull request üçün smoke dəsti, tam reqressiya işi — gecə və ya buraxılışdan əvvəl.
  • Hədəf sabitlik E2E dəsti — bir neçə cihazda paralel işə salma ilə 95%-dən yuxarı.
  • Test piramidası E2E-testlərə ümumi əhatənin 5–10%-ni ayırır, kritik istifadəçi yollarına fokuslanaraq.
  • Backend konteynerizasiyası və xüsusi staging server E2E işlərinin təkrarlanabilirliyini və etibarlılığını təmin 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