en ny tilgang til test suite generation, tilpasset fra en CLI teknik indebærer anvendelse af et planlægningssystem. Planlægning er en velstuderet teknik fra kunstig intelligens (AI) domæne, der forsøger at løse problemer, der involverer fire parametre:
- en starttilstand,
- en måltilstand,
- et sæt operatorer og
- et sæt objekter, der skal opereres på.
planlægningssystemer bestemmer en sti fra den oprindelige tilstand til måltilstanden ved hjælp af operatørerne. Som et simpelt eksempel på et planlægningsproblem, givet to ord og en enkelt operation, der erstatter et enkelt bogstav i et ord med et andet, kan målet være at ændre et ord til et andet.
i forfatterne brugte planner IPP til at demonstrere denne teknik. Systemets brugergrænseflade analyseres først for at bestemme de mulige operationer. Disse bliver de operatører, der bruges i planlægningsproblemet. Dernæst bestemmes en indledende systemtilstand, og en måltilstand specificeres, som testeren føler ville tillade udøvelse af systemet. Planlægningssystemet bestemmer en sti fra den oprindelige tilstand til måltilstanden, som bliver testplanen.
brug af en planlægger til at generere testcases har nogle specifikke fordele i forhold til manuel generering. Et planlægningssystem genererer i sagens natur løsninger på planlægningsproblemer på en måde, der er meget gavnlig for testeren:
- planerne er altid gyldige. Systemets output er enten en gyldig og korrekt plan, der bruger operatørerne til at nå måltilstanden eller slet ingen plan. Dette er gavnligt, fordi meget tid kan spildes, når man manuelt opretter en testpakke på grund af ugyldige testsager, som testeren troede ville fungere, men ikke gjorde.
- et planlægningssystem lægger vægt på ordren. Ofte for at teste en bestemt funktion skal testsagen være kompleks og følge en sti gennem GUI, hvor operationerne udføres i en bestemt rækkefølge. Når det gøres manuelt, kan dette føre til fejl og kan også være ret vanskeligt og tidskrævende at gøre.
- endelig, og vigtigst af alt, er et planlægningssystem målrettet. Testeren fokuserer test suite generation på, hvad der er vigtigst, teste funktionaliteten af systemet.
når man manuelt opretter en testpakke, er testeren mere fokuseret på, hvordan man tester en funktion (dvs. den specifikke sti gennem GUI). Ved at bruge et planlægningssystem bliver stien taget hånd om, og testeren kan fokusere på, hvilken funktion der skal testes. En yderligere fordel ved dette er, at et planlægningssystem ikke er begrænset på nogen måde, når man genererer stien og ofte kan finde en sti, som testeren aldrig havde forventet. Dette problem er meget vigtigt at bekæmpe.
en anden metode til generering af GUI-testsager simulerer en nybegynderbruger. En ekspertbruger af et system har en tendens til at følge en direkte og forudsigelig sti gennem en GUI, mens en nybegynderbruger ville følge en mere tilfældig sti. En nybegynderbruger vil sandsynligvis undersøge flere mulige tilstande i GUI end en ekspert.
vanskeligheden ligger i at generere testsuiter, der simulerer ‘novice’ systembrug. Brug af genetiske algoritmer er blevet foreslået for at løse dette problem. Novice stier gennem systemet er ikke tilfældige stier. For det første lærer en nybegynderbruger over tid og begår generelt ikke de samme fejl gentagne gange, og for det andet følger en nybegynderbruger en plan og har sandsynligvis noget domæne-eller systemkendskab.
genetiske algoritmer fungerer som følger: et sæt ‘gener’ oprettes tilfældigt og udsættes derefter for en eller anden opgave. De gener, der udfører opgaven bedst, holdes, og dem, der ikke kasseres. Processen gentages igen med de overlevende gener, der replikeres, og resten af sættet udfyldes med mere tilfældige gener. Til sidst vil et gen (eller et lille sæt gener, hvis der er noget tærskelsæt) være det eneste gen i sættet og er naturligvis den bedste pasform til det givne problem.
i tilfælde af GUI-test fungerer metoden som følger. Hvert gen er i det væsentlige en liste over tilfældige heltalværdier af en vis fast længde. Hvert af disse gener repræsenterer en sti gennem GUI. For eksempel, for et givet træ af kontroller, den første værdi i genet (hver værdi kaldes en allel) ville vælge den kontrol, der skal betjenes, de følgende alleler ville derefter udfylde input til kontrollen afhængigt af antallet af mulige input til kontrollen (for eksempel en rullemenu liste boks ville have en input…den valgte listeværdi). Genernes succes er scoret af et kriterium, der belønner den bedste ‘novice’ adfærd.
et system til at udføre denne test for vinduessystemet, men kan udvides til ethvert vinduessystem, er beskrevet i. Systemet giver funktionalitet til dynamisk at sende GUI input til og få GUI output fra programmet uden direkte at bruge GUI. For eksempel kan man ringe til Ksendevent() for at simulere et klik på en rullemenu osv. Dette system gør det muligt for forskere at automatisere genoprettelsen og testen, så for en given applikation under test kan der oprettes et sæt nybegynderbrugertestsager.