Laborator 5

Testarea aplicatiilor. Urmarirea defectelor.

Unelte si tehnologii:

  • Metode de testare a aplicatiilot
  • Unelte pentru urmarirea defectelor

Concepte:

  • Testarea aplicatiilor software

Documentatie laborator

Unelte web pentru urmarirea defectelor

In procesul de dezvoltare a aplicatiilor software activitatile de detectare, urmarire si reparare a defectelor sunt esentiale pentru a asigura realizarea unui produs de calitate. Exista pe piata unelte care pot fi folosite de echipele de dezvoltare pentru a gestiona defectele. Aceste unelte sunt, fie de sine statatoare fie integrate in unelte mai complexe de managementul proiectelor.

Unelte pentru urmarirea defectelor:

  • Redmine - tool web de managementul proiectelor ce intereaza si un modul de urmarire a defectelor.
  • Bugzilla - tool web foarte popular pentru urmarirea defectelor.
  • Mantis - tool web pentru urmarirea defectelor.

Unit testing

Unit testing este o metoda de testare ce presupune testarea componentelor programului. O componenta este definita ca cea mai mic componenta testabila a unui aplicatii. In programarea procedurala o unitate de testare poate fi considerata a fi functia sau procedura. In programarea orientata pe obiecte o unitate de testare poate fi considerata o interfata, o clasa dar de asemenea si o metoda.

Informatii suplimentare legate de unit testing: aici si aici.

Strans legat de conceptul de unit testing s-a dezvotat metodologia de dezvoltare a aplicatiilor centrata pe teste : Test Driven Development (TDD). O prezentare video TDD gasiti aici.

Uneltele de unit testing sunt platforme\librarii ce usureaza munca programatorului in scrierea, gestionarea si rularea testelor:

  • JUnit - este o platforma de testare de tip unit testing pentru limbajul java. Este cea mai populara platforma de acest tip pentru limbajul java si este integrata in marea majoritate a mediilor de dezvoltare. Exemplu de utilizare JUnit: Tutorial
  • NUnit - este o platforma de testare pentru Microsoft .NET scrisa complet in C#, avand la origini JUnit.

Testarea interfetelor grafice

O lista detaliata a uneltelor pentru testarea automata a interfetelor grafice gasiti aici.

AutoIT este un limbaj similar cu BASIC, si are ca scop scrierea de scripturi pentru automatizarea procesului de testarea a interfetelor grafice.

Abbot este o unealta pentru testarea interfetelor grafice scrise in Java.

Selenium este un set de unelte dezvoltate pentru testarea automata a aplicatiilor web.

Code profiling

Uneltele de tip code profiling sunt aplicatii specializate ce colecteaza si prezinta utilizatorului informatii cu privire la executia altor aplicatii. Astfel de unelte se utilizeaza pentru analiza modului de functionarea a aplicatiilor in scopul detectarii unor defecte sau pentru eficientizarea functionarii acestora. Sunt analizate si colectate informatii cu privire la incarcarea procesorului, gradul de ocupare a memorie, rularea firelor de executie si altele.

JVisualVM este o unealta de tip code profiler ce vine integrata cu limbajul de programare Java (incepand cu versiunea JDK 1.5).

TAU este un tool portabil pentru analiza performantelor programelor scrise in Fortran, C, C++, Java si Python.

Code coverage

Code coverage este o metoda de masurare in testarea aplicatiilor software ce descrie gradul in care codul sursa al unui program a fost testat. Uneltele code coverage sunt folosite de inginerii de testare pentru a determina gradul in care unitatile de testare acopera toate functiile programului - pot fi de exemplu evidentiate functii care nu sunt deloc testate.

EclEmma este un tool gratuit ce este livrat sub forma unui plugin pentru mediul Eclipse si implementeaza facilitati pentru analiza acoperirii codului pentru aplicatii scrise in limbajul Java.

Cobertura este un tool gratuit destinat de asemenea pentru limbajul Java.

CTC++ este un tool destinat pentru limbajele C si C++.

NCover este un tool dedicat pentru platforma .NET

Exercitii

Exercitiu JUnit: Implementati in Java o clasa Calculator ce realizeaza operatii matematice. Definiti testele JUnit ce testeaza clasa Calculator si rulati testele. Atasati in Redmine clasa de test si clasa testata (folositi ca si punct de reper tutorialul atasat in sectiunea documentatie).

Exercitiu Code profiling: Realizati o aplicatie simpla in Java ce genereaza un memory leak. Rulati aplicatia si conectativa la ea folosind aplicatia de cod profiling JVisualVM. Realizati un Thread Dump si un Heap Dump si atasati rezultatele si clasa testata in Redmine.

Exercitiu code coverage: Pentru aplicatia de test si testele concepute la primul exercitiu rulati toolul de code coverage EclEmma si atasati in Redmine screenshotul cu rezultatele obtinute in urma rularii. Pentru a putea rula EclEmma trebuie instalat in prealabil acest plugin in Eclipse.

Exercitiu testare interfete grafice: Testati functionalitatile Abbot ruland exemplele de aic. Urmand tutorialul de aici testati functionarea tool-ului Abbot pentru testarea interfetelor grafice.

Proiect

De predat a doua faza a proiectului.