Testarea Sistemelor de Calcul [617459]
Universitatea din Oradea
Facultatea de Inginerie Electrică și Tehnologia Informației
Testarea Sistemelor de Calcul
Testarea Interfețelor Utilizator Grafice
Coordonator: Student: [anonimizat]. Daniel Popescu Paul Corda
2014
Cuprins
Testarea Interfețelor Utilizator Grafice ………………………………………………………………………………………… 1
Considerații generale …………………………………………………………………………………………………………….. 3
Elemente ale testării interfețelor grafice ………………………………………………………………………………….. 4
Criterii de acoperire …………………………………………………………………………………………………………. 4
Oracole de test………………………………………………………………………………………………………………… 5
Testarea de regresie ………………………………………………………………………………………………………….. 5
Pașii testării interfețelor grafice ……………………………………………………………………………………………… 6
Metode de testare a interfețelor grafice ……………………………………………………………………………………. 7
Testarea manuală……………………………………………………………………………………………………………… 7
Testarea automată……………………………………………………………………………………………………………. 7
Unelte de testare…………………………………………………………………………………………………………………… 8
AutoIT……………………………………………………………………………………………………………………………. 8
Abbot…………………………………………………………………………………………………………………………….. 9
Guitar…………………………………………………………………………………………………………………………….. 9
Concluzii…………………………………………………………………………………………………………………………… 10
Bibliografie………………………………………………………………………………………………………………………… 11
Considerații generale
În cadrul ingineriei software, procesul de testare a interfețelor grafice utilizator presupune
testarea interfeței grafice(GUI) a aplicației pentru a verifica conformitatea acesteia față de specificațiile
stabilite. Aceste teste sunt, de regulă, simulări ale acțiunilor pe care utilizatorul le poate întreprinde în
cadrul utilizării aplicației.
În aplicațiile moderne, interfețele utilizator grafice au devenit aproape de nelipsit, oferind un
mod “natural” și intuitiv prin care utilizatorul poate să interacționeze cu acestea. Interfețele grafice
răspund la evenimente provocate de interacțiunea utilizatorului, ca de exemplu: selecția unei opțiuni
dintr-un meniu, click-ul unui buton al mouse-ului, sau apăsarea unei taste. Prin apeluri de funcții sau
prin mesaje, interfețele comunică astfel cu codul care stă la baza produsului software.
Datorită răspândirii sistemelor de calcul, și implicit a aplicațiilor software, este necesară
dezvoltarea și îmbunătățirea în mod constant a interfețelor utilizator. Acest lucru a determinat și apariția
unei noi arii de studiu, Human – Computer Interaction(HCI), care presupune implementarea și
dezvoltarea de metodologii prin care să îmbunătățească mijloacele de interacțiune om – mașină. Printre
interesele HCI locul cel mai important îl ocupă cel a îmbunătățirii procesului de dezvoltare și
implementare a interfețelor utilizator.
Prin testarea interfețelor utilizator grafice se poate înțelege:
•procesul de testare al interfetei grafice al unui produs pentru a asigura faptul ca sunt
îndeplinite specificatiile
•procesul de testare al interfetei aplicatiei si detectarea faptului că aplicatia functionează
corect
Testarea interfetelor grafice presupune îndeplinirea unui set de sarcini, comparând rezultatele cu
datele de ieșire preconizate, și capacitatea de a repeta același set de sarcini cu date de intrare diferite și
la având același nivel de precizie.
Cea mai frecventă metodă de testare a interfețelor utilizator este cea manuală, prin care tester-ul
interacționează în mod direct cu interfața și generează astfel evenimentele. Un astfel de test este extrem
de laborios și predispus la erori. În plus există o șansă foarte mare ca multe situații să nu fie simulate
corespunzător, în toate cazurile posibile, sau chiar deloc.
3
Elemente ale testării interfețelor grafice
Testarea software este consumatoare de resurse si reprezintă multă muncă – de multe ori
reprezentând 50 până la 60 la suta din costurile totale de dezvoltare software – iar testarea interfetei
grafice creează dificultăți suplimentare pe care tehnicile de testare traditionale ale software-ului nu le
abordează în mod adecvat.
Criterii de acoperire
Software-ul convențional folosește criterii de acoperire ca un ghid pentru a determina dacă
testarea este adecvată. Aceste criterii definesc seturi de reguli pe care designeri de testare le folosesc
pentru a determina tipul și cantitatea de cod sursă ce trebuie testat. De exemplu, un criteriu de tipul
"acoperire a evenimentelor" ar putea necesita ca toate evenimentele interfetei grafice să fie executate
cel puțin o dată în timpul unui ciclu complet al cazului de testare.
Cu toate acestea, criteriile tradiționale de acoperire nu funcționează bine pentru interfetele
grafice. În primul rând, software-ul interfetei grafice diferă la nivel de abstractizare de codul sursă al
aplicației, astfel încât cartografierea între evenimentele interfetei grafice si codul sursă care stă la bază
nu este simplă.
Criteriile de acoperire realizate pentrul codul sursă nu reflecta neapărat interacțiunile
utilizatorului cu evenimentele interfetei grafice și cu aplicatia.
În al doilea rând, chiar și atunci când designeri de testare cu experiență se concentreaza pe
anumite părți ale un GUI, ei constată ca fiind impractică generarea tuturor cazurilor de testare posibile
pentru aceste părți componente. În cazul în care designerii au sarcina de a genera un subset din toate
cazurile de testare posibile, de cele mai multe ori trebuie să selecteze subgrupul în timpul generării
cazului de testare.
Dificultatea de a anticipa capacitatea unui caz de test de detectare a defectiunilor face dificilă, la
rândul său, selectarea celui mai eficient subset.
4
Oracole de test
Verificarea faptului că interfata grafică execută corect codul, reprezintă o problemă.
Instrumentul de verificare tradițional este un oracol de test, un program separat care generează
rezultatele așteptate pentru un caz de testare și le compară cu rezultatele reale. În testarea software-ului
convențional, tester-ul invocă oracolul după ce se execută cazul de test si compară rezultatul final cu
ieșirea așteptată de oracol. Pe de altă parte, executarea unui caz de testare al interfetei grafice necesită
intercalarea cu invocarea oracolului pentru că o stare incorectă a interfetei poate duce la un ecran
neașteptat, care în schimb, pot face executia în continuare a cazului de test inutilă. De exemplu, cazul
de testare ar putea implica un buton de pe ecranul interfetei care nu mai există. Astfel, un asemenea caz
de testare al interfetei ar trebui să fie terminat cât mai curând posibil din momentul în care oracolul
detectează o eroare.
De asemenea, în cazul în care oracolul nu verifică interfata grafică după fiecare etapă de
executare al unui caz de test, identificarea cauzei reale de eroare poate deveni dificilă, mai ales atunci
când rezultatul final este corect, dar rezultatele intermediare sunt incorecte.
Prin urmare, în timpul execuție cazului de test, un tester introduce intrările pas cu pas si
compară rezultatul așteptat cu ieșirele interfetei după fiecare pas. Această intercalare complică testarea
interfetei grafice.
Testarea de regresie
Testerii utilizează testarea de regresie pentru a se asigura că modificările de cod nu introduc noi
erori în codul deja testat. Regresia procesului de testare ridică probleme speciale pentru interfata
grafică.
În primul rând, atât intrările cât și ieșirile unei interfete depind de dispunerea elementelor
grafice. Modificări în dispunere – plasarea butonului, organizarea meniului, și așa mai departe – pot
schimba cartografierea intrare-ieșire ș i fac inutile cazurile de testare mai vechi. Î n mod similar,
rezultatele scontate folosite de oracole pot deveni depășite.
În al doilea rând, programatorii folosesc de obicei dezvoltarea rapidă de prototipuri pentru
interfata grafică. Acest mediu de dezvoltare necesită mecanisme eficiente de testare a regresiei, care pot
detecta modificările frecvente de software si pot adapta cazurile de test vechi.
5
Pașii testării interfețelor grafice
1.Determinarea obiectivelor testării prin prin definirea criteriilor de acoperire. Un criteriu de
acoperire ar putea solicita executarea fiecărui eveniment al interfeței cu utilizatorul pentru a
stabili dacă se comportă corect.
2.Generarea de date de intrare pentru cazuri de testare pornind de la specificațiile software și
structură. Pentru interfete aceste intrări constau în evenimente, cum ar fi mouse-ul, selecții de
meniu etc.
3.Generarea de ieșiri așteptate, pentru a le putea compara cu rezultate reale. Rezultatul așteptat al
interfetelor include capturi de ecran, pozițiile și titlurile ferestrelor.
4.Execuția cazurilor de testare ș i verificarea rezultatelor. Cazurile de testare se execută pe
aplicație și tester-ul compară ieșirea cu rezultatele așteptate, prin utilizarea unui oracol.
5.Stabilește dacă interfata a fost testată în mod adecvat. După ce toate cazurile de testare s-au
executat, tester-ul analizează software-ul să verifice care dintre modulele acestuia au fost de
fapt testate.
Ultimul pas este deosebit de important în testarea interfetelor, în cazul în care criteriile de
acoperire nu pot fi întotdeauna disponibile sau suficiente.
După testare, echipa de dezvoltare corectează orice problema identificată. Tester-ul efectuează
apoi testarea de regresie pentru a asigura corectitudinea părților modificate ale software-ului și de a
stabili că modificările nu au afectat în mod negativ părțile testate anterior.
6
Metode de testare a interfețelor grafice
Testarea manuală
Interfețele grafice sunt testate manual de către testeri, în conformitate cu specificațiile prevăzute
în fișele tehnice.
Testarea manuală, mult timp văzută ca și singura solutie de a descoperi eventualele defecte,
întârzie foarte mult lansarea pe piată a produsului si induce cheltuieli semnificative, mai ales în cazul
descoperirii efectelor laterale – atât în procesul dezvoltării unei aplicatii cât si în cazul modificărilor
ulterioare. Totodată, procedurile de testare manuală, prin natura lor limitată, nu reusesc să descopere
toate defectele si nu au nicio sansă să simuleze conditii de utilizare simultană, intensivă, a unei
aplicatii. Există numeroase căi de a îmbunătăti procesul de testare, una dintre cele mai eficiente fiind
testarea automată.
Testarea automată
Testarea poate fi realizată în mod automat prin utilizarea unor instrumente software specializate.
În faza de înregistrare sunt capturate secvențe de testare care vor fi ulterior executate prin intermediul
aplicației software.
Testele automate execută o secventă de actiuni fără interventie umană si pot simula utilizarea
unei aplicatii în conditii de simultaneitate ridicată. În general, majoritatea produselor necesită testare
repetată, pe mai multe platforme software si hardware, după schimbări ulterioare sau la lansarea unei
noi versiuni de produs. Prin folosirea testării automate, costurile testărilor repetate se reduc
considerabil.
Un sistem de testare automată trebuie să aibă la bază două caracteristici principale:
•module reutilizabile
•întretinerea si urmărirea activitătii dintr-un singur punct de control
Sistemele de testare automată sunt o tehnologie în plină dezvoltare care au ca scop descoperirea
si raportarea eventualelor defecte, mărirea longevitătii produsului si reducerea procesului de întretinere.
7
Unelte de testare
AutoIT
Este un limbaj de scripting gratuit, similar cu BASIC, inițial creat pentru automatizarea
ferestrelor, aprocesului de testare a interfețelor grafice și scripting în general. Ulterior posibilitățile de
utilizare ale limbajului s-au dezvoltat.
Caracteristici:
•usor de invățat, cu sintaxa asemănătoare BASIC
•simularea intrărilor de la tastaură și mișcări ale mouse-ului
•managementul ferestrelor și proceselor
•interacțiunea cu toate controalele standard ale ferestrelor
•crearea interfețelor grafice cu utilizatorul
•suport COM
•expresii regulate
•apeluri externe ale DLL-urilor și a funcțiilor Windows API
•suport unicode și x64
•funcționarea cu Windows Vista’s User Account Control (UAC)
•scripturi compilate în executabile de sine stătătoare
•compatibilitate cu Windows 95/98/ME/NT4/2000/XP/2003/Vista/2008/7/8
•comunități bazate pe forumuri de suport și un help file detaliat (în limba engleză)
AutoIt a fost proiectat să aibă o dimensiune cât mai mică și să fie de sine stătător, fără să
necesite biblioteci de funcții externe( DLL) sau regiștri, motiv pentru care poate fi folosit în siguranță pe
servere.
Pentru crearea și editarea scripturilor există o versiune Scite4AutoIt, un script editor bazat pe
Scintilla. Principalele autuuri sunt: syntax highlight, code folding autocomplete și IntelliSense.
Principalele limitări ale limbajului sunt rularea aplicațiilor în mod single-thread, ceea ce poate fi
deranjant la aplicații mari, și detectarea unor aplicații drept viruși ( false positives) datorită faptului că
executabilele create în AutoIt intră în categoria self-extracting.
8
Abbot
Este un instrument software ce poate fi utilizat pentru crearea cazurilor de test pentru aplicații
scrise în Java.
Caracteristici:
•are integrat un recorder, un player și preia editorul Costello (plug-in)
• înregistrează cazurile de test în formatul Java
•permite editarea rezultatelor preconizate direct în codul sursă
•rezultatele testării sunt afișate prin utilizarea modelului JUnit; – permite afișarea și
utilizarea referințelor fiecărei componente software
•deține o interfața ”Robot” ce poate fi utilizată pentru a genera acțiuni definite de
•utilizator, la nivelul diferitelor componente ale interfeței grafice
Guitar
Este un framework folosit pentru implementarea abordării de tip “Event-flow graph”, ce
utilizează instrumentul Apache ANT.
Caracteristici:
•are patru componente principale
•GUI Ripper extrage din codul sursă informațiile legate de interfața grafică
•GUI Structure2Graph construiește un graf ce reprezintă elementele interfeței grafice
•Test Case Generator crează scenarii de test bazate pe graful generat
•GUI Replayer rulează programul și afișează rezultatele testelor
9
Concluzii
Demarând testarea interfetelor grafice încă de la stadiile initiale ale ciclului de dezvoltare
software, crește viteza de dezvoltare, se îmbunătăteste calitatea produsului si se reduc riscurile ce pot să
apară către finalul dezvoltării.
Pe măsură ce tehnologia devine din ce în ce mai accesibilă și aplicațiile tot mai robuste,
capabile să rezolve sau să ușureze probleme din ce în ce mai complexe, intefațarea om – mașină va
deveni tot mai importantă, prin aceasta asigurându-se accesul unui grup cât mai mare și variat de
oameni acesul la această tehnologie. Prin dezvoltarea continuă a metodelor de implementare și testare a
interfețelor grafice și nu numai, acest lucru va fi posibil.
10
Bibliografie
•http://control.aut.utcluj.ro/doc/lib/exe/fetch.php?media=mp:managementul_proiectelor_-
_testarea_aplicatiilor_software.pdf
•https://en.wikipedia.org/wiki/Graphical_user_interface_testing
•https://en.wikipedia.org/wiki/Human%E2%80%93computer_interaction
•Scott Klemmer – HCI
•http://profs.info.uaic.ro/~alaiba/mw/index.php?title=Strategii_de_testare_a_aplica
%C5%A3iilor_software
•http://revistaie.ase.ro/content/8/pribeanu.pdf
•http://www.appperfect.com/products/application-testing/app-test-gui-testing.html
11
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Testarea Sistemelor de Calcul [617459] (ID: 617459)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
