VC LABBilimlar bazasiVebxuklarni testlash

Vebxuklarni testlash: takror, kechikish va soxtalashtirishga bardosh beradigan integratsiya

Vebxuk — oldindan aytib bo'lmaydigan paytda sizga hodisa yuboradigan begona servis, ba'zan ikki marta, ba'zan noto'g'ri tartibda, ba'zan soxta. Ko'pchilik integratsiyalar «keldi — qayta ishladik» bo'yicha tekshiriladi. Nuqsonlar qolgan holatlarda yashaydi va aynan ular ikki marta buyurtma va osilib qolgan statuslarni yaratadi.

Vebxuk nima va nega u tabiatan ishonchsiz

Vebxuk — tashqi servis hodisada sizning manzilingizga yuboradigan HTTP-so'rov: to'lov o'tdi, yetkazib berish statusni o'zgartirdi, obuna uzaytirildi. Yuboruvchi siz so'rovni olganingizni bilmaydi, shuning uchun har qanday shubhada takrorlaydi: taymaut, tarmoq xatosi, sizning xato kodli javobingiz. Bundan yashashga to'g'ri keladigan uchta xususiyat: bitta hodisa bir necha marta kelishi mumkin, hodisalar paydo bo'lish tartibida kelmasligi mumkin va imzo tekshirilmasa, istalgan kishi manzilingizga so'rov yuborishi mumkin.

Tekshiruvlar cheklisti

  • Idempotentlik: ikki va uch marta yetkazilgan bir xil hodisa olingan vaqt bo'yicha emas, hodisa identifikatori bo'yicha bir marta qayta ishlanadi.
  • Tartib: «to'lov bekor qilindi» hodisasi «to'lov yaratildi»dan oldin keldi — yakuniy status to'g'ri, eskiroq hodisa bilan ustidan yozilmagan.
  • Imzo: noto'g'ri yoki yo'q imzoli so'rov rad etiladi va loglanadi; to'g'ri imzoli, lekin muddati o'tgan vaqt belgili so'rov — ham.
  • Javob taymauti: ishlovchingiz tez javob berib qabulni tasdiqlaydi, og'ir ishni keyin bajaradi; aks holda yuboruvchi yetkazishni muvaffaqiyatsiz deb hisoblab takrorlaydi.
  • Qayta ishlash xatolari: sizning tomoningizdagi vaqtinchalik baza xatosi hodisani yo'qotmaydi — u hech qayerga emas, takror navbatiga ketadi.
  • Yetkazilmaslik: hodisa umuman kelmadi — buni aniqlaydigan jadval bo'yicha solishtirish bormi.
  • Format o'zgarishi: yuboruvchi maydon qo'shdi yoki versiyani o'zgartirdi — ishlovchi noma'lum maydonlarda qulamaydi.
  • Yuklama: aksiyada daqiqasiga yuzlab hodisa — navbat va baza bardosh beradi, qayta ishlash tartibi buzilmaydi.

Buni amalda qanday tekshirish

  1. Postman yoki o'xshash vositada so'rovlar kolleksiyasini yig'ish: real yuboruvchidan har bir hodisaning bittadan misoli, imzo bilan.
  2. Ularni qo'lda va skript bilan test stendiga yuborish: bittadan, ketma-ket ikki marta, teskari tartibda, buzilgan imzo bilan, eskirgan vaqt belgisi bilan.
  3. Ishlovchi javobini emas, keyingi tizim holatini tekshirish: buyurtma statusi, bazadagi yozuvlar, yuborilgan bildirishnomalar, logdagi yozuvlar.
  4. O'z tomoningizdagi nosozlikni emulyatsiya qilish: qabul paytida baza yoki navbatni to'xtatib, hodisa yo'qolmaganiga ishonch hosil qilish.
  5. Solishtirish: yuboruvchi tomonidagi hodisalar ro'yxatini davr uchun qayta ishlanganlar ro'yxati bilan taqqoslash.
Natija: ishlovchining har bir o'zgarishidan va yuboruvchi tomonidagi API ning har bir yangilanishidan keyin yurgiziladigan integratsiya regressiya to'plami.

Odatiy nuqsonlar

To'lov haqidagi vebxukni takroriy yetkazishdan keyin ikki marta buyurtma. Hodisalar olingan tartibda qayta ishlangani uchun bekor qilishdan keyin «to'langan» statusidagi buyurtma. Ikki marta yuborilgan «to'lov o'tdi» pushi. Vebxuk qabuli ichida tashqi API ga so'rov yuboradigan va yuboruvchi taymautiga ulgurmaydigan ishlovchi. Test stendida «vaqtincha o'chirilgani» uchun faqat prodakshnda tekshiriladigan imzo. Bularning hammasi test yurgizishda emas, yuklama cho'qqisida — takror va kechikishlar eng ko'p bo'lganda namoyon bo'ladi.

Teskari yo'nalishdagi integratsiyalar

Xuddi shu tamoyillar siz o'zingiz tashqi API ni chaqirganingizda ham ishlaydi: ortib boruvchi intervalli taymaut va retraylar, to'lov va buyurtmalar yaratishda idempotent kalitlar, so'rov limitlarini qayta ishlash, kontrakt o'zgarganda xatti-harakat. Chiquvchi integratsiyalar bo'yicha regressiya to'plami xuddi shu usulda yig'iladi va xuddi shu jadval bo'yicha yurgiziladi.

Ko'p so'raladigan savollar

Testlar uchun real yuboruvchi kerakmi?
Hodisa misollarini yig'ish va imzoni tekshirish uchun — ha, hech bo'lmasa bir marta servisning test rejimida. Keyin to'plam yuboruvchi ishtirokisiz kolleksiyadan yurgiziladi, bu tezroq va takrorlanadigan.
Hodisa identifikatori bo'lmasa idempotentlikni qanday tekshirish kerak?
Bu testning emas, integratsiyaning nuqsoni: noyob hodisa identifikatori yoki idempotent kalitsiz takrorlarni yangi hodisalardan ajratib bo'lmaydi. Identifikator qo'shish yoki uni mazmundan hisoblash tavsiyasi bilan kritik nuqson sifatida qayd etiladi.
To'plamni qanchalik tez-tez takrorlash kerak?
Ishlovchining har bir o'zgarishidan va yuboruvchining API o'zgarishi haqidagi xabarlaridan keyin. To'lov integratsiyalari uchun — qo'shimcha ravishda aksiyalar oldidan, to'lov regressiyasi bilan birga.
Buni avtomatlashtirish mumkinmi?
Ha, va bu eng mos nomzodlardan biri: hodisalar deterministik, to'plam barqaror, yurgizish tez. Holat tekshiruvli so'rovlar kolleksiyasi jadval bo'yicha va CI da ishga tushadi.

Vazifangiz haqida yozing

Bir ish kuni ichida javob beramiz, bahoni 1–2 kunda yuboramiz. Bepul.

Yangilangan: 2026-10-02