Asosiy kontentga o‘tish
Informatik.uz
Bakalavr · 4-kurs1-bob. Dasturiy ta’minot muhandisligi

Testlash va sifat nazorati

Testlash darajalari, test piramidasi, chegaraviy qiymatlar tahlili va kod qamrovi. Dasturiy ta’minot sifatini avtomatlashtirilgan testlar, kod ko‘rigi va CI orqali ta’minlashni o‘rganasiz.

2-mavzu / 22 daq o‘qishYangilangan: 27-oktabr, 2026
Mavzular ro‘yxati (2 / 2)

Testlash — dasturning kutilgan xatti-harakatini haqiqiy natija bilan solishtirib, nuqsonlarni (bug) topish jarayoni. U xatosizlikni isbotlamaydi: Edsger Dijkstra ta’kidlaganidek, test nuqsonlar borligini ko‘rsata oladi, ammo ularning yo‘qligini emas. Sifat nazorati (QC) tayyor mahsulotdagi nuqsonlarni topishga, sifat kafolati (QA) esa nuqsonlar paydo bo‘lmasligi uchun jarayonlarni yaxshilashga qaratilgan.

Testlar bir necha darajada o‘tkaziladi. Birlik (unit) testlari alohida funksiya yoki sinfni izolyatsiyada tekshiradi, integratsion testlar modullarning o‘zaro ishlashini, tizim testlari butun ilovani, qabul (acceptance) testlari esa mahsulot mijoz talablariga mos ekanini aniqlaydi. Test piramidasi g‘oyasiga ko‘ra, eng ko‘p tez va arzon birlik testlari, ulardan kamroq integratsion testlar, eng kam esa sekin va murakkab interfeys testlari bo‘lishi kerak.

Test-keyslarni tanlashda ikki asosiy usul qo‘llanadi: qora quti (kirish va chiqishga qarab, ichki kodni bilmasdan) va oq quti (kod tuzilmasiga qarab). Kirish qiymatlarini tanlashda ekvivalentlik sinflari va chegaraviy qiymatlar tahlilidan foydalaniladi: masalan, yosh 18 dan boshlab ruxsat berilsa, 17, 18 va 19 qiymatlarini sinash kerak, chunki xatolar ko‘pincha chegarada uchraydi. Python’da birlik testi shunday ko‘rinadi: assert is_adult(18) is True va assert is_adult(17) is False.

Test sifatini o‘lchash uchun kod qamrovi (code coverage) ishlatiladi: testlar kodning necha foizini bajaradi. Yuqori qamrov sifat kafolati emas, chunki tekshiruvi (assert) bo‘lmagan test ham qamrovni oshiradi. Sifatni ushlab turuvchi boshqa amaliyotlar: kod ko‘rigi (code review), statik tahlil (linter), CI’da testlarni avtomatik ishga tushirish va regressiya testlari, ya’ni yangi o‘zgarish avval ishlagan funksiyani buzmaganini tekshirish. Nuqson qanchalik erta topilsa, uni tuzatish shunchalik arzon.

Asosiy xulosalar

  • Testlash nuqsonlar borligini ko‘rsatadi, ularning yo‘qligini isbotlay olmaydi.
  • Darajalar: birlik, integratsion, tizim va qabul testlari; piramidada birlik testlari eng ko‘p bo‘ladi.
  • Ekvivalentlik sinflari va chegaraviy qiymatlar testlar sonini kamaytirib, xatolarni samarali topadi.
  • Kod qamrovi foydali, lekin sifatning yagona o‘lchovi emas.
  • CI, kod ko‘rigi va regressiya testlari sifatni barqaror saqlaydi.

Amaliy topshiriqlar

  1. Python’da yoshi 18 va undan katta bo‘lsa True qaytaradigan is_adult(age) funksiyasini yozing va pytest bilan chegaraviy qiymatlar (17, 18, 19) hamda g‘ayrioddiy qiymatlar (0, -5) uchun kamida beshta test tuzing.
  2. coverage run -m pytest va coverage report buyruqlari bilan kod qamrovini o‘lchang, qamrab olinmagan satrni toping va uni tekshiradigan test qo‘shing.
  3. Biror veb-formani (masalan, ro‘yxatdan o‘tish) qora quti usulida testlang: ekvivalentlik sinflari va chegaraviy qiymatlarni hisobga olib, kamida sakkizta test-keys jadvalini (kirish va kutilgan natija) tuzing.

Mustahkamlash savollari

O‘zingizni sinab ko‘ring: avval o‘ylab ko‘ring, keyin javobni oching.

  1. 1Birlik va integratsion testlar o‘rtasida qanday farq bor?
    Birlik testi alohida funksiya yoki sinfni boshqalardan ajratib tekshiradi, integratsion test esa bir nechta modul birgalikda to‘g‘ri ishlashini tekshiradi.
  2. 2Nima uchun 100% kod qamrovi xatosizlikni kafolatlamaydi?
    Qamrov kodning bajarilganini ko‘rsatadi, natija to‘g‘riligini emas; tekshiruvi yo‘q yoki zaif testlar ham qamrovni oshiradi.
  3. 3Regressiya testlari nima uchun kerak?
    Yangi o‘zgarish avval ishlagan funksiyalarni buzmaganini tekshirish uchun.

0 / 2 mavzu o‘tildi

Kirib belgilash