Zamonaviy IT jamoalari qanday ishlaydi? Test birinchi, kod keyinmi? BDD nima va Given-When-Then sintaksisi qanday? Sodda misollar bilan o'rganamiz.
5-darsda siz IT jamoasidagi rollarni o'rgandingiz. Endi savol: bu odamlar qanday hamkorlik qiladi? Testor faqat oxirida bug topadimi yoki boshidanoq qatnashadimi?
Zamonaviy yondashuvda javob aniq: butun jamoa birga ishlaydi. Bu darsda 4 ta muhim tushunchani ko'rib chiqamiz: Whole Team Approach, TDD, ATDD va BDD. Barchasi โ bugungi IT dunyosining asosiy praktikalari.
Bu darsdan keyin siz intervyuda bu atamalarni bemalol ishlata olasiz va "BDD ssenariysi" deb sizdan so'rashganda โ aniq javob bera olasiz.
Whole Team Approach (Butun Jamoa Yondashuvi) โ sifat uchun faqat testor emas, butun jamoa mas'ul bo'ladi degan falsafa.
Oddiy qilib: dasturchi ham sifatni o'ylaydi, dizayner ham, biznes analitik ham. Testor yolg'iz "sifat qo'riqchisi" emas โ u jamoaning bir qismi.
Har bir mutaxassis o'z ishini alohida qiladi.
Butun jamoa birga ishlaydi, sifat umumiy mas'uliyat.
Whole Team yondashuvining eng muhim amaliyoti โ 3 Amigos meeting (3 do'st uchrashuvi). Bu โ PO, Developer, QA birga o'tiradigan qisqa yig'ilish.
Uchta nuqtai nazar birga = har bir funksiya to'liq o'ylangan
Mavzu: "Foydalanuvchi parolni tiklashi mumkin"
PO: "Foydalanuvchi parolini unutsa โ email orqali tiklay oladi. Bu oddiy narsa."
Developer: "OK, email yuborish 5 daqiqa vaqt oladi. Kod yozish 2 soat."
QA: "Bir daqiqa โ agar email mavjud bo'lmasa nima bo'ladi? Noto'g'ri email kiritilsa? SMS orqali ham bo'ladimi? Qancha vaqt email ishlaydi? Havola 1 marta ishlatiladimi yoki qayta-qayta?"
Natija: 5 ta muhim savol ochildi. Agar QA bu yig'ilishda bo'lmaganda โ keyin bug topar edi va kodni qayta yozish kerak bo'lar edi.
3 Amigos meeting 15-30 daqiqa oladi, lekin keyinchalik soatlik ishlarni tejaydi. Sifat meeting'idan boshlanadi, kod yozishdan emas.
TDD (Test Driven Development) โ avval test yoziladi, keyin kod. Test birinchi!
Oddiy qilib: dasturchi awal "bu kod qanday ishlashi kerak" degan testni yozadi, keyin shu testga mos kod yozadi.
TDD doimiy 3 bosqichli sikl orqali ishlaydi. Har yangi funksiya shu bosqichlardan o'tadi:
Tasavvur qiling, dasturchi qo'shish(a, b) funksiyasini yozmoqchi. TDD bo'yicha qanday ishlaydi:
Dasturchi test yozadi:
test('qo\'shish(2, 3) = 5 bo\'lishi kerak', () => {
assert(qoshish(2, 3) === 5);
});
Natija: โ Test Fail (chunki qoshish funksiyasi hali yo'q)
Dasturchi eng oddiy kod yozadi:
function qoshish(a, b) {
return a + b;
}
Natija: โ Test Pass
Kod allaqachon yaxshi yozilgan โ hech narsa o'zgartirmaymiz. Agar murakkabroq bo'lganida, bu bosqichda kodni tozalash mumkin edi. Test baribir Pass bo'lishi kerak.
TDD asosan dasturchilar qiladigan ish. Lekin QA ham muhim:
TDD ning 3 bosqichini to'g'ri tartibda joylashtiring.
ATDD (Acceptance Test Driven Development) โ TDD ning biznes versiyasi. Avval Acceptance Criteria (qabul shartlari) yoziladi, keyin shu asosda dasturlash boshlanadi.
Oddiy qilib: "Bu funksiya qachon tayyor deb hisoblanadi?" savoliga oldindan aniq javob bermiladi.
Tasavvur qiling, siz yangi login sahifasi yaratmoqchisiz. ATDD bo'yicha avval qabul shartlari yoziladi:
Foydalanuvchi sifatida men email va parol orqali tizimga kirmoqchiman, shunda o'z akkountimdagi ma'lumotlarni ko'ra olaman.
Bu shartlar 3 Amigos meetingda tuziladi โ PO, Dev, QA birga. Dasturchi faqat shulardan keyin kod yozishni boshlaydi. Testor esa shu shartlar asosida test case'lar yozadi.
BDD (Behavior Driven Development) โ mahsulotning xatti-harakati (behavior) asosida test yozish uslubi. Oddiy tilda yoziladi โ hamma tushunadi.
Oddiy qilib: ATDD'ning zamonaviy versiyasi. Acceptance Criteria'lar maxsus formatda (Given-When-Then) yoziladi.
BDD'da har bir ssenariy 3 qismdan iborat bo'ladi:
Endi yuqoridagi Login Acceptance Criteria'larni BDD formatida yozamiz:
Bu matn texnik emas โ Product Owner ham, biznes direktor ham tushuna oladi. Lekin bu haqiqiy test โ Cucumber kabi asboblar orqali avtomatik bajariladi.
Gherkin โ bu BDD ssenariylari yoziladigan "til". Yuqoridagi misol Gherkin'da yozilgan. Asosiy kalit so'zlar:
Feature: โ umumiy xususiyat nomiScenario: โ aniq holatGiven โ boshlang'ich sharoitWhen โ harakatThen โ kutilgan natijaAnd โ qo'shimcha qadamGherkin ssenariylarini bajarib beradigan asboblar:
Hozir bu asboblarni chuqur o'rganish shart emas. Lekin Gherkin sintaksisni bilish va BDD ssenariysi yoza olish โ bu Junior QA uchun katta afzallik.
Har bir metodologiyani uning asosiy savoli bilan bog'lang.
Dushanba, 10:00. Siz Uzum Market'da QA'siz. 3 Amigos meetingga keldingiz. Mavzu: "Chegirma kodi" funksiyasi.
PO: "Foydalanuvchi checkout'da chegirma kodini kiritib, pul tejay olsin."
Developer: "OK, oddiy narsa. 1 kunda yozib bo'laman."
Savol: Siz QA sifatida qaysi savollarni berishingiz kerak?
Endi amaliyotga. TestShop uchun 3 ta BDD ssenariysini yozasiz. Bu sizning portfolio'ingiz uchun zo'r material bo'ladi.
Gherkin syntax bilan 3 ta professional ssenariy yozing.
๐ TestShop'ga o'tishSsenariylarni Google Docs'da yoki oddiy feature.txt faylida saqlang. Intervyuda "BDD ssenariy yoza olasizmi?" deb so'rashganda โ darhol ko'rsatasiz. Bu Middle darajasi uchun ham katta afzallik.
TDD, ATDD, BDD โ zamonaviy intervyularning eng ko'p so'raladigan mavzularidan. Javoblarni puxta o'rganing.
๐ก Har savol ustiga bosing โ professional javobni ko'rasiz.
Javob: "Whole Team Approach โ sifat uchun faqat testor emas, butun jamoa mas'ul bo'ladi degan falsafa. Dasturchi ham, dizayner ham, PO ham sifatni o'ylaydi."
Nega muhim?
Amaliy yondashuv: "Men 3 Amigos meetingda doim qatnashaman โ talablar aniqlashdan oldin savollar beraman."
Javob:
Qaysi biri qachon?
Javob: "TDD 3 bosqichli sikl orqali ishlaydi:"
Keyin sikl qaytadan โ yangi funksiya uchun RED bosqichidan boshlaysiz.
Nega shunday? "Oldindan test yozish โ kodingiz albatta testlanadigan qilib yozilishini ta'minlaydi."
Javob: "Given-When-Then โ BDD ssenariysining 3 qismi:"
Misol:
Scenario: Muvaffaqiyatli login
Given men login sahifasidaman
When men to'g'ri email va parolni kiritaman
Then men Dashboard'ga o'taman
Afzallik: Bu matnni PO ham tushunadi โ texnik bilim kerak emas.
Javob: "3 Amigos โ bu 15-30 daqiqalik qisqa uchrashuv. 3 ta asosiy rol qatnashadi:"
Maqsadi: Kod yozishdan oldin, yangi funksiya 3 xil nuqtai nazardan ko'rib chiqiladi. Bu keyinchalik soatlarcha qayta ishlashdan qutqaradi.
Pro javob: "Bu meeting Whole Team Approach'ning asosiy amaliyoti. Men unda doim savollar beraman โ masalan 'Noto'g'ri ma'lumot kiritilsa nima bo'ladi?' yoki 'Mobil versiyada qanday ishlaydi?'"
Javob: "TDD asosan dasturchilar ishi, lekin QA ham muhim rol o'ynaydi:"
Muhim: "QA TDD'ni bilsada, o'zi Unit test yozmaydi. Lekin u โ dasturchining eng yaxshi hamkori."
Javob: "Cucumber โ eng mashhur BDD asbobi. Gherkin sintaksisida yozilgan ssenariylarni avtomatik test sifatida bajaradi."
Qanday ishlaydi?
Qayerda ishlatiladi? Click, Uzum, EPAM, Exadel kabi kompaniyalarda. Asosan Java va JavaScript loyihalarda.
Muqobillari:
Bu darsdan eslab qolishingiz kerak bo'lgan eng muhim g'oyalar