Verification — mahsulot yoki tizim belgilangan talab va spetsifikatsiyaga muvofiq qurilganini dalillar bilan tekshirish jarayonidir. U “to‘g‘ri mahsulot qurildimi” degan savolga javob beruvchi validationdan farqlanadi; verification “mahsulot to‘g‘ri qurildimi”ga e’tibor beradi. Amaliy loyihada ikkala jarayon bir-birini to‘ldiradi: noto‘g‘ri talabni mukammal bajarish foydalanuvchi muammosini hal qilmaydi.
Talabdan dalilgacha
Tekshiriladigan talab aniq, o‘lchanadigan va zid bo‘lmasligi kerak. “Tizim tez ishlaydi” verification uchun yetarli emas; “p95 javob vaqti berilgan yukda 200 millisekunddan oshmaydi” testable shakldir. Requirement traceability har talabni dizayn elementi, test yoki formal proof bilan bog‘laydi.
Acceptance criteria normal holat bilan birga xato, boundary va recovery xatti-harakatini ko‘rsatadi. Talab o‘zgarsa unga bog‘langan dalillar qayta ko‘rib chiqiladi. Faqat test soni yoki code coverage talab bajarilganini isbotlamaydi; testning aynan qaysi xususiyatni tekshirishi muhim.
Tekshirish usullari
Review source code, arxitektura yoki hujjatni mutaxassislar orqali tekshiradi. Static analysis dasturni ishga tushirmasdan data flow, type va qoidalarni tahlil qiladi. Dynamic test ma’lum inputda kuzatilgan outputni kutilgan natija bilan solishtiradi. Inspection fizik yoki konfiguratsion holatni bevosita ko‘radi, analysis esa o‘lchov va hisob-kitobdan xulosa chiqaradi.
Formal verification matematik model yordamida invariant yoki property barcha ruxsat etilgan holatlarda bajarilishini isbotlashga urinadi. Model checking cheklangan state space’ni tizimli ko‘rib chiqadi, theorem proving esa mantiqiy dalil quradi. Proof modelga tegishli; implementatsiya, compiler yoki hardware modeldan farq qilsa qo‘shimcha ishonch zanjiri kerak.
Dasturiy ta’minotda qo‘llash
Unit test kichik modul shartnomasini, integration test komponentlar aloqasini, system test esa yakuniy talablarga yaqin muhitni tekshiradi. Property-based test ko‘p generatsiyalangan inputda umumiy invariantni sinaydi. Fuzzing parser va xavfsizlik chegaralarida kutilmagan holatlarni topadi. Regression test tuzatilgan xato qaytmaganini ko‘rsatadi.
Build artifact source commit, dependency lock va configuration bilan bog‘lanadi. Reproducible build bir xil inputdan bir xil binary chiqishini tekshiradi. Signature artifactning kelib chiqishi va o‘zgarmaganini tasdiqlaydi, ammo kodning funksional to‘g‘riligini isbotlamaydi.
Mustaqillik va hisobot
Yuqori xavfli tizimda verificationni implementatsiya muallifidan qisman mustaqil jamoa bajarishi mumkin. Bu bilim almashuvini bekor qilmaydi, confirmation biasni kamaytiradi. Test muhiti, vosita versiyasi, input va kuzatilgan natija qayta bajariladigan tarzda saqlanadi.
Failure shunchaki “test qizil” emas: talab, actual result, log va minimal reproduksiya bilan yoziladi. Waiver bajarilmagan talabni yo‘q qilmaydi; risk owner, asos va muddat bilan vaqtincha qabul qilinadi. Production telemetry verification dalilini real sharoitda kuzatishda davom ettiradi.
Xavfsizlik xususiyatlarini tekshirish
Security requirement “faqat egasi hujjatni o‘qiydi” kabi invariantga aylantiriladi. Test turli rol, tenant va obyekt kombinatsiyasida ruxsat matritsasini tekshiradi. Negative test noto‘g‘ri token, eski session va to‘g‘ridan-to‘g‘ri ID almashishini qamrab oladi. Formal model authorization state machine’da taqiqlangan holatga yo‘l yo‘qligini izlaydi. Cryptographic implementation uchun known-answer test va protocol interoperability zarur. Verification threat modeldagi har muhim controlga evidence bog‘laydi. Control production configurationda o‘chirilishi mumkin bo‘lsa deployment policy ham tekshiriladi; source’dagi to‘g‘ri kodning o‘zi yetarli emas.
Verification natijasi talab versiyasi o‘zgarsa avtomatik ravishda qayta baholanadi.
Bog‘liq tushunchalar
Validation, Formal verification, Model checking, Test coverage, Traceability, Acceptance criteria, Quality assurance