Ce este Test Driven Development (TDD)? Tutorial cu Exemplu

Test Driven Development

Test Driven Development (TDD) este o abordare de dezvoltare software în care sunt dezvoltate cazuri de testare pentru a specifica și a valida ce va face codul. În termeni simpli, sunt create și testate mai întâi cazuri de testare pentru fiecare funcționalitate și dacă testul eșuează, atunci noul cod este scris pentru a trece testul și pentru a face codul simplu și fără erori.

Dezvoltarea bazată pe test începe cu proiectarea și dezvoltarea testelor pentru fiecare funcționalitate mică a unei aplicații. TDD îi instruiește pe dezvoltatori să scrie un cod nou numai dacă un test automat a eșuat. Acest lucru evită duplicarea codului. Forma completă a TDD este dezvoltarea bazată pe test.

Conceptul simplu de TDD este de a scrie și corecta testele eșuate înainte de a scrie cod nou (înainte de dezvoltare). Acest lucru ajută la evitarea duplicării codului, deoarece scriem o cantitate mică de cod la un moment dat pentru a trece testele. (Testele nu sunt altceva decât condiții de cerință pe care trebuie să le testăm pentru a le îndeplini).

Dezvoltarea testată este un proces de dezvoltare și rulare automată test înainte de dezvoltarea efectivă a aplicației. Prin urmare, TDD numit uneori și Test First Development.

În acest tutorial, veți afla mai multe despre-

  • Cum să efectuați testul TDD
  • TDD vs. Testare tradițională
  • Ce este TDD-ul de acceptare și TDD-ul pentru dezvoltatori
  • Scalarea TDD-ului prin Agile Model Driven Development (AMDD)
  • Test Driven Development (TDD) vs. Dezvoltare bazată pe modelul agil (AMDD)
  • Exemplu de TDD
  • Avantajele TDD

Cum se efectuează testul TDD

Următorii pași definesc modul de efectuare a testului TDD,

  1. Adăugați un test.
  2. Rulați toate testele și vedeți dacă eșuează un test nou.
  3. Scrieți câteva cod.
  4. Rulați testele și codul refactorului.
  5. Repetați.

Ciclul TDD definește

  1. Scrie un test
  2. Fă-l să ruleze.
  3. Schimbă codul pentru a face corect, adică Refactor.
  4. Repetați procesul.

Unele clarificări despre TDD:

  • TDD nu este nici despre „Testare” nici despre „Proiectare”.
  • TDD nu înseamnă „scrieți unele dintre teste, apoi creați un sistem care trece testele.
  • TDD nu înseamnă„ faceți multe teste. „

TDD vs. Testarea tradițională

Abordarea TDD este în primul rând o tehnică de specificare. Acesta asigură că codul sursă este testat temeinic la confirmare nivel.

  • Cu testarea tradițională, un test reușit găsește unul sau mai multe defecte. Este la fel ca TDD. Când un test eșuează, ați făcut progrese, deoarece știți că trebuie să rezolvați problema.
  • TDD se asigură că sistemul dvs. îndeplinește de fapt cerințele definite pentru acesta. Vă ajută să vă construiți încrederea în sistemul dvs.
  • În TDD, accentul este pus mai mult pe codul de producție care verifică dacă testarea va funcționa corect. În testarea tradițională, accentul este pus mai mult pe proiectarea cazurilor de testare. Dacă testul va arăta execuția corectă / necorespunzătoare a aplicației pentru a îndeplini cerințele.
  • În TDD, obțineți un test de acoperire 100%. Fiecare linie de cod este testată, spre deosebire de testarea tradițională.
  • Combinația dintre testarea tradițională și TDD duce la importanța testării sistemului mai degrabă decât a perfecționării sistemului.
  • În Modelare agilă (AM), ar trebui să „testați cu un scop”. Ar trebui să știți de ce testați ceva și ce nivel trebuie testat.

Ce este TDD de acceptare și TDD de dezvoltator

Există două niveluri de TDD

  1. TDD de acceptare (ATDD): Cu ATDD scrieți un singur test de acceptare. Acest test îndeplinește cerința specificației sau satisface comportamentul sistemului. După aceea, scrieți suficient cod de producție / funcționalitate pentru a îndeplini acel test de acceptare. Testul de acceptare se concentrează pe comportamentul general al sistemului. ATDD a fost, de asemenea, cunoscut sub numele de Behavioral Driven Development (BDD).
  2. Developer TDD: cu Developer TDD scrieți un singur test pentru dezvoltatori, adică testul unitar și apoi suficient cod de producție pentru a îndeplini testul respectiv. Testul unitar se concentrează pe fiecare funcționalitate mică a sistemului. Dezvoltatorul TDD este pur și simplu numit TDD.

    Scopul principal al ATDD și TDD este de a specifica cerințe detaliate, executabile pentru soluția dvs. pe o bază just in time (JIT). JIT înseamnă luarea în considerare doar a acelor cerințe care sunt necesare în sistem. Deci creșteți eficiența.

Scalarea TDD prin dezvoltarea modelului Agile Model (AMDD)

TDD este foarte bun la specificații detaliate și validare. Nu reușește să gândească probleme mai mari, cum ar fi proiectarea generală, utilizarea sistemului sau interfața de utilizare.AMDD abordează problemele de scalare Agile pe care TDD nu le face.

Astfel, AMDD a fost utilizat pentru probleme mai mari.

Ciclul de viață al AMDD.

În model-driven Development (MDD), sunt create modele extinse înainte de este scris codul sursă. Care la rândul lor au o abordare agilă?

În figura de mai sus, fiecare casetă reprezintă o activitate de dezvoltare.

Imaginarea este unul dintre procesele TDD de predicție / imaginare a testelor care vor fi efectuate în prima săptămână a proiectului. Scopul principal al imaginării este de a identifica domeniul de aplicare al sistemului și arhitectura sistemului. Cerințele la nivel înalt și modelarea arhitecturii sunt realizate pentru o vizualizare de succes.

Este procesul în care nu se face o specificație detaliată a software-ului / sistemului, ci explorarea cerințelor software-ului / sistemului care definește strategia generală a proiectului.

  1. Iterarea 0: vizualizarea

Există două sub-active principale.

  1. Prevederea cerințelor inițiale.

    Poate dura câteva zile pentru a identifica cerințele la nivel înalt și domeniul de aplicare al sistemului. Accentul principal este explorarea modelului de utilizare, a modelului de domeniu inițial și a modelului de interfață cu utilizatorul (UI).

  2. Învățarea inițială a arhitecturii.

    Este nevoie, de asemenea, de câteva zile pentru a identifica arhitectura sistemului. Permite stabilirea direcțiilor tehnice pentru proiect. Accentul principal este explorarea diagramelor tehnologice, a fluxului interfeței de utilizator (UI), a modelelor de domeniu și a cazurilor de schimbare.

  1. Modelarea iterației:

    Aici echipa trebuie să planifice munca care va fi efectuată pentru fiecare iterație.

  • Procesul agil este utilizat pentru fiecare iterație, adică în timpul fiecărei iterații, noul articol de lucru va fi adăugat cu prioritate.
  • Mai întâi cu prioritate mai mare munca va fi luată în considerare. Articolele de lucru adăugate pot fi reprioritizate sau eliminate din stiva de articole oricând.
  • Echipa discută modul în care vor implementa fiecare cerință. Modelarea este utilizată în acest scop.
  • Analiza și proiectarea modelării se realizează pentru fiecare cerință care urmează să fie implementată pentru iterația respectivă.
  1. Modelarea temporară: cest lucru este, de asemenea, cunoscut sub numele de Just in time Modeling.
  • Aici, sesiunea de modelare implică o echipă formată din 2/3 membri care discută probleme pe hârtie sau pe tablă.
  • Un membru al echipei va întreba altul să modeleze cu ei. Această sesiune de modelare va dura aproximativ 5-10 minute. Unde membrii echipei se adună împreună pentru a partaja tablă / hârtie.
  • Explorează probleme până când nu găsesc cauza principală a problemei. Chiar la timp, dacă un membru al echipei identifică problema pe care o dorește pentru a rezolva, atunci el / ea va primi rapid ajutorul altor membri ai echipei.
  • Alți membri ai grupului apoi explorează problema și apoi toată lumea continuă ca înainte. Se mai numește ca modelare stand-up sau sesiuni de QA pentru clienți .
  1. Test Driven Development (TDD).
  • Promovează testarea confirmativă a codului de aplicație și specificațiile detaliate.
  • Atât testul de acceptare (cerințe detaliate), cât și testele dezvoltatorului (testul unitar) sunt intrări pentru TDD.
  • TDD face codul mai simplu și clar. Permite dezvoltatorului să mențină mai puține documente.
  1. Recenzii.
  • Aceasta este opțională. Include inspecții de cod și recenzii ale modelelor.
  • Aceasta poate fi realizat pentru fiecare iterație sau pentru întregul proiect.
  • Aceasta este o opțiune bună pentru a oferi feedback pentru proiect.

Test Driven Development (TDD) vs. Agile Model Driven Development (AMDD)

Exemplu de TDD

Aici, în acest exemplu, vom defini o parolă de clasă. Pentru această clasă, vom încerca să îndeplinim următoarele condiții.

O condiție pentru acceptarea parolei:

  • Parola trebuie să aibă între 5 și 10 caractere.

Mai întâi, scriem codul care îndeplinește toate cerințele de mai sus.

Scenariul 1: Pentru a rula testul, creăm clasa PasswordValidator ();

Vom rula deasupra clasei TestPassword ();

Ieșirea este TRECUTĂ așa cum se arată mai jos;

Ieșire:

Scenariul 2: Aici putem vezi în metoda TestPasswordLength () nu este nevoie să creezi o instanță din clasa PasswordValidator. Instanță înseamnă crearea unui obiect de clasă pentru a referi membrii (variabile / metode) acelei clase.

Vom elimina clasa PasswordValidator pv = new PasswordValidator () din cod. Putem apela metoda isValid () direct prin PasswordValidator. IsValid („Abc123”).(A se vedea imaginea de mai jos)

Deci, Refactorizăm (modificăm codul) după cum urmează:

Scenariul 3: După refactorizare, ieșirea arată starea eșuată (vezi imaginea de mai jos), deoarece am eliminat instanța. Deci nu există nicio referire la metoda nestatică isValid ().

Deci trebuie să schimbăm această metodă prin adăugarea unui cuvânt „static” înainte de Boolean ca statică publică booleană isValid (parola String). Refactoring Class PasswordValidator () pentru a elimina eroarea de mai sus pentru a trece testul.

Ieșire:

După efectuarea modificărilor clasei PassValidator () dacă executăm testul, atunci ieșirea va fi TRECUTĂ așa cum se arată mai jos.

Avantajele TDD

  • Bug timpuriu notificare.

    Dezvoltatorii își testează codul, dar în lumea bazelor de date, acesta constă adesea în teste manuale sau scripturi unice. Folosind TDD, construiți, în timp, o suită de teste automate pe care dvs. și orice alt dezvoltator le puteți relua după bunul plac.

  • Cod mai bine conceput, mai curat și mai extensibil.
    • Ajută la înțelegerea modului în care va fi utilizat codul și a modului în care acesta interacționează cu alte module.
    • Rezultă o decizie de proiectare mai bună și un cod mai ușor de întreținut.
    • TDD permite scrierea unui cod mai mic având o singură responsabilitate, mai degrabă decât proceduri monolitice cu multiple responsabilități. Acest lucru face ca codul să fie mai ușor de înțeles.
    • TDD forțează, de asemenea, să scrie doar codul de producție pentru a trece testele pe baza cerințelor utilizatorului.
  • Încrederea în Refactor
    • Dacă refactorizați codul, pot exista posibilități de pauze în cod. Deci, având un set de teste automate, puteți remedia aceste pauze înainte de lansare. Avertisment adecvat va fi dat dacă se constată întreruperi atunci când se utilizează teste automate.
    • Utilizarea TDD ar trebui să conducă la un cod mai rapid și mai extensibil, cu mai puține erori care pot fi actualizate cu riscuri minime.
  • Bun pentru munca în echipă

    În absența oricărui membru al echipei, alți membri ai echipei pot prelua și lucra cu ușurință la cod. De asemenea, ajută la schimbul de cunoștințe, făcând astfel echipa mai eficientă în ansamblu.

  • Bun pentru dezvoltatori

    Deși dezvoltatorii trebuie să petreacă mai mult timp scriind cazuri de test TDD, este nevoie de mult mai puțin timp pentru depanare și dezvoltarea de noi funcții. Veți scrie cod mai curat, mai puțin complicat.

Rezumat:

  • TDD reprezintă dezvoltarea bazată pe teste. Este un proces de modificare a codului pentru a trece un test proiectat anterior.
  • Se pune mai mult accentul pe codul de producție decât pe proiectarea cazurilor de testare.
  • Dezvoltarea bazată pe test este un proces de a modifica codul pentru a trece un test proiectat anterior.
  • În Ingineria software, este uneori cunoscut sub numele de „Test First Development”.
  • TDD include refactorizarea unui cod, adică modificarea / adăugarea unei cantități de cod la codul existent fără a afecta comportamentul acestuia.
  • TDD atunci când este utilizat, codul devine mai clar și mai simplu de înțelegeți.

Acest articol este contribuit de Kanchan Kulkarni

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *