Xulq-atvorga asoslangan rivojlanish - Behavior-driven development - Wikipedia

Dasturiy ta'minotni ishlab chiqish
Asosiy faoliyat
Paradigmalar va modellar
Metodika va ramkalar
Fanlarni qo'llab-quvvatlash
Amaliyotlar
Asboblar
Bilimning standartlari va organlari
Lug'atlar
Konturlar

Yilda dasturiy ta'minot, xulq-atvorga asoslangan rivojlanish (BDD) an Tezkor dasturiy ta'minotni ishlab chiqish dasturiy ta'minot loyihasida ishlab chiquvchilar, QA va texnik bo'lmagan yoki biznes ishtirokchilari o'rtasida hamkorlikni rag'batlantiradigan jarayon.[1][2][3] Bu jamoalarni suhbat va aniq misollardan foydalanib, dasturning qanday ishlashi kerakligini birgalikda tushunishni rasmiylashtirishga undaydi.[4] U paydo bo'ldi sinovga asoslangan rivojlanish (TDD).[1][2][5][6][noaniq ][7] Xulq-atvorga asoslangan rivojlanish TDD ning umumiy texnikasi va tamoyillarini g'oyalar bilan birlashtiradi domenga asoslangan dizayn va ob'ektga yo'naltirilgan tahlil va loyihalash dasturiy ta'minotni ishlab chiqish va boshqarish guruhlarini umumiy vositalar bilan ta'minlash va dasturiy ta'minotni ishlab chiqishda hamkorlik qilish uchun birgalikda jarayon.[2][7]

Garchi BDD asosan dasturiy ta'minotni ishlab chiqishni biznes manfaatlari va texnik tushunchalar bilan boshqarish kerakligi haqidagi g'oya bo'lsa-da, BDD amaliyoti ishlab chiqish jarayonini qo'llab-quvvatlash uchun maxsus dasturiy vositalardan foydalanishni nazarda tutadi.[5] Ushbu vositalar ko'pincha BDD loyihalarida foydalanish uchun maxsus ishlab chiqilgan bo'lishiga qaramay, ularni sinov vositasida ishlab chiqishni qo'llab-quvvatlovchi asbobning ixtisoslashtirilgan shakllari sifatida ko'rish mumkin. Ushbu vositalar avtomatizatsiyani qo'shishga xizmat qiladi hamma joyda til bu BDD ning asosiy mavzusi.

BDD asosan soddadan foydalanish orqali osonlashadi domenga xos til (DSL) xulq-atvorni va kutilgan natijalarni ifoda eta oladigan tabiiy tildagi konstruktsiyalardan (masalan, ingliz tiliga o'xshash jumlalardan) foydalanish. Sinov stsenariylari uzoq vaqtdan beri turli darajadagi nafosatga ega bo'lgan DSL-larning ommabop dasturidir. BDD samarali texnik amaliyot deb hisoblanadi, ayniqsa, biznes muammosining "muammoli maydoni" murakkab bo'lgan taqdirda.[8]

Tarix

Xulq-atvorga asoslangan rivojlanish bu kengaytma sinovga asoslangan rivojlanish:[9] oddiy, domenga xos skript tilidan (DSL) foydalanadigan rivojlanish. Ushbu DSLlar tabiiy tilda tuzilgan bayonotlarni bajariladigan testlarga aylantiradi. Natijada, berilgan funktsiyani qabul qilish mezonlari va ushbu funktsiyani tasdiqlash uchun ishlatiladigan testlar bilan yaqinroq aloqalar mavjud. Shunday qilib, bu umuman TDD testining tabiiy kengayishi.

BDD quyidagilarga e'tibor beradi:

  • Jarayonni qaerdan boshlash kerak
  • Nimani sinab ko'rish kerak va nimani sinovdan o'tkazmaslik kerak
  • Bir martada qancha sinov qilish kerak
  • Sinovlarni qanday chaqirish kerak
  • Sinov nima uchun muvaffaqiyatsiz tugaganini qanday tushunish mumkin

Yuragida BDD yondashuvni qayta ko'rib chiqishdan iborat birlik sinovi va qabul testi tabiiy ravishda yuzaga keladigan muammolardan qochish uchun. Masalan, BDD birlik sinov nomlari shartli fe'ldan boshlangan butun jumlalar (masalan, ingliz tilida "should") va biznes qiymati bo'yicha yozilishi kerakligini taklif qiladi. Qabul qilish testlari a ning tezkor ramkalari yordamida yozilishi kerak foydalanuvchi hikoyasi: "Men [rol / aktyor / manfaatdor tomon] bo'lishim [foyda / imkoniyat [xususiyati / qobiliyati] bo'lishini xohlayman". Qabul qilish mezonlari senariylar bo'yicha yozilishi va sinflarda bajarilishi kerak: [Voqea sodir bo'lganda] [dastlabki kontekst] berilgan bo'lsa, unda [ba'zi natijalarni ta'minlash] .

Shu paytdan boshlab, ko'p odamlar bir necha yillar davomida BDD ramkalarini ishlab chiqdilar va nihoyat uni ishlab chiquvchilar uchun aloqa va hamkorlik doirasi asosida tuzdilar, QA dasturiy ta'minot loyihasining texnik bo'lmagan yoki biznes ishtirokchilari.[10] 2009 yil noyabr oyida Londonda, Dan Nortda "Agile spetsifikatsiyalari, BDD va Testing eXchange" davomida[11] BDD ning quyidagi tavsifini berdi:

BDD - bu ikkinchi avlod, tashqarida, tortishish asosida, ko'p manfaatli, ko'p miqyosli, yuqori avtomatizatsiya, tezkor metodologiya. Bu aniq belgilangan natijalar bilan o'zaro ta'sirlar tsiklini tavsiflaydi, natijada ishlaydigan, sinovdan o'tgan dasturiy ta'minot muhim ahamiyatga ega.

Dan Shim bilan 2013 yilda GOTO konferentsiyasida Liz Keog bilan intervyu paytida[12] BDD ni quyidagicha belgilaydi:

Ilova o'zini qanday tutishi haqida suhbatlashish uchun misollardan foydalanmoqda ... Va bu misollar haqida suhbatlashish.[13]

Dan Shimoliy BDD tizimini yaratdi, JBehave, undan keyin RBehave deb nomlangan Ruby uchun hikoya darajasidagi BDD ramkasi[14] keyinchalik ichiga qo'shilgan RSpec loyiha.[15] Shuningdek, u Devid Chelimskiy, Aslak Hellesoy va boshqalar bilan birgalikda RSpec-ni ishlab chiqish va "RSpec kitobi: RSpec, bodring va do'stlar bilan xulq-atvorni rivojlantirish" ni yozishda ishlagan. RSpec-da birinchi hikoyaga asoslangan ramka keyinchalik almashtirildi Bodring asosan tomonidan ishlab chiqilgan Aslak Hellesoy. Kapibara, bodringni sinovdan o'tkazish tizimining bir qismi bo'lgan ushbu veb-testlarni avtomatlashtirish dasturidir.

BDD tamoyillari

Sinovga asoslangan ishlab chiqish - bu dasturiy ta'minotni ishlab chiqish metodologiyasi bo'lib, unda asosan dasturiy ta'minotning har bir bo'lagi uchun dasturiy ta'minot ishlab chiqaruvchisi:

  • birlik uchun sinov to'plamini aniqlang birinchi;
  • testlarni muvaffaqiyatsiz tugatish;
  • keyin birlikni amalga oshiring;
  • nihoyat, blokni amalga oshirish sinovlarni muvaffaqiyatli o'tkazishini tekshiring.

Ushbu ta'rif juda o'ziga xos emas, chunki u yuqori darajadagi dasturiy ta'minot talablari, past darajadagi texnik tafsilotlar yoki boshqa narsalar bo'yicha sinovlarni o'tkazishga imkon beradi. Shuning uchun BDDga qarashning bir usuli shundaki, bu BDDga qaraganda aniqroq tanlovlarni amalga oshiradigan TDD ning doimiy rivojlanishi.

Xulq-atvorga asoslangan rivojlanish shuni ko'rsatadiki, dasturiy ta'minotning har qanday bo'linmasining sinovlari blokning kerakli harakati nuqtai nazaridan belgilanishi kerak.[5][7][1] Qarz olish tezkor dasturiy ta'minotni ishlab chiqish "istalgan xatti-harakatlar" bu holda korxona tomonidan qo'yiladigan talablardan, ya'ni ega bo'lgan kerakli xatti-harakatlardan iborat biznes qiymati barpo etilayotgan dasturiy ta'minotni qaysi buyurtmaga topshirgan bo'lsa,[5][1] BDD amaliyotida bu BDD "tashqarida" faoliyat deb ataladi.[16]

Xulq-atvor xususiyatlari

Ushbu asosiy tanlovdan so'ng, BDD tomonidan qilingan ikkinchi tanlov bog'liqdir Qanaqasiga kerakli xatti-harakatlar ko'rsatilishi kerak. Ushbu sohada BDD foydalanuvchi hikoyalari spetsifikatsiyalaridan ushbu sohadan olingan xulq-atvor spetsifikatsiyasi uchun yarim rasmiy formatdan foydalanishni tanlaydi. ob'ektga yo'naltirilgan tahlil va loyihalash. The stsenariy Ushbu formatning jihati dastur sifatida qaralishi mumkin Mantiqiylik dan foydalangan holda dasturiy ta'minot birliklarining xulq-atvor spetsifikatsiyasiga Domen tili vaziyat.

BDD, biznes-tahlilchilar va ishlab chiquvchilar ushbu sohada hamkorlik qilishlari va xatti-harakatlarni ushbu jihatlarda belgilashlari kerakligini belgilaydi foydalanuvchi haqidagi hikoyalar, ularning har biri maxsus hujjatda aniq yozilgan.[1][16] Har biri Foydalanuvchi haqida hikoya qandaydir tarzda quyidagi tuzilishga amal qilishi kerak:[5][16]

Sarlavha
Aniq nom.
Hikoya
Quyidagi tuzilishga ega bo'lgan qisqa kirish qismi:
  • Kabi: xususiyatdan foydalanadigan shaxs yoki rol;
  • Men xohlardimki: xususiyati;
  • Shuning uchun; ... uchun; ... natijasida: xususiyatning foydasi yoki qiymati.
Qabul qilish mezonlari
Har bir o'ziga xos xususiyatning tavsifi stsenariy quyidagi tuzilishga ega bo'lgan rivoyat:
  • Berilgan: stsenariyning boshidagi dastlabki kontekst, bir yoki bir nechta bandlarda;
  • Qachon: senariyni qo'zg'atadigan voqea;
  • Keyin: bir yoki bir nechta bandlarda kutilgan natija.

BDD uchun aniq talablar mavjud emas Qanaqasiga bular foydalanuvchi haqidagi hikoyalar yozilishi kerak, ammo BDD-ni ishlatadigan har bir jamoa yozishni oddiy, standartlashtirilgan formatini ishlab chiqishini talab qiladi. foydalanuvchi haqidagi hikoyalar bu yuqorida sanab o'tilgan elementlarni o'z ichiga oladi.[5][16] Biroq, 2007 yilda Dan Nort matnli format uchun shablonni taklif qildi, u turli xil BDD dasturiy vositalarida izdoshlarni topdi.[16] Ushbu formatning juda qisqa namunasi quyidagicha ko'rinishi mumkin:

Sarlavha: Qaytish va almashinuv inventarizatsiyaga o'tadi.Kabi do'kon egasi,Men xohlardimki buyumlarni qaytarib berish yoki almashtirish paytida ularni zaxiraga qaytarish;Shuning uchun; ... uchun; ... natijasida Men inventarizatsiyani kuzata olaman.Stsenariy 1: Qaytarish uchun qaytarilgan narsalar zaxiraga qo'shilishi kerak.Berilgan xaridor ilgari mendan qora sviter sotib olganiva Menda uchta qora sviter bor,qachon ular qora kozokni qaytarib berish uchun qaytarishadi,keyin Menda to'rtta qora kozok bo'lishi kerak.Stsenariy 2: Almashtirilgan buyumlar zaxiraga qaytarilishi kerak.Berilgan xaridor ilgari mendan ko'k kiyim sotib olganiva Menda ikkita ko'k kiyim borva inventarizatsiyadagi uchta qora kiyim,qachon ular ko'k kiyimni qora kiyimga almashtiradilar,keyin Menda uchta ko'k kiyim bo'lishi kerakva inventarizatsiyadagi ikkita qora kiyim.

The stsenariylar o'zaro ta'sirlar sodir bo'ladigan interfeys elementlariga ishora qilmasdan, ishbilarmonlik tilida ideal emas, balki imperativ emas, balki deklarativ tarzda ifodalangan.[17]

Ushbu format yuqoridagi misolga o'xshash sintaksisga ega bo'lgan Gherkin tili deb nomlanadi. Atama Gherkinammo, uchun xosdir Bodring, JBehave, salat,[18] o'zini tutish va Behat dasturiy vositalar.[19][20][21][22]

Hamma joyda mavjud bo'lgan til sifatida spetsifikatsiya

Xulq-atvorga asoslangan rivojlanish kontseptsiyasini qarzga oladi hamma joyda til dan domenga asoslangan dizayn.[5][7] Hamma joyda mavjud bo'lgan til - bu dasturiy ta'minotni ishlab chiquvchi jamoaning barcha a'zolari - dasturiy ta'minot ishlab chiqaruvchilari va texnik bo'lmagan xodimlar tomonidan ishlatiladigan (yarim) rasmiy til.[23] Ko'rib chiqilayotgan til, barcha guruh a'zolari tomonidan ko'rib chiqilayotgan dasturiy ta'minot sohasini muhokama qilishning umumiy vositasi sifatida ishlatiladi va rivojlanadi.[23] Shu tarzda BDD dasturiy ta'minot loyihasidagi barcha turli rollar o'rtasidagi aloqa vositasiga aylanadi.[5][24]

Dasturiy ta'minotni ishlab chiqish bilan bog'liq umumiy xavf ishlab chiquvchilar va biznes manfaatdor tomonlari o'rtasidagi aloqa buzilishini o'z ichiga oladi.[25] BDD loyiha jamoasi a'zolari uchun hamma joyda til sifatida kerakli xatti-harakatlarning xususiyatlaridan foydalanadi. Shuning uchun BDD o'zini tutish xususiyatlarini aniqlash uchun yarim rasmiy tilni talab qiladi: ba'zi rasmiyatchilik hamma joyda mavjud bo'lgan til bo'lish talabidir.[5] Bunga qo'shimcha ravishda, bunday hamma joyda mavjud bo'lgan tilga ega bo'lish spetsifikatsiyalarning domen modelini yaratadi, shuning uchun spetsifikatsiyalar rasmiy ravishda asoslanishi mumkin.[26] Ushbu model mavjud bo'lgan BDD-ni qo'llab-quvvatlovchi turli xil dasturiy vositalar uchun ham asosdir.

Yuqorida keltirilgan misol ishlab chiqilayotgan dasturiy ta'minot tizimi uchun foydalanuvchi hikoyasini belgilaydi. Ushbu foydalanuvchi hikoyasi manfaatdor tomonni, biznes effekti va biznes qiymatini aniqlaydi. Bundan tashqari, har birida dastlabki shart, tetik va kutilgan natijalar bo'lgan bir nechta stsenariylar tasvirlangan. Ushbu qismlarning har biri tilning rasmiy qismi (atama) tomonidan aniq belgilanadi Berilgan ko'rib chiqilishi mumkin a kalit so'z, masalan) va shuning uchun hamma joyda mavjud bo'lgan tilning rasmiy qismlarini tushunadigan vosita yordamida biron bir tarzda qayta ishlanishi mumkin.

Ko'pgina BDD dasturlari matnga asoslangan DSL va spetsifikatsiya yondashuvlaridan foydalanadi. Shu bilan birga, integratsiya stsenariylarini grafik modellashtirish amalda ham muvaffaqiyatli qo'llanildi, masalan, sinov maqsadida. [27]

Ixtisoslashtirilgan asbob-uskunalarni qo'llab-quvvatlash

Sinovga asoslangan dizayn amaliyoti singari, xulq-atvorga asoslangan rivojlanish loyihada ixtisoslashtirilgan qo'llab-quvvatlash vositalaridan foydalanishni o'z ichiga oladi. BDD-ni TDD-ning o'ziga xos versiyasi sifatida ko'rish mumkin, chunki u nafaqat test kodini, balki xatti-harakatlarni odamlarga tushunarli tilda tavsiflash uchun alohida hujjatni taqdim etishni talab qiladi. Bu testlarni bajarish, tavsiflarni o'qish va tahlil qilish, test kodini o'qish va bajarish uchun tegishli test dasturini topish uchun ikki bosqichli jarayonni talab qiladi. Ushbu jarayon BDD-ni ishlab chiquvchi sifatida ishlashni biroz ko'proq mashaqqatli qiladi, ammo inson tomonidan tushunarli bo'lganligi sababli ushbu hujjatlarning qiymati undan ham kamroq texnik auditoriyaga to'g'ri keladi va shuning uchun talablarni tavsiflash uchun aloqa vositasi bo'lib xizmat qilishi mumkin ("xususiyatlar") ).

Uslubiy tamoyillar

Aslida BDD-ni qo'llab-quvvatlash vositasi, TDD-ni qo'llab-quvvatlaydigan vositalar singari, dasturiy ta'minot uchun sinov tizimidir. Ammo, agar TDD vositalari testlarni belgilash uchun ruxsat berilgan darajada erkin shaklga ega bo'lsa, BDD vositalari avval muhokama qilingan hamma joyda mavjud bo'lgan tilning ta'rifi bilan bog'liq.

Muhokama qilinganidek, hamma joyda tarqalgan til biznes-tahlilchilarga xulq-atvor talablarini yozuvchilar tomonidan tushunilishi mumkin bo'lgan tarzda yozib olishlariga imkon beradi. BDD-ni qo'llab-quvvatlash vositasining printsipi shu talablarni hujjatlarni testlar to'plami kabi to'g'ridan-to'g'ri bajarilishini ta'minlashdir. Agar spetsifikatsiyalarni bajarilishini ta'minlaydigan texnik vosita bilan bog'liq sabablarga ko'ra bunga erisha olmasangiz, u holda xulq-atvor talablarini yozish uslubini o'zgartirish yoki vositani o'zgartirish kerak.[28] Xulq-atvor talablarining aniq bajarilishi har bir vositada turlicha bo'ladi, ammo tezkor amaliyot quyidagi umumiy jarayonni taklif qildi:

  • Asbob spetsifikatsiya hujjatini o'qiydi.
  • Asbob to'g'ridan-to'g'ri hamma joyda mavjud bo'lgan tilning to'liq rasmiy qismlarini tushunadi (masalan Berilgan yuqoridagi misolda kalit so'z). Shunga asoslanib, vosita har bir stsenariyni mazmunli bandlarga ajratadi.
  • Stsenariyning har bir alohida bandi foydalanuvchi hikoyasi uchun test uchun qandaydir parametrga aylantiriladi. Ushbu qism dasturiy ta'minot ishlab chiqaruvchilarining loyihaga oid ishlarini talab qiladi.
  • Keyin ramka ushbu stsenariy parametrlari bilan har bir stsenariy uchun testni amalga oshiradi.

Dan Nord BDD-ni qo'llab-quvvatlaydigan bir qator ramkalarni ishlab chiqdi (JBehave va RBehave ), uning ishlashi u foydalanuvchi hikoyalarini yozish uchun taklif qilgan shablonga asoslangan.[5] Ushbu vositalar foydalanish uchun matn tavsifidan foydalanadi va shunga o'xshash boshqa vositalar (masalan, CBehave). Biroq, bu format talab qilinmaydi va shuning uchun boshqa formatlarni ishlatadigan boshqa vositalar mavjud. Masalan, Fitnesse (atrofida qurilgan qarorlar jadvallari ), BDD-ni tarqatish uchun ham ishlatilgan.[29]

Misollar

Bugungi kunda loyihalarda BDD dasturiy vositalarining turli xil platformalari va dasturlash tillari uchun bir nechta turli xil misollari mavjud.

Ehtimol, eng taniqli JBehave, uni Dan Nort, Elizabeth Keog va boshqalar ishlab chiqqan.[30] Quyida ushbu loyihadan olingan misol keltirilgan:[20]

Ning amalga oshirilishini ko'rib chiqing Hayot o'yini. Domen mutaxassisi (yoki biznes-tahlilchi) kimdir o'yin tarmog'ining boshlang'ich konfiguratsiyasini o'rnatayotganda nima bo'lishi kerakligini ko'rsatishni xohlashi mumkin. Buning uchun u hujayralarni almashtirayotgan odam tomonidan qilingan bir qator qadamlarga misol keltirishi mumkin. Hikoya qismidan o'tib, u buni quyidagi stsenariyni oddiy matnli hujjatga yozish orqali amalga oshirishi mumkin (bu JBehave o'qigan kirish hujjati turi):

Berilgan 5 dan 5 gacha o'yinQachon Men katakchani (3, 2) o'zgartiramanKeyin panjara ................. X ....... ga o'xshash bo'lishi kerak.Qachon Men katakchani (3, 1) o'zgartiramanKeyin panjara ................. X .... X .. ga o'xshash bo'lishi kerak.Qachon Men katakchani (3, 2) o'zgartiramanKeyin panjara ...................... X ga o'xshash bo'lishi kerak.

Qalin bosma yozuvning bir qismi emas; bu erda qaysi so'zlar rasmiy til sifatida tan olinganligini ko'rsatish uchun kiritilgan. JBehave shartlarni tan oladi Berilgan (senariyning boshlanishini belgilaydigan old shart sifatida), Qachon (voqea tetikleyicisi sifatida) va Keyin (qo'zg'atuvchini kuzatib boruvchi harakatning natijasi sifatida tasdiqlanishi kerak bo'lgan keyingi shart sifatida). Shunga asoslanib, JBehave ssenariyni o'z ichiga olgan matnli faylni o'qiy oladi tahlil qilish uni bandlarga (o'rnatish bandi va keyin tekshirilishi mumkin bo'lgan shartlar bilan uchta voqea tetikleyici). Keyin JBehave ushbu bandlarni qabul qiladi va ularni sinovni o'tkazadigan, voqea tetikleyicilerine javob beradigan va natijani tasdiqlaydigan kodga uzatadi. Ushbu kodni loyiha guruhidagi ishlab chiquvchilar yozishi kerak ( Java, chunki bu JBehave platformasi). Bunday holda, kod quyidagicha ko'rinishi mumkin:

xususiy O'yin o'yin;xususiy StringRenderer ko'rsatuvchi;@ Berilgan("a $ width by $ height o'yin")jamoat bekor theGameIsRunning(int kengligi, int balandlik) {    o'yin = yangi O'yin(kengligi, balandlik);    ko'rsatuvchi = yangi StringRenderer();    o'yin.setObserver(ko'rsatuvchi);}    @Qachon("Men katakchani ($ ustun, $ qator) o'zgartiraman")jamoat bekor iToggleTheCellAt(int ustun, int qator) {    o'yin.toggleCellAt(ustun, qator);}@Shunda("panjara $ gridga o'xshash bo'lishi kerak")jamoat bekor theGridShouldLookLike(Ip panjara) {    tasdiqlang(ko'rsatuvchi.asString(), teng(panjara));}

Kodda senariyning har bir turi uchun usul mavjud. JBehave qaysi usul yordamida qaysi band bilan ketishini aniqlaydi izohlar va har bir usulni stsenariy orqali ishlayotganda tartibda chaqiradi. Ssenariyning har bir bandidagi matn ushbu band uchun kodda berilgan shablon matniga mos kelishi kutilmoqda (masalan, a Berilgan stsenariyda "a X by Y o'yini" shaklidagi bandi davom etishi kutilmoqda). JBehave, shablonlarning shablonlarga mos kelishini qo'llab-quvvatlaydi va shablondan atamalarni tanlash va ularni test kodidagi usullarga parametr sifatida o'tkazish uchun ichki yordamga ega. Sinov kodi tekshirilayotgan kod bilan o'zaro aloqada bo'lgan stsenariyning har bir band turi uchun dasturni taqdim etadi va stsenariy asosida test o'tkazadi. Ushbu holatda:

  • The theGameIsRunning usuli a ga ta'sir qiladi Berilgan boshlang'ich o'yin tarmog'ini o'rnatish orqali band.
  • The iToggleTheCellAt usuli a ga ta'sir qiladi Qachon bandda tasvirlangan o'tish / o'chirish hodisasini o'chirish orqali.
  • The theGridShouldLookLike usuli a ga ta'sir qiladi Keyin ssenariydan kutilgan holat bilan o'yin tarmog'ining holatini taqqoslash orqali band.

Ushbu kodning asosiy vazifasi - bu hikoya va tekshirilayotgan kod bilan matnli fayl o'rtasida ko'prik. Sinov kodi tekshirilayotgan kodga kirish huquqiga ega ekanligini unutmang (bu holda misol O'yin) va tabiatan juda oddiy. Sinov kodi oddiy bo'lishi kerak, aks holda ishlab chiquvchi testlari uchun testlarni yozishi kerak.

Va nihoyat, testlarni o'tkazish uchun JBehave senariylarni o'z ichiga olgan va bog'liqliklarni kiritadigan matnli fayllarni aniqlaydigan ba'zi sanitariya-tesisat kodlarini talab qiladi (masalan O'yin) sinov kodiga. Ushbu sanitariya-tesisat kodi bu erda tasvirlanmagan, chunki bu JBehavening texnik talabidir va to'g'ridan-to'g'ri BDD uslubidagi sinov printsipiga bog'liq emas.

Hikoya va spetsifikatsiyaga qarshi

Xulq-atvorga asoslangan rivojlanishning alohida kichik toifasi spetsifikatsiyalarni kirish tili sifatida ishlatadigan vositalar tomonidan shakllantiriladi foydalanuvchi haqidagi hikoyalar. Ushbu uslubning misoli RSpec dastlab Dan Shimoliy tomonidan ishlab chiqilgan vosita. Spetsifikatsiya vositalari ishlatilmaydi foydalanuvchi haqidagi hikoyalar uchun kirish formati sifatida sinov stsenariylari aksincha sinovdan o'tkaziladigan birliklar uchun funktsional xususiyatlardan foydalaning. Ushbu texnik xususiyatlar ko'pincha foydalanuvchilarning hikoyalariga qaraganda ko'proq texnik xususiyatga ega va odatda foydalanuvchi hikoyalariga qaraganda biznes xodimlari bilan aloqa qilish uchun unchalik qulay emas.[5][31] A uchun spetsifikatsiyaga misol suyakka quyidagicha ko'rinishi mumkin:

Texnik xususiyatlari: Yig'maQachon yangi stek yaratildiKeyin u bo'shQachon stekka element qo'shiladiKeyin bu element stackning yuqori qismida joylashganQachon stekda N element mavjud Va element E to'plamning tepasida joylashganKeyin pop operatsiyasi E ni qaytaradiVa to'plamning yangi hajmi N-1

Bunday spetsifikatsiya sinovdan o'tgan komponentning xatti-harakatlarini aniq ko'rsatishi mumkin, ammo biznes foydalanuvchisi uchun unchalik ahamiyatga ega emas. Natijada, spetsifikatsiyaga asoslangan testlar BDD amaliyotida hikoyalarga asoslangan testlarni to'ldiruvchi sifatida qaraladi va undan past darajada ishlaydi. Spetsifikatsiyani sinab ko'rish ko'pincha erkin formatning o'rnini bosuvchi sifatida ko'riladi birlik sinovi.[31]

RSpec va JDave kabi spetsifikatsiyalarni sinash vositalari tabiatan JBehave kabi vositalardan bir oz farq qiladi. Ular kabi asosiy birlik sinov vositalariga alternativa sifatida qaraladi JUnit, ushbu vositalar hikoyani va sinov kodini ajratishdan voz kechishni ma'qul ko'radi va uning o'rniga spetsifikatsiyani to'g'ridan-to'g'ri sinov kodiga kiritishni afzal ko'radi. Masalan, a uchun RSpec testi hashtable quyidagicha ko'rinishi mumkin:[32]

tasvirlab bering Xash qil  ruxsat bering(: hash) { Xash[:Salom, "dunyo"] }  u { kutmoq(Xash.yangi).ga tenglama({}) }  u "kalitda to'g'ri ma'lumotlarni yig'ish" qil    kutmoq(xash[:Salom]).ga tenglama("dunyo")  oxiri  u "kalitni o'z ichiga oladi" qil    xash.kalitlar.o'z ichiga oladi?(:Salom).kerak bo'lishi to'g'ri  oxirioxiri

Ushbu misol bajariladigan kodga kiritilgan o'qish tilidagi spetsifikatsiyani ko'rsatadi. Bunday holda, vositani tanlash - nomlangan usullarni qo'shish orqali spetsifikatsiya tilini test kodining tiliga rasmiylashtirishdir u va kerak. Shuningdek, spetsifikatsiya old sharti tushunchasi mavjud oldin bo'lim spetsifikatsiyaga asoslangan dastlabki shartlarni belgilaydi.

Sinov natijasi:

 Hash should eq {} klavishada to'g'ri ma'lumotlarni o'z ichiga oladi

Uchta Amigo

Uchta Amigos, shuningdek, "Texnik shartlar bo'yicha seminar" deb nomlanadi, bu mahsulot egasi QA va rivojlanish guruhi kabi turli xil manfaatdor tomonlar bilan Namuna bo'yicha talablarni muhokama qiladigan yig'ilishdir. Ushbu munozaraning asosiy maqsadi suhbatni boshlash va etishmayotgan xususiyatlarni aniqlashdir. Muhokama shuningdek QA, ishlab chiquvchilar guruhi va mahsulot egasi uchun talabni boyitish uchun birlashish va bir-birining nuqtai nazarini eshitish va shuningdek, ular to'g'ri mahsulotni ishlab chiqarayotganligiga ishonch hosil qilish uchun platforma yaratadi.[33]

Uchta Amigo

  • Biznes - biznes foydalanuvchisining roli faqatgina muammoni aniqlashdan iborat (va har qanday echimni taklif qilishga urinmaslik)
  • Rivojlanish - Ishlab chiquvchilarning roli muammoni hal qilish yo'llarini taklif qilishni o'z ichiga oladi
  • Sinov - sinovchilarning roli - bu echimni shubha ostiga qo'yish, "What-If" stsenariylari orqali miya hujumi uchun turli xil imkoniyatlarni yaratish va muammoni hal qilish uchun echimni yanada aniqroq qilishda yordam berish.

Shuningdek qarang

Adabiyotlar

  1. ^ a b v d e Shimoliy, Dan (2006 yil mart). "BDD bilan tanishish". Dan Shimoliy. Olingan 25 aprel 2019.
  2. ^ a b v "Xulq-atvorga asoslangan rivojlanish". Arxivlandi asl nusxasi 2015 yil 1 sentyabrda. Olingan 12 avgust 2012.
  3. ^ Keog, Liz (2009-09-07). "Xulq-atvorga asoslangan rivojlanish bilan tanishish". SkillsMatter. Olingan 1 may 2019.
  4. ^ John Ferguson Smart (2014). Amaldagi BDD: butun dasturiy ta'minotni butun umri davomida o'zini tutishga asoslangan holda rivojlantirish. Manning nashrlari. ISBN  9781617291654.
  5. ^ a b v d e f g h men j k Xaring, Ronald (2011 yil fevral). de Ruiter, Robert (tahrir). "Behavior Driven Development: Beter dan Test Driven Development". Java jurnali (golland tilida). Veen jurnallari (1): 14-17. ISSN  1571-6236.
  6. ^ Solis, Karlos; Vang, Xiaofeng (2011). "Xulq-atvorni rivojlantirish xususiyatlarini o'rganish". Dasturiy ta'minot muhandisligi va ilg'or dasturlar (SEAA), 2011 yil 37-EUROMICRO konferentsiyasi: 383–387. doi:10.1109 / SEAA.2011.76. hdl:10344/1256. ISBN  978-1-4577-1027-8.
  7. ^ a b v d Bellware, Scott (iyun 2008). "Xulq-atvorga asoslangan rivojlanish". Kod jurnali. Arxivlandi asl nusxasi 2012 yil 12 iyulda. Olingan 1 may 2019.
  8. ^ Tharayil, Ranjith (2016 yil 15-fevral). "Xulq-atvorga asoslangan rivojlanish: murakkab muammo maydonini soddalashtirish". Qarorlar. Olingan 15 fevral 2018.
  9. ^ Liz Keog (2011 yil 27 iyun). "ATDD va BDD va shunga o'xshash ba'zi narsalarning tarixi". Olingan 6 may 2019.
  10. ^ "RSpec kitobi - 11-bob haqida savol: muhim dasturiy ta'minotni yozish". Arxivlandi asl nusxasi 2009-11-07. Olingan 2009-08-09.
  11. ^ Dan Shimoliy: BDD-ni biznesga qanday sotish kerak Arxivlandi 2010-11-25 da Orqaga qaytish mashinasi
  12. ^ "Liz Keog".
  13. ^ GOTO 2013 • Liz Keog va Dan Nort bilan intervyu https://www.youtube.com/watch?v=g5WpUJk8He4
  14. ^ D.Nort, RBehave bilan tanishtirish
  15. ^ S.Miller, InfoQ: RSpec RBehave-ni o'z ichiga oladi
  16. ^ a b v d e Shimoliy, Dan (2007 yil 11 fevral). "Hikoyada nima bor?". Dan Shimoliy. Olingan 12 avgust 2012.
  17. ^ Mabey, Ben. "Foydalanuvchi haqidagi hikoyalardagi imperativ va deklaratsion ssenariylar". Arxivlandi asl nusxasi 2010 yil 3 iyunda. Olingan 19 may 2008.
  18. ^ "qisqacha so'zlar - salat 0.2.23 (kriptonit chiqarilishi) hujjatlari". salat.it. Olingan 2020-02-06.
  19. ^ "Gherkin". Olingan 7 iyun 2020.
  20. ^ a b "JBehave nima?". JBehave.org. Olingan 20 oktyabr 2015.
  21. ^ "o'zini tutish - bu xatti-harakatga asoslangan rivojlanish, Python uslubi". Arxivlandi asl nusxasi 2018 yil 22-yanvar kuni. Olingan 30 yanvar 2018.
  22. ^ "Yozish xususiyatlari - Behat 3.0.12 hujjatlari". behat hujjatlari. Arxivlandi asl nusxasi 2015 yil 19 sentyabrda. Olingan 20 oktyabr 2015.
  23. ^ a b Evans, Erik (2003). Domenga asoslangan dizayn: dasturiy ta'minot qalbidagi murakkablik bilan kurashish. Addison-Uesli. ISBN  978-0-321-12521-7. Olingan 12 avgust, 2012.
  24. ^ Shimoliy, Dan (31 may 2012). "BDD TDDga o'xshaydi, agar ...". tezroq tashkilotlar, tezroq dasturiy ta'minot. Dan North & Associates. Olingan 12 avgust 2012.
  25. ^ Geneca (2011 yil 16-mart). "Nima uchun dasturiy ta'minot loyihalari ishlamayapti". Olingan 16 mart 2011.
  26. ^ Mahmudul Haque Azad (2011 yil 6-fevral). "Xulq-atvorni rivojlantirishga salom ayting". Olingan 12 avgust 2012.
  27. ^ Lyubke, Doniyor; van Lessen, Tammo (2016). "Xulq-atvorga asoslangan rivojlanish uchun BPMN-da sinov holatlarini modellashtirish". IEEE dasturi. 33 (5): 15–21. doi:10.1109 / MS.2016.117.
  28. ^ Adam Kreyven (2015 yil 21 sentyabr). "Korxona miqyosidagi xatti-harakatlarga asoslangan rivojlanish asoslari (BDD)". Olingan 14 yanvar 2016.
  29. ^ Ketil Jensen (2009 yil 13-dekabr). "Fitnesse Slim-da stsenariy jadvallari bilan BDD". Piyoda yurish. Wordpress. Olingan 12 avgust 2012.
  30. ^ "jbehave.org/team-list". JBehave. 2017-05-28. Olingan 1 may 2019.
  31. ^ a b Roy Osherove (2008 yil 4 oktyabr). "BDD: o'zini tutish va o'ziga xos xususiyatlar doirasi". Olingan 12 avgust 2012.
  32. ^ Jeyson Seifer (2011 yil 7-dekabr). "RSpec-ga kirish". Olingan 27 oktyabr 2012.
  33. ^ "Agilda uchta amigo nima?". Agile Alliance. 2016-06-16. Olingan 2019-06-10.