Tarkibga o'tish

Dasturiy ta'minotni testlash β€” 0 dan Expertgacha

Bu kitob sizni dasturiy ta'minotni testlash bo'yicha mutlaqo noldan β€” "nega test yozamiz?" degan savoldan β€” ekspert darajasiga olib chiqadi. Birinchi assertdan boshlab, test piramidasi, unit / integratsiya / E2E testlar, test dublyorlari (mock, stub, fake, spy), TDD (Red-Green-Refactor), BDD, ma'lumotlar bazasi va API testlash, kontrakt testlar, code coverage, property-based va mutation testing, flaky testlar, performance va xavfsizlik testlari, CI/CD, test strategiyasi va eski (legacy) kodni testlashgacha β€” nihoyat real loyihani noldan test bilan qoplaydigan kapstonga yetadi.

🧭 Til-mustaqil kitob. Test yozish β€” bu sintaksis emas, fikrlash tarzi. Shuning uchun bu kitob biror tilga bog'lanmaydi: asosiy yuk tamoyillar, diagramma va psevdokodda. Lekin har bir texnika yonida ishlaydigan Python + pytest namunasi beriladi (Python o'qishga eng oson va psevdokodga yaqin til). G'oyalar har qanday tilda bir xil: JavaScript'da Jest/Vitest, PHP'da PHPUnit/Pest, Java'da JUnit, Go'da testing β€” atamalar va naqshlar deyarli aynan.

βš–οΈ HALOL eslatma. Bu kitob testlashni yodlatmaydi, balki qachon, nimani va qanchalik test qilishni β€” va eng muhimi, nega β€” o'rgatadi. "100% coverage = xatosiz kod", "test yozish vaqtni behuda sarflaydi", "mock'lab hammasini testlash mumkin" kabi keng tarqalgan afsonalarni ataylab buzamiz. Barcha Python namunalari haqiqatan ishga tushirib, chiqishi tekshirilgan.

ℹ️ Bu kitob siz kamida bitta tilda asosiy kod yoza olasiz deb hisoblaydi (o'zgaruvchi, funksiya, shart, sikl, klass tushunchasi). Agar yangi bo'lsangiz, avval Python yoki JavaScript kitobini ko'rib chiqing. Testlash uchun maxsus matematika kerak emas.


Qanday o'qish kerak

  1. Boblarni tartib bilan o'qing (01 β†’ 02 β†’ ...). Har qism oldingisiga tayanadi: asoslar β†’ unit testing β†’ TDD β†’ integratsiya β†’ sifat o'lchovlari β†’ funksional bo'lmagan testlar β†’ jarayon va kapston.
  2. Har bobdagi diagramma va kod namunalarini diqqat bilan kuzating, kodni o'zingiz ishlatib ko'ring.
  3. Eng muhimi β€” o'z loyihangizda test yozib ko'ring. Testlash faqat amaliyot bilan o'rganiladi.
  4. Har bobning "Mashqlar" bo'limini ishlang: avval o'zingiz urinib, keyin yechimni oching.

Talab

Kerak Daraja
Kamida bitta tilda asosiy dasturlash (funksiya, shart, sikl, klass) Shart
Python sintaksisi bilan tanishlik Foydali (kitob namunalari Python'da)
Buyruq qatori (terminal) bilan ishlash Foydali (kitob asosini o'rgatadi)
Avvalgi test yozish tajribasi Shart emas β€” kitob noldan o'rgatadi

Mundarija

I qism β€” Testlash asoslari

# Bob Mavzu
01 Nega test yozamiz? Xatoning narxi, ishonch va regressiya, qo'lda vs avtomat testlash, test nima emas, testlash madaniyati.
02 Birinchi testingiz: AAA va test anatomiyasi Test runner, assertion, Arrange-Act-Assert, birinchi pytest testi, test nomlash va ishga tushirish.
03 Test turlari va test piramidasi Unit / integratsiya / E2E, test piramidasi vs "trophy", qamrov-tezlik-narx muvozanati.
04 Yaxshi test xossalari: FIRST va izolyatsiya FIRST tamoyillari, determinizm, mustaqillik, o'qilishi, "bitta yiqilish sababi", test smell'lari.

II qism β€” Unit testing chuqur

# Bob Mavzu
05 Assertion'lar va test holatlarini tanlash Assertion turlari, istisnolarni testlash, chegara qiymatlari, ekvivalentlik sinflari, hodisa tanlash.
06 Test ma'lumotlari: fixture, parametrize, builder pytest fixture, scope, conftest.py, parametrlangan testlar, test data builder / object mother.
07 Test dublyorlari I: taksonomiya Dummy, stub, fake, spy, mock β€” Meszaros taksonomiyasi; har biri qachon kerak; "klassik vs london".
08 Test dublyorlari II: amaliyot va tuzoqlar unittest.mock, patch, side effect, qachon mock qilmaslik, ortiqcha mock (over-mocking) tuzog'i.
09 Vaqt, tasodif, I/O: bog'liqliklarni izolyatsiya Vaqt/tasodif/fayl/tarmoqni boshqarish, seam, testlash uchun dependency injection.
10 Testlanadigan dizayn DI, sof funksiya, humble object, portlar/adapterlar, testlash dizaynga qanday bosim beradi.

III qism β€” TDD va dizayn

# Bob Mavzu
11 TDD: Red-Green-Refactor Test-driven development sikli, kichik qadamlar, "transformation priority", TDD foydasi va tanqidi.
12 TDD amaliyotda: to'liq misol (kata) To'liq TDD kata: bosqichma-bosqich real masalani test bilan haydab yechish.
13 Refactoring va testlar Test soyabonida xavfsiz refactoring, characterization test, test koddagi smell'lar, DRY vs DAMP.
14 BDD va spetsifikatsiya Given-When-Then, Gherkin, jonli hujjat, "specification by example", umumiy til (DDD bilan ko'prik).

IV qism β€” Integratsiya va yuqori darajadagi testlar

# Bob Mavzu
15 Integratsiya testlari Integratsiya chegaralari, in-memory vs real, Testcontainers g'oyasi, qachon integratsiya afzal.
16 Ma'lumotlar bazasi va tashqi servislarni testlash Tranzaksiya/rollback, migratsiya, seed, fixture vs factory, tashqi servislarni izolyatsiya.
17 API va HTTP testlash So'rov/javob, status kod, sxema validatsiyasi, autentifikatsiya, HTTP'ni soxtalashtirish (mock server).
18 Kontrakt testlar Consumer-driven contract, Pact g'oyasi, sxema/API kontrakti, mikroservislararo moslik.
19 End-to-end va UI testlar E2E qachon arziydi, brauzer avtomatizatsiyasi (Playwright/Selenium g'oyasi), Page Object, barqarorlik.

V qism β€” Sifatni o'lchash va kengaytirilgan texnikalar

# Bob Mavzu
20 Code coverage: foyda va xavf Qamrov turlari (qator/shox/yo'l), maqsadli foiz, Goodhart qonuni, coverage nimani ko'rsatmaydi.
21 Property-based testing Generativ testlash, invariant, Hypothesis, shrinking, misol-asosli vs xossa-asosli.
22 Mutation testing Mutant, mutation score, "testlaringizni testlash", mutmut g'oyasi, coverage'dan kuchliroq signal.
23 Snapshot va approval testing Snapshot/golden master, approval test, characterization, qachon foydali va qachon xavfli.
24 Flaky testlar va barqarorlik Sabablar (async/vaqt/tartib/umumiy holat), karantin, retry, flaky'ni topish va tuzatish.

VI qism β€” Funksional bo'lmagan testlar

# Bob Mavzu
25 Performance, yuk va stress testlar Latency vs throughput, persentil (p95/p99), load/stress/soak, tooling g'oyasi (k6/Locust).
26 Xavfsizlik testlash asoslari SAST/DAST, OWASP, fuzzing, bog'liqliklarni skanerlash, testlarda xavfsizlik holatlari.

VII qism β€” Jarayon, strategiya va kapston

# Bob Mavzu
27 Test avtomatlashtirish va CI/CD CI'da testlar, pipeline bosqichlari, tez fikr-mulohaza, parallellashtirish, test tanlash.
28 Test strategiyasi va testing quadrants Agile testing quadrants, risk-asosli testlash, nimani qancha testlash, ROI, test rejasi.
29 Eski (legacy) kodni testlash Seam, characterization test, "test yo'q koddan" boshlash, Michael Feathers, strangler yondashuv.
30 Kapston: loyihani noldan test bilan qoplash Hammasini birlashtirish: strategiya β†’ unit β†’ integratsiya β†’ E2E β†’ CI β†’ coverage/mutation.

Bu kitob va boshqa kitoblar


Muallif

Oqil Imomnazarov β€” ioqil.uz Β· Telegram Β· YouTube

Kitob bepul tarqatiladi (CC BY-NC-SA 4.0). Savdo qilish taqiqlanadi.