Professional Documents
Culture Documents
1
Urmărind această idee se poate afirma că TDD= Refactorizare + TFD. TDD
oferă o perspectivă complet nouă faţă de dezvoltarea clasică de software. Când
urmează a fi implementată o nouă funcţionalitate, prima întrebare care este pusă este
acea dacă design-ul existent este cel mai bun design care să permită implementarea
acelei functionalităţi. Dacă acest lucru este adevărat atunci se continuă folosind o
abordare TFD. În caz contrar va urma o refactorizare locală pentru a schimba acea
porţiune din design afectată de noua funcţionalitate, pentru a permite adăugarea ei cu
uşurinţă. Rezultatul va fi aceala de a îmbunătăţi calitatea design-ului, fiind mai uşor de
lucrat cu el pe viitor.
În practică folosind o abordare TDD, ordinea este inversată. Dacă până la TDD
mai întâi se scria cod functţional urmat de cod de test pentru a testa acel cod
funcţional(existând posiblitatea ca acel cod de test să nu existe), acum se va scrie în
primă fază codul de test, urmat de codul funcţional. În plus, acest lucru se va realiza în
paşi foarte mici, testându-se bucăţi mici de cod funcţional.
TDD este considerată o practică agilă, prin urmare multă lume nu deţine
cunoştinţe relevante despre aceasta, sau în cel mai rău caz cei ce se află la început,
2
cred că TDD reprezintă scrierea de teste automate pentru cod sau chiar mai rău, că
TDD este o modalitate de testare a codului şi nu de scriere a sa.
Fără un astfel
de tool TDD este
practic imposibil.
Figura 2 prezintă o
diagramă cu stări UML
care descrie modul în
care se lucrează cu un
astfel de tool.
Figura 2
Pentru cei ce
dezvoltă aplicaţii. NET există o serie de tool-uri care să le uşureze dezvoltarea folosind
TDD, tool-uri ce pot fi/sunt integrate în Microsoft Visual Studio.
În alegerea framework-ului de testare trebuie urmărită uşurinţa cu care se poate
integra în workflow-ul fiecărui developer. Următoarele opţiuni sunt disponibile:
1. MSTest
Dacă folosiţi Visual Studio, ediţiile Professional sau Team nu trebuie să căutaţi
prea departe. Suport pentru framework-ul de testare nativ creat de Microsoft este
disponibil direct din IDE. MSTest este un framework de unit-testing cu sintaxa foarte
asemănătoare cu NUnit, dar este disponibil doar pentru ediţiile Pro şi Team, deci va fi
nevoie de o soluşie terţă dacă foloseşti ediţiile Standard sau Express.
3
2. NUnit
NUnit reprezintă framework-ul de bază pentru .Net, şi probabil framework-ul de
care majoritatea a auzit sau folosit. Deşi acest tool nu vine cu mai nici un suport din
cadrul IDE-ului, runner-ul şi comandline-ul standalone reprezintă o bază foarte
puternică pentru mulţi practicanţi TDD.
3. MbUnit
MbUnit a fost, pentru o perioadă foarte lungă, singura variantă reală la NUnit.
Sintaxa seamănă cu cea a MSTest sau NUnit dar are o serie de abilităţi care depăşesc
celelalte framework-uri.
RowTest a fost pentru foarte mult timp motivul pentru care lumea a ales MbUnit
peste celelalte framework-uri. Totodată este legat în Gallio, un runner de teste care va
rula teste în majoritatea framework-urilor.
4. XUnit.net
XUnit.net a apărut recent în lista de framework-uri de unit-testing pentru .NET, şi
este dorit a fi mai mult decât un framework pentru unit testing. Este foarte controversat
şi se depărtează cel mai mult de framework-urile prezentate anterior. Sintaxa şi modul
de scriere a testelor este radical diferită, şi necesită citirea integrală a deciziilor luate de
designerii framework-ului pentru a o înţelege.
Bibliografie:
1. Test-Driven Development By Example, Kent Beck, 2002 Addison Wesley
4
2. Test-Driven Development: A Practical Guide, David Astels, Prentice Hall PTR
3. http://www.agiledata.org/essays/tdd.html
4. http://www.daniweb.com/tutorials/tutorial42956.html
5. http://bloggingabout.net/blogs/danbunea/archive/2005/12/07/10480.aspx
6. http://debuggable.com/posts/introduction-to-test-driven-development-tdd-part-
1:480f4dfd-e8f4-4a82-923c-4625cbdd56cb
7. http://www.pnexpert.com/files/Test_Driven_Development.pdf
8. http://www.geekzone.co.nz/vs2008/6187