Bosh sahifa Wiki Soft assertion

Soft assertion

Soft assertion — birinchi assertion failure’da testni darhol to‘xtatmay, bir nechta mustaqil tekshiruv natijasini yig‘ib, test oxirida bitta jamlangan failure reporti chiqaradigan usul. U katta obyekt, UI sahifa yoki bir nechta bog‘liq bo‘lmagan maydonlarni bir bajarilishda tekshirganda ko‘proq diagnostika beradi.

Hard assertion bilan ishlashi

Oddiy hard assertion bajarilmasa keyingi kod ishlamaydi. Bu prerequisite uchun to‘g‘ri: response mavjud bo‘lmasa uning maydonlarini tekshirish ma’nosiz. Soft assertion esa bir-biridan mustaqil fieldlar uchun foydali.

hard: response status 200 ekanini tekshir
soft: title, price va currency qiymatlarini tekshir
soft: image URL formatini tekshir
assert_all: yig‘ilgan farqlarni chiqar

Status 500 bo‘lsa hard assertion testni to‘xtatadi. Status to‘g‘ri, ammo uchta field xato bo‘lsa barchasi bir reportda ko‘rinadi.

Yig‘ish mexanizmi

Soft assertion context har failure’ni message va stack location bilan collectionga qo‘shadi. Tekshiruvlar davom etadi. Scope tugaganda yoki assertAll chaqirilganda collection bo‘sh bo‘lmasa aggregate exception tashlanadi.

assertAll chaqirilishini unutish barcha xatolarni jim o‘tkazishi mumkin. Shu sabab context manager yoki framework lifecycle hook avtomatik finalization beradi. Har test uchun collector alohida bo‘lishi, parallel testlar global ro‘yxatni bo‘lishmasligi kerak.

Mos holatlar

Holat Soft assertion foydasi
DTO fieldlari Bitta run’da barcha farq ko‘rinadi
UI tekshiruvi Bir sahifadagi mustaqil elementlar
Migration audit Ko‘p record qoidalarini jamlash
API schema Bir nechta mustaqil constraint
Data quality Barcha buzilgan qatorlar ro‘yxati

Property-based yoki katta datasetda cheksiz failure yig‘ish xotira va reportni to‘ldiradi. Maksimal misollar soni va summary qo‘llanadi.

Bog‘liqlik xavfi

Keyingi assertion oldingi natijaga tayanadigan bo‘lsa soft davom etish ikkilamchi, chalg‘ituvchi xatolar yaratadi. user null bo‘lsa user.nameni tekshirish exception beradi. Avval structure hard assertion bilan tasdiqlanadi yoki keyingi tekshiruv guard bilan bajariladi.

Bir amalning side effecti xato bo‘lsa keyingi amallarni davom ettirish test state’ni buzishi mumkin. Soft assertion faqat kuzatuv tekshiruvlarini davom ettiradi, workflow step’larini “xato bo‘lsa ham” bajarish uchun emas.

Report sifati

Har soft assertion kontekstga ega nom bilan yoziladi: line_items[3].currency, profile.avatar.alt kabi. Faqat “expected X got Y” qaysi maydon ekanini ko‘rsatmaydi. Aggregate report bir xil formatda expected, actual va pathni chiqaradi.

Katta matn va maxfiy payload to‘liq takrorlanmaydi. Diff qisqartiriladi, artefakt alohida saqlanadi, secret redaction qilinadi. Failurelar deterministik tartibda chiqarilsa CI diff o‘qilishi osonlashadi.

Test dizayni

Soft assertion testni haddan tashqari ko‘p maqsadli qilish uchun ishlatilmaydi. Bir testda turli biznes ssenariylar jamlansa setup va sabab tahlili murakkablashadi. U bitta scenario natijasining mustaqil xususiyatlarini tekshirishga mos.

Test juda ko‘p soft failure bersa umumiy root cause bo‘lishi mumkin. Masalan, noto‘g‘ri locale barcha matn maydonini o‘zgartiradi. Report symptomlarni beradi, tahlil esa ularni bitta sababga birlashtiradi.

CI va retry

Soft assertion bir run’da ko‘p farqni ko‘rsatib, “birini tuzat—yana ishga tushir” siklini qisqartiradi. Biroq testning execution vaqti katta bo‘lsa ham failuredan keyin barcha qimmat tekshiruvni bajarish resurs sarflaydi. Collector limit va muhim hard gate’lar bilan boshqariladi.

Flaky soft assertionlar reportni shovqinli qiladi. Har tekshiruvning timing, selector va data isolation’i barqaror bo‘lishi kerak; ko‘p xabar beqaror testni sifatli qilmaydi.

Bog‘liq tushunchalar

Assertion, Hard assertion, Test failure, Aggregate error, Expected value, Actual value, Test report