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:
- foydalanuvchi interfeysi;
- frontend logikasi;
- backend API;
- ma’lumotlar bazasi;
- authentication;
- tashqi servislar;
- queue yoki background task;
- notification.
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:
- foydalanuvchi ro‘yxatdan o‘tadi;
- email yoki telefonini tasdiqlaydi;
- profilini to‘ldiradi;
- mahsulot qidiradi;
- buyurtma yuboradi;
- 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:
- database seed;
- API orqali setup;
- fixture;
- factory;
- vaqtinchalik tenant;
- test user;
- test payment method.
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:
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:
Test framework automatic waiting imkoniyatidan foydalanishi mumkin.
Flaky test
Ba’zan o‘tib, ba’zan yiqiladigan test flaky deyiladi.
Sabablar:
- noto‘g‘ri wait;
- umumiy test data;
- network kechikishi;
- animation;
- clock;
- tashqi servis;
- parallel conflict;
- browser farqi.
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:
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