Ce este dezvoltarea bazată pe teste: un ghid pentru începători

Publicat: 2018-03-12

Programatorii și bug-urile au fost într-o luptă fără sfârșit pentru supremație de când nu se știe. Este inevitabil – chiar și cei mai buni programatori cad pradă erorilor. Niciun cod nu este cu adevărat protejat de erori, de aceea efectuăm teste. Programatorii, cel puțin cei sănătoși, își testează codul rulându-l pe mașini de dezvoltare pentru a se asigura că face ceea ce a fost menit să facă. În mod tradițional, cazurile de testare erau scrise după scrierea codului, dar în Test-driven Development, un caz de testare automat este scris înainte de a scrie orice bucată de cod, astfel încât execuția și testarea să poată fi verificate simultan.
În acest articol, vom vorbi în profunzime despre Test-Driven Development și de ce este mai bună decât metodele tradiționale!

Cuprins

Ce este dezvoltarea bazată pe teste?

Cercul TDD al vieții
Test-Driven Development a fost creată ca parte a metodologiei Extreme Programming (XP) și a fost numită conceptul „Test-First” . Dezvoltarea bazată pe testare vă permite să testați codul în detaliu și, de asemenea, vă permite să retestați codul rapid și ușor, deoarece este automat. În esență, înainte de a scrie orice bucată de cod, programatorul creează mai întâi un test unitar. Apoi, programatorul creează suficient cod pentru a satisface testul unitar. Odată ce testul este trecut și codul refactorizat, programatorul poate continua cu îmbunătățiri suplimentare. Dezvoltarea bazată pe teste se asigură că codul este testat temeinic, ceea ce duce la un cod modularizat, extensibil și flexibil.
De fiecare dată când urmează să fie adăugată o nouă caracteristică, aceasta trebuie să treacă prin ceea ce se numește „ciclul de viață” al TDD. Să vorbim mai multe despre acest ciclu de viață.
Cum să devii un dezvoltator Full Stack

Ciclul de viață al dezvoltării bazate pe teste

Ciclul de viață de dezvoltare bazat pe teste acoperă totul, de la scrierea testului unitar inițial până la reelaborarea codului.
Dezvoltare bazată pe teste

    • Adăugați un test: fiecare funcție nouă trebuie să fie supusă unui test înainte de a fi implementată. Cerința esențială pentru redactarea unui test este de a avea o înțelegere clară a tuturor cerințelor. Acest lucru se realizează folosind cazuri de utilizare și povești de utilizator.

    • Rulați toate testele și verificați testul net: acest lucru se face pentru a asigura funcționarea corectă a testului nostru. Practic, această fază urmărește să verifice dacă testul nu este trecut de niciun cod care nu îndeplinește cerințele. Procedând astfel, acest pas elimină posibilitatea de a avea la îndemână un test defect.

    • Scrieți codul: Acum că aveți testul pe loc, următorul pas evident este să scrieți un cod care șterge testul. Acest cod nu trebuie să fie perfect din toate punctele de vedere, dar trebuie să elimine testul. Odată ce suntem siguri că acest cod șterge testul, acesta poate fi modificat conform cerințelor.

    • Rulați testele: După ce ați scris codul, acum este timpul să vedeți dacă codul trece testul sau nu. Dacă codul dvs. trece testele, înseamnă că codul dvs. îndeplinește cerințele - până acum.

    • Refactorizarea codului: Acest lucru se face în esență pentru a curăța codul. Refactorizarea nu dăunează niciunei funcționalități; este doar pentru curățarea codului prin eliminarea dublării dintre codul de testare și codul de producție.

  • Repetare: Acest ciclu se repetă acum cu un nou test pentru a adăuga mai multe funcționalități. Fiecare funcționalitate trece prin același ciclu. În esență, dimensiunea pașilor nu trebuie să depășească 1-10 editări între fiecare test. Dacă un cod nu trece rapid testul, dezvoltatorul trebuie să revină și să nu depaneze excesiv.
De ce companiile caută să angajeze dezvoltatori Full Stack

Avantajele și dezavantajele dezvoltării bazate pe teste

Dezvoltarea bazată pe teste are unele avantaje clare față de metodele tradiționale de testare – care au fost în mare parte manuale. Cu toate acestea, nu este infailibil. La fel ca orice altă tehnologie, dezvoltarea bazată pe teste are și un set de dezavantaje.

Să aruncăm o privire la care sunt beneficiile TDD în detaliu:

    • Scrierea de teste mici asigură modularitatea codului dvs. Practicarea TDD vă ajută să înțelegeți principiile de bază ale unui design modular bun.

    • TDD oferă claritate în timpul implementării codului dvs., ceea ce permite o rețea de siguranță în timpul fazei de refactorizare.

    • Cu TDD, colaborarea este mult mai ușoară, deoarece acum oamenii pot edita codul cu încredere, deoarece testul îi va informa dacă modificările lor nu sunt la nivelul testului.

    • Baza TDD sunt testele unitare. Din acest motiv, refactorizarea este mult mai ușoară și mai rapidă. Refactorizarea unui cod vechi este o durere, dar dacă codul este susținut de teste unitare, devine mult mai ușor.

    • Ajută la clarificarea tuturor cerințelor înainte de a începe partea de codificare. În acest fel, se evită multă ambiguitate care poate apărea ulterior.

    • Dezvoltarea bazată pe teste se concentrează pe testarea în timpul scrierii. Acest lucru îl obligă pe programator să-și facă interfețele suficient de curate pentru a trece testul. Este greu de înțeles acest avantaj până când nu lucrezi la o bucată de cod care nu a suferit TDD.

  • Greșelile stupide sunt prinse aproape imediat. Ajută la eliminarea acelor greșeli care ar pierde mult timp dacă ar fi găsite în QA.

Acum, să aruncăm o privire la care sunt limitările dezvoltării bazate pe teste:

    • Suita de teste care este utilizată pentru testare trebuie menținută, altfel testele ar putea să nu fie complet deterministe.

    • Testele sunt greu de scris – mai ales dincolo de faza de testare unitară.

    • TDD încetinește ritmul de dezvoltare, cel puțin inițial.

    • Ca și în cazul oricărei forme de dezvoltare, există o mare diferență între a o face și a o face bine. Scrierea unor teste unitare bune necesită un nivel de specialitate.

    • Este dificil să aplicați această abordare codului dvs. moștenit (existent).

    • TDD vă cere să efectuați o întreținere de rutină. Este necesar să rafinați testele pentru a le face să ruleze mai repede.

    • Este ușor să fii distras de caracteristicile de lux în orice cadru de testare unitară, dar trebuie reținut că testele simple tind să dea cele mai bune rezultate.

  • Dacă toți membrii echipei nu își mențin corect testele, întregul sistem se poate degrada rapid.
Cum să reușești în primul tău job de dezvoltare software

În concluzie…
Dezvoltarea bazată pe teste este calea de urmat în ceea ce privește viitorul dezvoltării aplicațiilor. Există o serie de cadre de testare automată precum PHPUnit, Serenity, Robot, RedWoodHQ și multe altele. Alegeți-l pe cel care se potrivește nevoilor dvs. și începeți să construiți aplicații mai bune care pot fi întreținute în cel mai scurt timp!

Înscrieți-vă la cursurile de inginerie software de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Deveniți un dezvoltator Full Stack

UpGrad și IIIT-Bangalore's PG Diploma in Software Development
Program Executive PG în Dezvoltare Software de la IITB