Bosh sahifa Wiki E2E

E2E

E2E — dasturiy tizimni foydalanuvchi yoki tashqi mijoz ko‘radigan to‘liq jarayon bo‘yicha tekshiradigan test turi. To‘liq nomi End-to-End testing. Bunday test alohida funksiya yoki modulni emas, tizimning bir nechta qatlamlari birgalikda to‘g‘ri ishlashini tekshiradi.

Masalan, onlayn do‘konda foydalanuvchining tizimga kirishi, mahsulot tanlashi, savatga qo‘shishi, buyurtma berishi va tasdiq xabarini olishi bitta E2E ssenariy bo‘lishi mumkin.

Test chegarasi

E2E test odatda quyidagi qismlarni qamrab oladi:

Qamrov keng bo‘lgani sabab bitta xato bir nechta qatlamdan kelib chiqishi mumkin.

Foydalanuvchi ssenariysi

Test texnik methodlar ketma-ketligidan ko‘ra real biznes jarayoniga yaqin yoziladi.

Masalan:

  1. foydalanuvchi ro‘yxatdan o‘tadi;
  2. email yoki telefonini tasdiqlaydi;
  3. profilini to‘ldiradi;
  4. mahsulot qidiradi;
  5. buyurtma yuboradi;
  6. buyurtma tarixini ochadi.

Ssenariy biznes talabiga mos bo‘lishi kerak.

Test muhiti

E2E test productionga o‘xshash alohida muhitda ishlatiladi. Unda application server, database, cache va kerakli servislar ishga tushiriladi.

Muhit productionning aynan nusxasi bo‘lishi shart emas, ammo muhim integrationlar va konfiguratsiyalar mos bo‘lishi kerak.

Local mocklar haddan tashqari ko‘p bo‘lsa testning end-to-end qiymati kamayadi.

Test ma’lumotlari

Test oldindan ma’lum va qayta tiklanadigan data bilan ishlaydi.

Usullar:

Bir test qoldirgan data boshqasiga ta’sir qilmasligi kerak.

Izolyatsiya

E2E testlar bir-biriga bog‘liq bo‘lmasa parallel va istalgan tartibda ishlashi mumkin.

Masalan, bir test yaratgan userni keyingi test ishlatishi xavfli. Birinchi test muvaffaqiyatsiz bo‘lsa ikkinchisi ham sababsiz yiqiladi.

Har ssenariy o‘z setup va cleanup jarayoniga ega bo‘ladi.

Selektor

Browser testlarda elementlar selector orqali topiladi.

Barqaror selectorlar:

  • semantic role;
  • label;
  • accessible name;
  • maxsus data-testid;
  • stabil ID.

CSS class yoki DOM ichidagi uzun yo‘l dizayn o‘zgarganda tez buziladi.

Kutish mexanizmi

UI va network operationlar asynchronous ishlaydi. Test aniq vaqt bilan shunchaki kutsa sekin va beqaror bo‘ladi:

5 soniya kut

Yaxshiroq usul — kerakli holatni kutish:

  • element ko‘rindi;
  • request tugadi;
  • URL o‘zgardi;
  • notification chiqdi;
  • database holati yangilandi.

Test framework automatic waiting imkoniyatidan foydalanishi mumkin.

Flaky test

Ba’zan o‘tib, ba’zan yiqiladigan test flaky deyiladi.

Sabablar:

Flaky testga doimiy retry qo‘shish muammoni yashirishi mumkin.

Tashqi servis

Payment, SMS yoki email provider productiondagi real endpoint bilan test qilinsa xarajat va xavf tug‘iladi.

Variantlar:

Muhim integration kamida ayrim testlarda haqiqiy protocolga yaqin tekshiriladi.

Authentication

Login ssenariysi alohida test qilinadi. Qolgan ko‘p testlar har safar UI orqali login qilsa suite sekinlashadi.

Framework storage state yoki API orqali authenticated session yaratishi mumkin.

Biroq bu usul loginning o‘zini test qilmaydi; login uchun alohida to‘liq ssenariy saqlanadi.

Browser va device

Web E2E testlar turli browser engine’larda bajarilishi mumkin:

  • Chromium;
  • Firefox;
  • WebKit.

Responsive application uchun viewport, mobile emulation va real device testlari qo‘shiladi.

Barcha kombinatsiyani har commitda ishga tushirish qimmat bo‘lishi mumkin.

CI/CD

E2E test pipeline’ning keyingi bosqichida ishlaydi.

Oddiy ketma-ketlik:

unit test
→ integration test
→ application deploy
→ E2E test
→ release

Tez smoke ssenariylar har commitda, to‘liq suite esa jadval bo‘yicha yoki release oldidan bajarilishi mumkin.

Screenshot va trace

Test yiqilganda diagnostika uchun quyidagilar saqlanadi:

Faqat “element topilmadi” xabari muammoning asl sababini ko‘rsatmaydi.

Smoke test

E2E suite ichidagi eng muhim va qisqa ssenariylar smoke test sifatida ajratiladi.

Masalan:

  • bosh sahifa ochiladi;
  • login ishlaydi;
  • asosiy buyurtma yaratiladi;
  • API health tekshiriladi.

Smoke test deploydan keyin tizimning asosiy yo‘li ishlayotganini tez tekshiradi.

Test piramidasi

E2E testlar keng qamrovli, ammo sekin va qimmat. Shu sababli testlarning katta qismi unit va integration darajasida bo‘lishi kerak.

E2E testlar esa asosiy biznes oqimlarini tekshiradi.

Har mayda validationni browser orqali test qilish suite’ni ortiqcha og‘irlashtiradi.

E2E va integration testi

Integration testi ikki yoki bir nechta komponentning hamkorligini tekshiradi.

E2E esa user kirish nuqtasidan yakuniy natijagacha butun oqimni ko‘radi.

Masalan, API va database testi integration, browserdan buyurtma tasdig‘igacha bo‘lgan jarayon E2E hisoblanadi.

Qamrovni tanlash

Har biznes jarayon uchun E2E yozish shart emas. Daromad, authentication, ma’lumot yo‘qolishi yoki asosiy user yo‘liga ta’sir qiladigan oqimlar ustuvor bo‘ladi. Kam xavfli UI detali component testda tekshirilishi mumkin.

Test versiyasi

Reportda application commit, environment, browser va test data versiyasi saqlanadi. Bir xil nomdagi test turli buildda boshqa natija bersa, qaysi artifact tekshirilgani aniq bo‘ladi.

Bog‘liq tushunchalar

End-to-End testing, Test automation, Integration testing, Smoke testing, Browser testing, Test environment, Test data, Flaky test, Playwright, Cypress, Selenium