Vă mulțumim pentru susținere

Care sunt principalele diferențe dintre TDD și BDD?

Test Drive Development a fost furia în comunitatea .NET în ultimii ani. Recent, am auzit nemulțumiri în comunitatea ALT.NET despre BDD. Ce este? Ce o face diferit de TDD?

0
adăugat editat
Consultați, de asemenea, programmers.stackexchange.com/q/135218/76176 . Această întrebare este mai mult pe subiect acolo.
adăugat autor Evan Carroll

13 răspunsuri

Dezvoltarea orientată spre comportament pare să se concentreze mai mult pe interacțiunea și comunicarea dintre dezvoltatori și, de asemenea, între dezvoltatori și testere.

Articolul Wikipedia are o explicație:

Dezvoltare bazată pe comportament

Însă nu mă practicam BDD.

0
adăugat

Mi se pare că BDD este un domeniu de aplicare mai larg. Aproape presupune folosirea TDD, că BDD este metoda care cuprinde informațiile și cerințele pentru utilizarea, printre altele, a practicilor TDD pentru a asigura feedback rapid.

0
adăugat

Am experimentat puțin cu abordarea BDD și concluzia mea prematură este că BDD este foarte potrivit pentru a utiliza implementarea cazului, dar nu și pentru detaliile care stau la baza acestuia. TDD încă mai stă la acest nivel.

BDD este folosit și ca instrument de comunicare. Scopul este de a scrie specificații executabile care pot fi înțelese de experții domeniului.

0
adăugat

Înțeleg BDD să fie mai multe despre specificații decât de testare . Este legat de designul de domeniu (nu vă place aceste acronime * DD?).

Este legat de un anumit mod de a scrie povestiri despre utilizatori, inclusiv teste la nivel înalt. Un exemplu de Tom ten Thij :

Story: User logging in
  As a user
  I want to login with my details
  So that I can get access to the site

Scenario: User uses wrong password

  Given a username 'jdoe'
  And a password 'letmein'

  When the user logs in with username and password

  Then the login form should be shown again

(În articolul său, Tom continuă să execute direct această specificație de testare în Ruby.)

Papa BDD este Dan Nord . Veți găsi o introducere minunată în articolul Prezentarea BDD .

You will find a comparison of BDD and TDD in this video. Also an opinion about BDD as "TDD done right" by Jeremy D. Miller

actualizarea din 25 martie 2013

Videoclipul de mai sus lipsește pentru o vreme. Aici este unul recent de Llewellyn Falco, BDD vs TDD (explicat) . Mi se pare clar și explicabil explicația.

0
adăugat
Christian, care a fost titlul videoclipului și numele vorbitorului? așa că putem să-l urmărim
adăugat autor smci
Linkul video pare să fi răul
adăugat autor James Nail
Deasupra link-ului "Tom Ten Thij" este mort până acum .. aici live @ - tomtenthij.nl/2008/1/25/…
adăugat autor Kundan Pandit

Difference between test-driven development (TDD) and behavior-driven development (BDD)

  • BDD se concentrează pe aspectul comportamental al sistemului, mai degrabă decât pe
    aspectul implementării sistemului pe care se concentrează TDD.

  • BDD oferă o înțelegere mai clară cu privire la ceea ce ar trebui să facă sistemul din perspectiva dezvoltatorului și a clientului. TDD numai
    oferă dezvoltatorului o înțelegere a ceea ce ar trebui să facă sistemul.

  • BDD permite dezvoltatorului și clientului să lucreze împreună pentru a continua analiza de cerințe care este conținută în codul sursă al sistem.

0
adăugat

Iată instantaneul rapid:

  • TDD is just the process of testing code before writing it!

  • DDD is the process of being informed about the Domain before each cycle of touching code!

  • BDD is an implementation of TDD which brings in some aspects of DDD!

Sper că vă ajută!

0
adăugat

Pentru mine diferența principală dintre BDD și TDD este concentrarea și formularea. Și cuvintele sunt importante pentru comunicarea intenției tale.

TDD direcționează atenția asupra testelor. Și din moment ce în "lumea veche a cascadei" testele vin după implementare, atunci această mentalitate duce la înțelegere și comportament greșit.

BDD direcționează atenția asupra comportamentului și specificațiilor, astfel încât mințile cascadei sunt distrase. Deci, BDD este mai ușor de înțeles ca practică de proiectare și nu ca practică de testare.

0
adăugat
TDD este "primul test" și poate funcționa destul de bine cu Agile. Acest lucru nu este corect.
adăugat autor Terrance
TDD nu are nimic de-a face cu ciclul de viață al proiectării software-ului "cascadă". Dacă nu, TDD este agnostic SDLC. Intenția TDD este de a scrie cantitatea minimă de cod necesară pentru a trece un test. Într-un fel testul devine specificația tehnică a codului care trebuie respectat.
adăugat autor Gavin Baumanis

BDD este în mare măsură TDD făcut bine. Cu toate acestea, există o valoare suplimentară pe care o oferă BDD. Iată un link pe această temă:

BDD este mai mult decât? TDD făcut bine ?

0
adăugat

This blog provides an interesting viewpoint on the differences between TDD, BDD, and ATDD: http://assertselenium.com/2012/11/05/difference-between-tdd-bdd-atdd/

0
adăugat

Nu există nici o diferență între TDD și BDD. cu excepția faptului că puteți citi mai bine testele dvs. și le puteți folosi ca cerințe. Dacă vă scrieți cerințele cu aceleași cuvinte pe care le scrieți testele BDD, atunci puteți să veniți de la clientul dvs. cu câteva dintre testele dvs. definite pentru a scrie cod.

0
adăugat

Considerați că beneficiul principal al TDD este proiectarea. Ar trebui să se numească Design Driven Design. BDD este un subgrup al TDD, numit Design Behaviour Driven.

Acum, ia în considerare o implementare populară a TDD - Unit Testing. Testarea unităților în unitate este de obicei un pic de logică care este cea mai mică unitate de lucru pe care o puteți face.

Când puneți aceste unități împreună într-un mod funcțional pentru a descrie comportamentul dorit la mașini, trebuie să înțelegeți comportamentul pe care îl descrieți mașinii. Comportamentul bazat pe comportament se concentrează pe verificarea înțelegerii implementatorilor în cazurile de utilizare / cerințele / orice și verifică implementarea fiecărei caracteristici. BDD și TDD, în general, servesc scopului important de informare a designului și al doilea scop de verificare a corectitudinii implementării, mai ales atunci când se schimbă. Executarea BDD a dreptului implică biz și dev (și qa), în timp ce Testarea unității (care poate fi văzută incorect ca TDD, mai degrabă decât un tip de TDD) se face de obicei în dev.

Aș adăuga că testele BDD servesc drept cerințe de viață.

0
adăugat

Alegerea dintre TDD și BDD este una complicată. Depinde dacă există un cadru de testare adecvat pentru limba țintă dată, ceea ce colegii dvs. sunt confortabili și, uneori, alți factori.

Unii susțin că BDD este întotdeauna mai bun decât TDD deoarece are posibilitatea de a elimina problemele care ar putea apărea atunci când se utilizează TDD.

Cheia pentru BDD este că ar putea împiedica problemele; nu este garantat. Probleme precum organizarea proastă a codurilor, practicile de proiectare proaste etc. vor persista în continuare. Voi avea doar o capota inferioara probabil de a scrie teste rele si de a avea astfel caracteristici mai robuste.

0
adăugat

Test-Driven Development is a test-first software development methodology, which means that it requires writing test code before writing the actual code that will be tested. In Kent Beck?s words:

Stilul aici este de a scrie câteva linii de cod, apoi un test care   ar trebui să executați, sau chiar mai bine, să scrieți un test care nu va fi rulat, apoi scrieți   codul care o va face să ruleze.

După ce ne-am imaginat cum să scriem o mică bucată de cod, acum, în loc să codificăm doar, vrem să primim feedback imediat și să practicăm "codificați puțin, testați puțin, codificați puțin, testați puțin". Deci, vom scrie imediat un test pentru asta.

Deci, TDD este o metodologie tehnică de nivel scăzut pe care programatorii o folosește pentru a produce un cod curat care funcționează.

Behavior-Driven Development is a methodology that was created based on TDD, but evolved into a process that doesn?t concern only programmers and testers, but instead deals with the entire team and all important stakeholders, technical and non-technical. BDD started out of a few simple questions that TDD doesn?t answer well: how much tests should I write? What should I actually test?and what shouldn?t I? Which of the tests I write will be in fact important to the business or to the overall quality of the product, and which are just my over-engineering?

După cum puteți vedea, astfel de întrebări necesită colaborare între tehnologie și afaceri. Persoanele interesate de afaceri și experții în domenii pot spune adesea inginerilor ce fel de teste sună ca și cum ar fi utile, dar numai dacă testele sunt teste la nivel înalt care abordează aspecte importante ale afacerii. BDD numește astfel de exemple de testare de afaceri? ca în? spune-mi un exemplu de modul în care această caracteristică ar trebui să se comporte corect ,? și rezervă cuvântul? test? pentru verificări tehnice de nivel inferior, cum ar fi validarea datelor sau integrarea API-urilor de testare. Partea importantă este că, în timp ce testele pot fi create numai de către programatori și testeri, exemplele pot fi colectate și analizate de către întreaga echipă de distribuție de către designeri, analiști și așa mai departe .

Într-o propoziție, una dintre cele mai bune definiții ale BDD pe care le-am găsit până acum este că BDD este vorba de a avea conversații cu experți în domeniu și de a folosi exemple pentru a obține o înțelegere comună a comportamentului dorit și pentru a descoperi necunoscuți. Partea descoperire este foarte importantă. Dat fiind faptul că echipa de distribuire colectează mai multe exemple, ei încep să înțeleagă din ce în ce mai mult domeniul de activitate și, prin urmare, își reduc incertitudinea cu privire la anumite aspecte ale produsului pe care trebuie să le trateze. Pe măsură ce gradul de incertitudine scade, creativitatea și autonomia echipei de livrare cresc. De exemplu, acum pot începe să sugereze propriile exemple pe care utilizatorii de afaceri nu le-au considerat posibile din cauza lipsei de expertiză în domeniul tehnologiei.

Acum, discuțiile cu experții în domeniul afacerilor și domeniilor sună minunat, dar știm cu toții cum se termină de multe ori în practică. Am început călătoria cu tehnicianul ca programator. Ca programatori, ne sunt învățați să scriem cod ? Algoritmi, modele de design, abstracții. Sau, dacă sunteți designer, sunteți instruiți să proiectați să organizați informații și să creați interfețe frumoase. Dar când obținem locurile de muncă la nivel de intrare, angajatorii noștri așteaptă ca noi să "oferim clienților noștri valoare". Și printre acești clienți poate fi, de exemplu ... o bancă. Dar aș putea să știu aproape nimic despre bancare, cu excepția modului în care să reduc în mod eficient balanța contului meu. Deci, ar trebui să traduc cumva ceea ce se așteaptă de la mine în cod ... Voi trebui să construiesc o punte între bancare și expertiza mea tehnică dacă vreau să ofer valoare. BDD mă ajută să construiesc o astfel de punte pe o bază stabilă de comunicare fluidă între echipa de livrare și experții domeniului.

Aflați mai multe

Dacă doriți să citiți mai multe despre BDD, am scris o carte pe această temă. ? Scrierea excelente Specificații? explorează arta de a analiza cerințelor și va ajuta să învețe cum să construiască un proces de mare BDD și de a folosi exemple ca o parte esențială a acestui proces. Discuțiile carte despre limbajul omniprezent, colectarea de exemple, și crearea așa-numitele caietul de sarcini executabile (teste automate) din exemple? Tehnici care ajută echipele BDD livra o mare softeware la timp si in buget.

Dacă sunteți interesat să cumpărați? Scrierea Mare Specificații ,? puteți salva 39% cu codul promoțional 39nicieja2 :)

0
adăugat