'Y'

Test Driven Development cu JUnit 5

Abstract: In aceasta serie de articole, iti vom arata cum sa dezvolti aplicatii sigure si flexibile folosind test-driven development (TDD). O tehnica care poate sa creasca viteza de dezvoltare si sa elimine o parte din provocarile legate de debugging – toate aceste lucruri cu ajutorul JUnit 5 si a functionalitatilor sale.

Dec 22, 2020 93
Abstract: In aceasta serie de articole, iti vom arata cum sa dezvolti aplicatii sigure si flexibile folosind test-driven development (TDD). O tehnica care poate sa creasca viteza de dezvoltare si sa elimine o parte din provocarile legate de debugging – toate aceste lucruri cu ajutorul JUnit 5 si a functionalitatilor sale. Vom scoate in evidenta principalele concepte din TDD si le vom aplica in dezvoltarea unei aplicatii Java care sa se ocupe de managementul zborurilor si sa urmeze un set de politici. Ne vom concentra pe a explica cat mai clar TDD si a arata beneficiile sale atunci cand este pus in practica corect.

1. Principalele concepte TDD


Test-driven development este o practica din programare care foloseste un ciclu de dezvoltare scurt si repetitiv in cadrul caruia cerintele sunt transformate in test cases si apoi programul este modificat in asa fel incat testele sa fie efectuate cu succes:

  1. Scriem un failing test inainte de a scrie cod nou
  2. Scriem cea mai mica bucata de cod posibila care sa permita testului sa treaca

Dezvoltarea acestei tehnici este atribuita lui Kent Beck. TDD incurajeaza design-ul simplu si inspira siguranta: cauta ceea ce am numi “clean code that works.”
Acest aspect este diferit de procesul de software development traditional, unde codul poate sa fie adaugat fara a verifica daca respecta cerintele. Intr-o abordare clasica, dezvoltarea unui program inseamna ca scriem cod si apoi il testam observand cum se comporta. Astfel ca ciclul de dezvoltare conventional este: [code, test, (repeat)]

TDD foloseste o variatie a acestui proces: [test, code, (repeat)]

Testarea incurajeaza designul si devine un prim client al acestei metode.

Beneficiile TDD sunt urmatoarele:

  • Scriem cod care este bazat pe obiective clare, si ne asiguram ca adresam exact lucrurile pe care aplicatia noastra trebuie sa le faca.
  • Introducerea de noi functionalitati este mult mai rapida. Pe de o parte, testele ne incurajeaza sa implementam un cod care face ceea ce trebuie sa faca. Pe de alta parte testele ne ajuta sa prevenim introducerea de bug-uri in codul existent.
  • Testele funtioneaza ca documentatie pentru aplicatie. Le putem urmari si putem intelege ce probleme ar trebui sa rezolve codul nostru.

Test Driven Development with JUnit 5.jpg


Am spus ca TDD foloseste ciclul de dezvoltare [test, code, (repeat)]. De fapt arata asa: [test, code, refactor, (repeat)].

Refactoring este procesul prin care modificam un sistem software in asa fel incat nu impactam comportamentul sau extern dar imbunatatim structura sa interna. Pentru a ne asigura ca nu afectam comportamentul extern trebuie sa ne bazam pe teste.

Cand primim specificatii pentru a adauga o noua functionalitate intr-o aplicatie, trebuie ca mai intai sa le intelegem inainte de a le adauga in codul nostru. Cum ar fi daca inainte de a adauga functionalitatile implementam un test care ne va arata ce trebuie sa facem si apoi ne gandim la cum sa facem asta? Acesta este unul dintre principiile fundamentale ale TDD.

Cand incepem sa lucram la o aplicatie trebuie cel putin sa intelegem idea fundamentala legata de ce trebuie sa faca software-ul. Dar daca vrem sa verificam ce fac clasele sau metodele, alegerile noastre sunt limitate: citim documentatia sau cautam exemple de cod care invoca functionalitatea. Majoritatea programatorilor prefera sa lucreze cu codul. Si unit test scrise cum trebuie fac exact asta: invoca codul nostru si ofera o specificatie functionala pentru functionalitatea codului. Astfel ca TDD ajuta la dezvoltarea unei parti substantiale din documentatia tehnica a aplicatiei.

Vrei sa inveti mai multe despre aceasta tehnologie? Descopera cursurile noastre.

Catalin Tudose
Java and Web Technologies Expert

Daca iti place acest articol, distribuie-l si prietenilor tai!




Mai ai intrebari?
Contacteaza-ne.
Thank you.
Your request has been received.