o nouă abordare a generării suitei de testare, adaptată dintr-o tehnică CLI implică utilizarea unui sistem de planificare. Planificarea este o tehnică bine studiată din domeniul inteligenței artificiale (AI) care încearcă să rezolve probleme care implică patru parametri:
- o stare inițială,
- o stare de obiectiv,
- un set de operatori și
- un set de obiecte pe care să funcționeze.
sistemele de planificare determină o cale de la starea inițială la starea de obiectiv utilizând operatorii. Ca un exemplu simplu al unei probleme de planificare, având în vedere două cuvinte și o singură operație care înlocuiește o singură literă dintr-un cuvânt cu alta, obiectivul ar putea fi schimbarea unui cuvânt în altul.
în autorii au folosit Planificatorul IPP pentru a demonstra această tehnică. UI-ul sistemului este analizat mai întâi pentru a determina operațiile posibile. Acestea devin operatorii utilizați în problema planificării. Apoi se determină o stare inițială a sistemului și se specifică o stare de obiectiv pe care testerul o simte ar permite exercitarea sistemului. Sistemul de planificare determină o cale de la starea inițială la starea obiectivului, care devine planul de testare.
utilizarea unui planificator pentru a genera cazurile de testare are câteva avantaje specifice față de generarea manuală. Un sistem de planificare, prin însăși natura sa, generează soluții la problemele de planificare într-un mod care este foarte benefic pentru tester:
- planurile sunt întotdeauna valabile. Rezultatul sistemului este fie un plan valid și corect care folosește operatorii pentru a atinge starea obiectivului, fie niciun plan deloc. Acest lucru este benefic deoarece se poate pierde mult timp atunci când se creează manual o suită de testare din cauza cazurilor de testare nevalide pe care testerul le-a crezut că vor funcționa, dar nu.
- un sistem de planificare acordă atenție comenzii. Adesea, pentru a testa o anumită funcție, cazul de testare trebuie să fie complex și să urmeze o cale prin GUI unde operațiile sunt efectuate într-o anumită ordine. Când este făcut manual, acest lucru poate duce la erori și, de asemenea, poate fi destul de dificil și consumator de timp.
- în cele din urmă, și cel mai important, un sistem de planificare este orientat spre obiective. Testerul se concentrează generație suita de testare pe ceea ce este cel mai important, testarea funcționalității sistemului.
când creați manual o suită de testare, testerul se concentrează mai mult pe modul de testare a unei funcții (adică calea specifică prin GUI). Prin utilizarea unui sistem de planificare, calea este îngrijită și testerul se poate concentra pe ce funcție să testeze. Un beneficiu suplimentar al acestui lucru este că un sistem de planificare nu este restricționat în niciun fel la generarea căii și poate găsi adesea o cale care nu a fost niciodată anticipată de tester. Această problemă este una foarte importantă de combătut.
o altă metodă de generare a cazurilor de testare GUI simulează un utilizator începător. Un utilizator expert al unui sistem tinde să urmeze o cale directă și previzibilă printr-o interfață grafică, în timp ce un utilizator începător ar urma o cale mai aleatorie. Un utilizator novice este apoi probabil să exploreze mai multe stări posibile ale GUI decât un expert.
dificultatea constă în generarea de suite de testare care simulează utilizarea sistemului ‘novice’. Folosind algoritmi genetici au fost propuse pentru a rezolva această problemă. Căile Novice prin sistem nu sunt căi aleatorii. În primul rând, un utilizator novice va învăța în timp și, în general, nu va face aceleași greșeli în mod repetat și, în al doilea rând, un utilizator novice urmează un plan și probabil are cunoștințe de domeniu sau sistem.
algoritmii genetici funcționează după cum urmează: un set de ‘gene’ sunt create aleatoriu și apoi sunt supuse unor sarcini. Genele care îndeplinesc cel mai bine sarcina sunt păstrate, iar cele care nu sunt eliminate. Procesul se repetă din nou, genele supraviețuitoare fiind replicate, iar restul setului este completat cu mai multe gene aleatorii. În cele din urmă, o genă (sau un set mic de gene dacă există un anumit set de prag) va fi singura genă din set și este în mod natural cea mai potrivită pentru problema dată.
în cazul testării GUI, metoda funcționează după cum urmează. Fiecare genă este în esență o listă de valori întregi aleatorii cu o anumită lungime fixă. Fiecare dintre aceste gene reprezintă o cale prin GUI. De exemplu, pentru un anumit arbore de widget-uri, prima valoare din genă (fiecare valoare se numește alelă) ar selecta widgetul pe care să funcționeze, următoarele alele ar completa apoi intrarea în widget în funcție de numărul de intrări posibile în widget (de exemplu, o casetă listă derulantă ar avea o intrare…valoarea listei selectate). Succesul genelor este marcat de un criteriu care recompensează cel mai bun comportament de novice.
un sistem pentru a face această testare pentru sistemul de ferestre X, dar extensibil la orice sistem de ferestre este descris în. Sistemul X Window oferă funcționalitate (prin xserver și protocolul editorilor) pentru a trimite dinamic intrarea GUI și a obține ieșirea GUI din program fără a utiliza direct GUI. De exemplu, se poate apela XSendEvent() pentru a simula un clic pe un meniu derulant și așa mai departe. Acest sistem permite cercetătorilor să automatizeze crearea și testarea genelor, astfel încât pentru orice aplicație dată testată, poate fi creat un set de cazuri de testare a utilizatorilor începători.