Asosiy kontentga o‘tish
Innovialabs

Unit, integratsion va E2E testlar: farqi nimada

Asoslar3 daq

Qisqacha

Unit test bitta funksiyani alohida, integratsion test tizim qismlarining birgalikdagi ishini, E2E esa foydalanuvchi ssenariysini to‘liq tekshiradi; nisbat loyihada nima ko‘proq buzilishiga qarab tanlanadi.

Farq qisqacha

Uchala tur qamrovi bilan farq qiladi — ya’ni bir vaqtda tizimning qaysi qismini tekshirishi bilan:

TurNimani tekshiradiTezlikBarqarorlikNimani topadi
Unitbitta funksiya yoki klassni alohidajuda tezyuqorimantiq xatolari va chegaraviy holatlar
Integratsionmodullar bog‘lamasi: kod + baza, servis + APIo‘rtachao‘rtachaulanish joylaridagi xatolar, noto‘g‘ri so‘rovlar, kontraktlar
E2Einterfeys orqali foydalanuvchi ssenariysisekinpastroqto‘liq buzilgan foydalanuvchi yo‘llari

Daraja qanchalik yuqori bo‘lsa, bitta test shunchalik ko‘p ishonch beradi va uni yozish, ishga tushirish hamda qo‘llab-quvvatlash shunchalik qimmat.

Unit testlar

Unit test kichik kod bo‘lagini oladi va uni tashqi bog‘liqliklarsiz tekshiradi. Ma’lumotlar bazasi, tarmoq va vaqt mock yoki stub bilan almashtiriladi.

// calcDiscount.test.js
import { calcDiscount } from "./calcDiscount";

test("chegirma narxdan oshmaydi", () => {
  expect(calcDiscount(100, 150)).toBe(100);
});

Qayerda yaxshi: hisob-kitoblar, validatsiya, formatlash, ko‘p shartli biznes qoidalari.

Zaif tomoni: barcha unit testlar yashil bo‘lishi, ilova esa ishlamasligi mumkin — chunki modullar bir-biriga noto‘g‘ri ulangan.

Integratsion testlar

Integratsion test bir nechta qism birgalikda ishlashini tekshiradi. Masalan: API’ga HTTP so‘rov handlergacha yetib boradi, ma’lumotlar haqiqiy test bazasiga saqlanadi, javob kerakli tuzilmaga ega.

Odatiy misollar:

  • API endpoint + test ma’lumotlar bazasi;
  • interfeys komponenti bola komponentlari va holati bilan birga;
  • servis + xabarlar navbati;
  • sizning kodingiz + sandbox rejimidagi yoki tarmoq darajasida almashtirilgan tashqi API.

Qayerda yaxshi: kontraktlar, SQL so‘rovlar, seriyalash va kirish huquqlarini tekshirishda.

E2E testlar

End-to-end test ilovani foydalanuvchi kabi ishga tushiradi: brauzer yoki mobil emulyatorni ochadi, tugmalarni bosadi, formalarni to‘ldiradi va natijani tekshiradi. Veb uchun mashhur vositalar — Playwright va Cypress.

Qayerda yaxshi: muhim yo‘llar — ro‘yxatdan o‘tish, kirish, buyurtma berish, test rejimidagi to‘lov.

Zaif tomoni: sekin va muhitga sezgir. Taymautlar, animatsiyalar va test ma’lumotlari o‘ylab chiqilmasa, flaky testlar paydo bo‘ladi — ular goh o‘tadi, goh yiqiladi va jamoa ularga ishonmay qo‘yadi.

Piramida va kubok

Test piramidasi (Mayk Kon g‘oyasi): asosda ko‘p unit testlar, o‘rtada kamroq integratsion, tepada bir nechta E2E. Mantiq — tez va arzon testlar poydevor bo‘lishi kerak.

Test kubogi (Kent Dodds modeli): pastda statik tahlil (tiplar, linter), keyin biroz unit, eng keng qism — integratsion testlar, tepada bir nechta E2E. Dalil — integratsion testlar real foydalanishga yaqinroq va sarflangan kuchga nisbatan ko‘proq ishonch beradi, zamonaviy vositalar esa ularni yetarlicha tez qildi.

Ikkala model ham aniq foizlar haqida emas, balki yo‘nalish haqida: ko‘p arzon tekshiruv, kam qimmat tekshiruv.

Loyihangiz uchun nisbatni qanday tanlash

Xatolar aslida qayerda yashashiga qarang:

  1. Murakkab biznes mantiq (hisob-kitob, tariflar, qoidalar) — ko‘proq unit testlar.
  2. Ko‘p integratsiyalar (API, baza, to‘lov tizimlari, CRM) — integratsion testlarga urg‘u.
  3. Odatiy CRUD ekranli interfeys — komponentlarning integratsion testlari va asosiy ssenariylarga bir nechta E2E.
  4. Pul yoki muhim ma’lumotlar — shu yo‘llarga E2E majburiy.

Amaliy boshlanish: eng muhim 3–5 ta foydalanuvchi ssenariysini oling va ularni E2E bilan qoplang. Keyin prodakshnda topilgan har bir bagga integratsion test, murakkab mantiqqa esa unit testlar qo‘shing.

Ko‘p uchraydigan xatolar

  • Xatti-harakat o‘rniga implementatsiya tafsilotlarini tekshirish — testlar har bir refaktoringda buziladi.
  • Hamma narsani mock qilish — test tizimni emas, mocklarni tekshiradi.
  • Mantiqning barcha tarmoqlarini E2E bilan qoplashga urinish — to‘plam sekin va mo‘rt bo‘lib qoladi.
  • Muhim ssenariylarni himoya qilish o‘rniga qamrov foizini quvish.
  • Testlarni har bir pull request’da CI’da ishga tushirmaslik.

Ko‘p beriladigan savollar

Odatda eng muhim ssenariylarga bir nechta E2E yoki integratsion testdan: ular regressiyalardan eng tez himoya qiladi. Unit testlarni murakkab mantiqni yozganda yoki o‘zgartirganda qo‘shing.

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.