een nieuwe aanpak voor het testen van suite-generatie, aangepast aan een CLI-techniek, omvat het gebruik van een planningssysteem. Planning is een goed bestudeerde techniek uit het domein artificial intelligence (AI) die probeert problemen op te lossen die vier parameters omvatten:
- een begintoestand,
- een doeltoestand,
- een verzameling operators, en
- een verzameling objecten om op te werken.
planningssystemen bepalen een pad van de begintoestand naar de doeltoestand met behulp van de operators. Als een eenvoudig voorbeeld van een planningsprobleem, gegeven twee woorden en een enkele operatie die een enkele letter in een woord vervangt door een ander, zou het doel kunnen zijn om het ene woord in het andere te veranderen.
in de auteurs gebruikte de planner IPP om deze techniek aan te tonen. De gebruikersinterface van het systeem wordt eerst geanalyseerd om de mogelijke bewerkingen te bepalen. Deze worden de exploitanten gebruikt in de planning probleem. Vervolgens wordt een initiële systeemstatus bepaald en wordt een doeltoestand gespecificeerd die de tester denkt mogelijk te maken om het systeem uit te oefenen. Het planningssysteem bepaalt een pad van de begintoestand naar de doeltoestand, die het testplan wordt.
het gebruik van een planner om de testcases te genereren heeft enkele specifieke voordelen ten opzichte van handmatige generatie. Een planningssysteem genereert door zijn aard oplossingen voor planningsproblemen op een manier die zeer gunstig is voor de tester:
- de plannen zijn altijd geldig. De output van het systeem is ofwel een geldig en correct plan dat de operators gebruikt om de doeltoestand te bereiken of helemaal geen plan. Dit is gunstig omdat er veel tijd kan worden verspild bij het handmatig maken van een test suite als gevolg van ongeldige testgevallen waarvan de tester dacht dat het zou werken, maar dat niet deed.
- een planningssysteem besteedt aandacht aan de bestelling. Vaak om een bepaalde functie te testen, moet de TestCASE complex zijn en een pad volgen door de GUI waar de bewerkingen in een specifieke volgorde worden uitgevoerd. Wanneer dit handmatig wordt gedaan, kan dit leiden tot fouten en kan ook heel moeilijk en tijdrovend zijn om te doen.
- ten slotte, en vooral, is een planningssysteem doelgericht. De tester is gericht test suite generatie op wat het belangrijkste is, het testen van de functionaliteit van het systeem.
bij het handmatig aanmaken van een testpakket is de tester meer gericht op het testen van een functie (d.w.z. het specifieke pad door de GUI). Door het gebruik van een planningssysteem wordt het pad verzorgd en kan de tester zich richten op welke functie te testen. Een bijkomend voordeel hiervan is dat een planningssysteem op geen enkele manier wordt beperkt bij het genereren van het pad en vaak een pad vindt dat nooit door de tester werd verwacht. Dit is een zeer belangrijk probleem om te bestrijden.
een andere methode voor het genereren van GUI-testcases simuleert een beginnende gebruiker. Een deskundige gebruiker van een systeem heeft de neiging om een direct en voorspelbaar pad te volgen door een GUI, terwijl een beginnende gebruiker een meer willekeurig pad zou volgen. Een beginnende gebruiker zal dan waarschijnlijk meer mogelijke toestanden van de GUI verkennen dan een expert.
het probleem ligt in het genereren van testsuites die het ‘beginnende’ systeemgebruik simuleren. Het gebruik van genetische algoritmen zijn voorgesteld om dit probleem op te lossen. Beginnende paden door het systeem zijn geen willekeurige paden. Ten eerste zal een beginnende gebruiker na verloop van tijd leren en over het algemeen niet dezelfde fouten herhaaldelijk maken, en ten tweede volgt een beginnende gebruiker een plan en heeft waarschijnlijk een domein-of systeemkennis.
genetische algoritmen werken als volgt: een reeks ‘genen’ wordt willekeurig gecreëerd en wordt vervolgens aan een bepaalde taak onderworpen. De genen die de taak het beste volbrengen worden bewaard en de genen die dat niet doen worden weggegooid. Het proces wordt opnieuw herhaald met de overlevende genen die worden gerepliceerd en de rest van de reeks wordt ingevuld met meer willekeurige genen. Uiteindelijk zal één gen (of een kleine set van genen als er een bepaalde drempel is ingesteld) het enige gen in de set zijn en is natuurlijk het beste geschikt voor het gegeven probleem.
bij GUI-tests werkt de methode als volgt. Elk gen is hoofdzakelijk een lijst van willekeurige geheelwaarden van één of andere vaste lengte. Elk van deze genen vertegenwoordigt een pad door de GUI. Bijvoorbeeld, voor een bepaalde boom van widgets, zou de eerste waarde in het gen (elke waarde wordt een allel genoemd) Het widget selecteren om op te werken, de volgende allelen zouden dan input voor het widget invullen afhankelijk van het aantal mogelijke ingangen voor het widget (bijvoorbeeld een pull down keuzelijst zou één ingang hebben…de geselecteerde lijstwaarde). Het succes van de genen wordt beoordeeld aan de hand van een criterium dat het beste ‘beginnende’ gedrag beloont.
een systeem om dit te testen voor het X window systeem, maar uitbreidbaar voor elk Window systeem wordt beschreven in. Het X Window systeem biedt functionaliteit (via XServer en het editors ‘ protocol) om dynamisch GUI input te sturen naar en GUI output van het programma te krijgen zonder direct gebruik te maken van de GUI. Bijvoorbeeld, men kan xsendevent() aanroepen om een klik op een pull-down menu te simuleren, enzovoort. Dit systeem staat onderzoekers toe om de gencreatie en het testen te automatiseren zodat voor om het even welke bepaalde toepassing onder test, kan een reeks beginnende gebruikerstestgevallen worden gecreeerd.