Test data — dastur xatti-harakatini tekshirish uchun testlarga beriladigan kirishlar va oldindan yaratilgan tizim holati. U oddiy valid obyektlardan tashqari chegara qiymatlari, noto‘g‘ri format, permission kombinatsiyasi, katta hajm va vaqtga bog‘liq holatlarni qamrab oladi. Sifatli test data xatoni qayta ishlab bo‘ladigan qiladi va production ma’lumotini test muhitiga ko‘chirish ehtiyojini kamaytiradi.
Synthetic data
Synthetic data factory tomonidan qoidalarga mos sun’iy yaratiladi. Masalan, user factory default valid email va role beradi, test esa faqat bloklangan holatni override qiladi. Bu qaysi maydon scenario uchun muhimligini ko‘rsatadi. Tasodifiy generator seed bilan qayta ishlab bo‘ladigan bo‘ladi.
Faker kutubxonasi real ko‘rinadigan ism va manzil beradi, lekin random data o‘z-o‘zidan edge case qamrovini kafolatlamaydi. Unicode combining mark, apostrof, RTL matn, maksimal uzunlik, nol, negative va timezone transition kabi holatlar explicit datasetga qo‘shiladi.
Fixture
Fixture statik fayl, database seed yoki setup kodi bo‘lishi mumkin. Kichik maqsadli fixture tushunarli. Ulkan umumiy fixture testlar orasida yashirin dependency yaratadi: boshqa yozuv o‘chsa bog‘liq bo‘lmagan test sinadi. Factory va builder ko‘pincha faqat kerakli graphni yaratadi.
Golden file parser yoki serializerning kutilgan katta chiqishini saqlaydi. Format o‘zgarsa diff review qilinadi. Snapshotni ko‘rmasdan ommaviy yangilash regressionni expected sifatida tasdiqlashi mumkin.
Production data
Production nusxasi real distribution va kam uchraydigan kombinatsiyalarni beradi, ammo shaxsiylik, qonuniylik va xavfsizlik xavfi katta. Masking faqat ismni almashtirib, boshqa maydonlar orqali shaxsni qayta aniqlashga yo‘l qoldirishi mumkin. Free-text, fayl va loglarda yashirin PII bo‘ladi.
Anonymization irreversible bo‘lishi, referential integrity va distributionni kerakli darajada saqlashi kerak. Tokenization map secret bo‘lsa data qayta tiklanishi mumkin va u ham yuqori qiymatli resursga aylanadi. Ko‘p test uchun synthetic data xavfsizroq va boshqariladigan.
Izolyatsiya
Har test o‘z data’sini yaratib, boshqa test qoldig‘iga tayanmaydi. Database transaction rollback tez usul, lekin background worker va boshqa connection uning tashqarisida bo‘lishi mumkin. Unique run ID, tenant yoki schema processlararo izolyatsiya beradi.
Parallel testlar bir xil [email protected] unique constraint uchun kurashmasligi kerak. Random suffix yoki worker ID ishlatiladi. Random collision ehtimoli va failure’da ishlatilgan qiymat logda ko‘rsatiladi.
Vaqtga bog‘liq data
“Bugundan 30 kun keyin” kabi fixture vaqt o‘tishi bilan boshqa natija beradi. Test clockni muzlatadi yoki injected clockdan vaqt oladi. Leap year, DST o‘tishi va oy oxiri explicit instant bilan tekshiriladi. Timestamp UTCda saqlanib, presentation timezone alohida sinovdan o‘tadi.
Expiry scenario real 30 daqiqa kutmaydi. Clock oldinga siljitiladi yoki token service test uchun nazoratli vaqt manbasini oladi. Production kodida maxsus if testing branch qo‘shish o‘rniga dependency injection ishlatiladi.
Xavfsiz saqlash
Test dataset repositoryga commit qilinsa secret, real email yoki credential bo‘lmasligi kerak. Secret scanning va review fixture’larni ham qamrab oladi. Payment provider test cardlari faqat provider hujjatidagi sandbox qiymatlar bo‘lib, production endpointda ishlamaydi.
Failure log va screenshot inputni chiqarishi mumkin. Parol, access token va shaxsiy maydon redaction qilinadi. CI artefaktiga kirish va retention test data sezgirligiga mos bo‘ladi.
Bog‘liq tushunchalar
Test fixture, Synthetic data, Data masking, Anonymization, Property-based testing, Test isolation, Faker