0%
6-dars

Whole Team Approach va TDD/ATDD/BDD

Zamonaviy IT jamoalari qanday ishlaydi? Test birinchi, kod keyinmi? BDD nima va Given-When-Then sintaksisi qanday? Sodda misollar bilan o'rganamiz.

75 daqiqa
Zamonaviy metodologiyalar
6 ta interaktiv topshiriq

Zamonaviy yondashuv

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

Asosiy atama

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.

Eski va yangi yondashuvlar

Eski (Siloed)

Har bir mutaxassis o'z ishini alohida qiladi.

  • Dasturchi kod yozadi โ€” bu uning ishi
  • Testor bug topadi โ€” bu uning ishi
  • Dizayner rasm chizadi โ€” bu uning ishi
  • Bir-birini kutadilar (sekin)
  • "Meniki emas" deyish tez-tez

Yangi (Whole Team)

Butun jamoa birga ishlaydi, sifat umumiy mas'uliyat.

  • Hamma sifatni o'ylaydi (dasturchi ham)
  • Testor boshidanoq qatnashadi
  • 3 Amigos โ€” PO, Dev, QA birga
  • Tezroq natija
  • "Biz birga yaratamiz"

"3 Amigos" meetings

Whole Team yondashuvining eng muhim amaliyoti โ€” 3 Amigos meeting (3 do'st uchrashuvi). Bu โ€” PO, Developer, QA birga o'tiradigan qisqa yig'ilish.

3 Amigos โ€” har biri o'z savolini beradi

PO
Product Owner
"Biznes uchun bu nima foyda?"
D
Developer
"Buni qanday yaratsam bo'ladi?"
QA
QA / Testor
"Qanday buzishim mumkin?"

Uchta nuqtai nazar birga = har bir funksiya to'liq o'ylangan

Real misol: 3 Amigos meeting

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.

Amaliy xulosa

3 Amigos meeting 15-30 daqiqa oladi, lekin keyinchalik soatlik ishlarni tejaydi. Sifat meeting'idan boshlanadi, kod yozishdan emas.

TDD โ€” Test Driven Development

Asosiy atama

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.

Red-Green-Refactor sikli

TDD doimiy 3 bosqichli sikl orqali ishlaydi. Har yangi funksiya shu bosqichlardan o'tadi:

01
RED
Test yozing. U ishlamaydi (chunki kod yo'q)
โ†’
02
GREEN
Minimal kod yozing โ€” test o'tsin
โ†’
03
REFACTOR
Kodni yaxshilang โ€” test baribir o'tsin
โ†ป Sikl takrorlanadi: har yangi xususiyat uchun qaytadan Red โ†’ Green โ†’ Refactor

Sodda misol: Kalkulyator

Tasavvur qiling, dasturchi qo'shish(a, b) funksiyasini yozmoqchi. TDD bo'yicha qanday ishlaydi:

๐Ÿ”ด 1-qadam: RED

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)

๐ŸŸข 2-qadam: GREEN

Dasturchi eng oddiy kod yozadi:

function qoshish(a, b) {
  return a + b;
}

Natija: โœ… Test Pass

๐Ÿ”ง 3-qadam: REFACTOR

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'da QA roli nima?

TDD asosan dasturchilar qiladigan ish. Lekin QA ham muhim:

๐Ÿ’ก Hayotiy misol
Uy qurish โ€” avval reja chizing
Siz uy qurmoqchisiz. Normal odam avval chizma chizadi ("5 xonali, oshxona shu yerda"), keyin qurishga kirishadi. Hech kim g'ishtni birinchi qo'yib, keyin "qanday uy bo'ladi?" deb o'ylamaydi. TDD ham shunday โ€” avval "qanday ishlashi kerak" (test), keyin "qanday ishlaydi" (kod).
๐ŸŽฏ Amaliy topshiriq

TDD siklini tartibga qo'ying

TDD ning 3 bosqichini to'g'ri tartibda joylashtiring.

1-qadam
2-qadam
3-qadam
๐ŸŸข GREEN โ€” kod yozish, test o'tsin
๐Ÿ”ด RED โ€” test yozish (u ishlamaydi)
๐Ÿ”ง REFACTOR โ€” kodni yaxshilash
0 / 3 to'g'ri

ATDD โ€” Acceptance Test Driven Development

Asosiy atama

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.

ATDD qanday ishlaydi?

ATDD
Acceptance Criteria bilan boshlanadi
Acceptance Criteria โ€” bu shartlar ro'yxati. Funksiya "tayyor" deb hisoblanishi uchun har bir shart bajarilishi kerak.

Sodda misol: Login funksiyasi

Tasavvur qiling, siz yangi login sahifasi yaratmoqchisiz. ATDD bo'yicha avval qabul shartlari yoziladi:

User Story

Foydalanuvchi sifatida men email va parol orqali tizimga kirmoqchiman, shunda o'z akkountimdagi ma'lumotlarni ko'ra olaman.

Acceptance Criteria (qabul shartlari)
  1. Email va parol maydonlari bo'lishi kerak
  2. Ikkisi ham majburiy โ€” bo'sh bo'lsa xato xabari chiqsin
  3. To'g'ri ma'lumotlar bilan โ€” foydalanuvchi Dashboard sahifasiga o'tadi
  4. Noto'g'ri parol bilan โ€” "Email yoki parol noto'g'ri" xabari chiqsin
  5. 3 marta noto'g'ri urinishda โ€” akkount 5 daqiqa bloklansin
  6. "Parolni unutdim" havolasi bo'lishi kerak
Muhim

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.

ATDD'ning afzalliklari

BDD โ€” Behavior Driven Development

Asosiy atama

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.

Given-When-Then โ€” BDD'ning 3 so'zi

BDD'da har bir ssenariy 3 qismdan iborat bo'ladi:

Sodda misol: Login BDD ssenariysi

Endi yuqoridagi Login Acceptance Criteria'larni BDD formatida yozamiz:

# Login funksiyasi Feature: Foydalanuvchi tizimga kirishi Scenario: Muvaffaqiyatli login Given men login sahifasidaman And to'g'ri akkount ma'lumotlarim bor When men email va parolni kiritaman And "Kirish" tugmasini bosaman Then men Dashboard sahifasiga o'taman Scenario: Noto'g'ri parol Given men login sahifasidaman When men email va noto'g'ri parolni kiritaman And "Kirish" tugmasini bosaman Then men "Email yoki parol noto'g'ri" xabarini ko'raman And men login sahifasida qolaman
E'tibor bering

Bu matn texnik emas โ€” Product Owner ham, biznes direktor ham tushuna oladi. Lekin bu haqiqiy test โ€” Cucumber kabi asboblar orqali avtomatik bajariladi.

Gherkin syntax โ€” BDD tili

Gherkin โ€” bu BDD ssenariylari yoziladigan "til". Yuqoridagi misol Gherkin'da yozilgan. Asosiy kalit so'zlar:

BDD asboblari

Gherkin ssenariylarini bajarib beradigan asboblar:

Cucumber
Eng mashhur BDD asbobi
Java, JavaScript, Ruby tillarida ishlatiladi. Click, Uzum kabi kompaniyalarda ham uchraydi.
SpecFlow
.NET uchun Cucumber
Microsoft texnologiyalari (C#) bilan ishlaydigan kompaniyalarda ishlatiladi.
Behave
Python uchun
Python dasturchilari uchun BDD asbobi. Sodda va o'rganishi oson.
Junior uchun

Hozir bu asboblarni chuqur o'rganish shart emas. Lekin Gherkin sintaksisni bilish va BDD ssenariysi yoza olish โ€” bu Junior QA uchun katta afzallik.

๐ŸŽฏ Bog'lang

Metodologiya va uning asosiy savoli

Har bir metodologiyani uning asosiy savoli bilan bog'lang.

Metodologiya

Whole Team Approach
TDD
ATDD
BDD
Given-When-Then

Asosiy savoli / tavsifi

Mahsulot xatti-harakatini tasvirlash
Sifat โ€” hamma uchun umumiy mas'uliyat
BDD ssenariysining 3 qismi
Avval test, keyin kod
Acceptance Criteria birinchi
0 / 5 juft topildi
โšก BDD ssenariy
TestShop uchun BDD ssenariysi tuzing: "Foydalanuvchi savatga mahsulot qo'shadi". Qaysi variant to'g'ri?
๐ŸŽฌ Haqiqiy stsenariy
Uzum'da yangi feature

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?

Eng professional yondashuv qaysi?

TestShop uchun BDD ssenariylari yozing

Endi amaliyotga. TestShop uchun 3 ta BDD ssenariysini yozasiz. Bu sizning portfolio'ingiz uchun zo'r material bo'ladi.

๐Ÿ›’

TestShop โ€” BDD amaliyoti

Gherkin syntax bilan 3 ta professional ssenariy yozing.

๐Ÿš€ TestShop'ga o'tish

Sizning vazifangiz: 3 ta BDD ssenariy

1
Muvaffaqiyatli ro'yxatdan o'tish
Given-When-Then formatida yozing. Kamida 3 ta Given va 2 ta Then bo'lsin.
2
Noto'g'ri login bilan kirish urinishi
Negative scenario โ€” xatolik holatini qoplang. "Email yoki parol noto'g'ri" xabari chiqishi kerak.
3
Savatga mahsulot qo'shish va badge yangilash
Feature + Scenario + Given/When/Then'lar. Natija: savat badge'i +1.
๐Ÿ’ก Pro maslahat

Ssenariylarni 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.

Intervyu savollari

TDD, ATDD, BDD โ€” zamonaviy intervyularning eng ko'p so'raladigan mavzularidan. Javoblarni puxta o'rganing.

๐Ÿ’ก Har savol ustiga bosing โ€” professional javobni ko'rasiz.

Q1 Whole Team Approach nima? Nega muhim? +

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?

  • Bug'lar ertaroq topiladi (arzon tuzatiladi)
  • Hamma "meniki emas" deyishdan voz kechadi
  • Jamoa birdamligi oshadi
  • Mahsulot sifati yaxshi bo'ladi

Amaliy yondashuv: "Men 3 Amigos meetingda doim qatnashaman โ€” talablar aniqlashdan oldin savollar beraman."

Q2 TDD, ATDD va BDD farqini tushuntiring. +

Javob:

  • TDD (Test Driven Development) โ€” texnik yondashuv. Avval Unit test, keyin kod. Red-Green-Refactor sikli. Asosan dasturchilar uchun.
  • ATDD (Acceptance Test Driven) โ€” biznes yondashuv. Avval Acceptance Criteria, keyin kod. 3 Amigos birga yozadi.
  • BDD (Behavior Driven Development) โ€” ATDD ning zamonaviy versiyasi. Given-When-Then formatida yoziladi. Biznes va texnik odamlar birga ishlashadi.

Qaysi biri qachon?

  • TDD โ€” Unit testlar uchun (dasturchi)
  • ATDD โ€” biznes talablar aniq emas holatda
  • BDD โ€” zamonaviy Agile jamoalarda
Q3 TDD ning Red-Green-Refactor siklini tushuntiring. +

Javob: "TDD 3 bosqichli sikl orqali ishlaydi:"

  • ๐Ÿ”ด RED โ€” Test yozasiz. U Fail bo'ladi (chunki kod hali yo'q). Bu normal.
  • ๐ŸŸข GREEN โ€” Minimal kod yozasiz โ€” faqat test o'tsin. Chiroyli emas, oddiy.
  • ๐Ÿ”ง REFACTOR โ€” Kodni tozalaysiz, yaxshilaysiz. Test baribir o'tishi kerak.

Keyin sikl qaytadan โ€” yangi funksiya uchun RED bosqichidan boshlaysiz.

Nega shunday? "Oldindan test yozish โ€” kodingiz albatta testlanadigan qilib yozilishini ta'minlaydi."

Q4 BDD da Given-When-Then nima? Misol bering. +

Javob: "Given-When-Then โ€” BDD ssenariysining 3 qismi:"

  • Given โ€” boshlang'ich holat (bu yerda tizim qanday?)
  • When โ€” foydalanuvchi nima qiladi?
  • Then โ€” natija nima bo'lishi kerak?

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.

Q5 3 Amigos meeting nima? Kimlar qatnashadi? +

Javob: "3 Amigos โ€” bu 15-30 daqiqalik qisqa uchrashuv. 3 ta asosiy rol qatnashadi:"

  • Product Owner (PO) โ€” "Biznes uchun bu nima foyda?"
  • Developer โ€” "Buni qanday yaratsam bo'ladi?"
  • QA / Testor โ€” "Qanday buzishim mumkin?"

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?'"

Q6 QA TDD da qanday qatnashadi? +

Javob: "TDD asosan dasturchilar ishi, lekin QA ham muhim rol o'ynaydi:"

  • Test senariylarini ro'yxatlash โ€” dasturchi qaysi holatlarni Unit test qilishi kerakligini aytadi
  • Code Review โ€” dasturchi yozgan testlar yetarli'mi tekshiradi
  • Integration/System testlar โ€” TDD faqat Unit darajasida, yuqori darajalar QA zimmasida
  • Edge case'lar โ€” "Bu holatni ham test qildingizmi?" deb so'raydi

Muhim: "QA TDD'ni bilsada, o'zi Unit test yozmaydi. Lekin u โ€” dasturchining eng yaxshi hamkori."

Q7 Cucumber nima? Qayerda ishlatiladi? +

Javob: "Cucumber โ€” eng mashhur BDD asbobi. Gherkin sintaksisida yozilgan ssenariylarni avtomatik test sifatida bajaradi."

Qanday ishlaydi?

  • QA yoki BA Gherkin ssenariysini yozadi
  • Dasturchi har bir Given/When/Then uchun kod yozadi
  • Cucumber avtomatik ravishda testlarni bajaradi

Qayerda ishlatiladi? Click, Uzum, EPAM, Exadel kabi kompaniyalarda. Asosan Java va JavaScript loyihalarda.

Muqobillari:

  • SpecFlow โ€” .NET uchun
  • Behave โ€” Python uchun

3 ta asosiy fikr

Bu darsdan eslab qolishingiz kerak bo'lgan eng muhim g'oyalar

01
Sifat โ€” umumiy mas'uliyat
Whole Team Approach: testor yolg'iz emas, butun jamoa sifatga mas'ul. 3 Amigos bu falsafaning amaliy ifodasi.
02
Test birinchi, kod keyin
TDD: Red โ†’ Green โ†’ Refactor sikli. Bu dasturchi uchun, lekin QA โ€” hamkor.
03
BDD = Biznes tili bilan test
Given-When-Then โ€” hamma tushunadi. Cucumber orqali avtomatlashtiriladi. Intervyuda so'raladi.
๐Ÿ† Darsni muvaffaqiyatli tugatdingiz!