Scenario — Behavior-Driven Development doirasida tizim xatti-harakatining bitta aniq misolini tasvirlaydigan spetsifikatsiya birligidir. U ma’lum boshlang‘ich sharoit, bajarilgan hodisa va kuzatiladigan natijani birlashtiradi. Scenario umumiy talabni tekshiriladigan konkret holatga aylantiradi.
Feature ichidagi o‘rni
Gherkin hujjatida Feature odatda bir imkoniyat yoki biznes maqsadini ifodalaydi, uning ostidagi scenario esa shu imkoniyatning alohida misolini ko‘rsatadi. Masalan, “hisobga kirish” featurei to‘g‘ri parol, noto‘g‘ri parol va bloklangan hisob uchun alohida senariylarga ega bo‘lishi mumkin. Har bir senariy o‘z nomi bilan tekshirayotgan xatti-harakatni aniq bildiradi.
Senariy test casega o‘xshaydi, lekin asosiy urg‘u biznes tilida tushunarli misolga beriladi. U test vositasining ichki ishlashi, metod nomlari yoki ma’lumotlar bazasi jadvallarini sanab o‘tishi shart emas. Texnik bog‘lanish step definition qatlamida amalga oshiriladi.
Qadamlar tuzilishi
Scenario ko‘pincha quyidagi semantik ketma-ketlikdan foydalanadi:
- Given — mavjud kontekst va old shartlar;
- When — tekshirilayotgan amal yoki hodisa;
- Then — tashqaridan kuzatiladigan natija;
- And yoki But — oldingi turdagi qadamning davomi.
Given qismida tizimni qanday SQL buyruq bilan tayyorlash emas, foydalanuvchi uchun ahamiyatli holat yoziladi. When qismida odatda bitta asosiy hodisa bo‘lishi senariyning maqsadini ravshan saqlaydi. Then da ichki funksiya chaqirilganini emas, qaytarilgan javob, o‘zgargan holat yoki yuborilgan xabar tekshiriladi.
Mustaqillik va takrorlanuvchanlik
Har bir scenario boshqa senariy bajarilganiga bog‘liq bo‘lmasligi kerak. Testlar turli tartibda yoki parallel ishga tushirilishi mumkin. Oldingi senariy yaratgan foydalanuvchidan foydalanish natijani tartibga bog‘lab qo‘yadi. Kerakli holat Given qadamlarida yoki nazorat qilinadigan fixture orqali yangidan tayyorlanadi.
Vaqt, tasodifiy qiymat va tashqi servis kabi omillar ham boshqariladi. Masalan, “aksiya tugagan” holati real soatni kutish o‘rniga aniq sana bilan ifodalanadi. Bir xil kirishlar bir xil kuzatiladigan natijani bersa, nosozlikni takrorlash osonlashadi.
Scenario Outline
Bir xil xatti-harakat bir nechta ma’lumot to‘plamida tekshirilsa, Scenario Outline ishlatilishi mumkin. Qadamdagi placeholderlar Examples jadvalidagi har bir qator bilan almashtiriladi va alohida scenario nusxasi hosil bo‘ladi. Bu takroriy matnni kamaytiradi.
Jadval juda katta bo‘lsa, feature fayl biznes hujjatidan ma’lumotlar omboriga aylanib qoladi. Chegaraviy va vakil holatlar senariyda, ko‘plab kombinatsiyalar esa parametrli unit testlarda saqlanishi mumkin. Har bir Examples qatori talabning ma’noli variantini ko‘rsatishi kerak.
Sifat mezonlari
Scenario nomi natijani yoki vaziyatni ajratib turadi. “Test 1” o‘rniga “Muddati o‘tgan token bilan so‘rov rad etiladi” kabi nom nosozlik hisobotini tushunarli qiladi. Qadamlar qisqa bo‘lishi mumkin, ammo yashirin katta ishni noaniq ibora ortiga berkitmasligi lozim.
Bir senariyda bir nechta mustaqil xatti-harakat aralashsa, qaysi talab buzilgani aniqlash qiyinlashadi. Bunday holat alohida senariylarga ajratiladi. Aksincha, har bir mayda UI bosishini mustaqil senariyga aylantirish ham domen mazmunini yo‘qotadi. Chegara biznes uchun bitta tushunarli misol asosida tanlanadi.
Natijalarni talqin qilish
Scenario muvaffaqiyatsiz tugasa, qaysi qadamda kutilgan va haqiqiy natija farq qilgani ko‘rsatiladi. Bu avtomatik ravishda mahsulot kodi xato degani emas: step definition, test ma’lumoti yoki muhit ham sabab bo‘lishi mumkin. Hisobot qadam matni, xato dalili va zarur diagnostikani birga saqlasa, tekshiruv tezlashadi.
Bog‘liq tushunchalar
Behavior-Driven Development, Gherkin, Feature, Step definition, Scenario Outline, Acceptance test