en ny metod för att testa svit generation, anpassad från en CLI-teknik innebär att man använder ett planeringssystem. Planering är en väl studerad teknik från domänen artificiell intelligens (AI) som försöker lösa problem som involverar fyra parametrar:
- ett initialtillstånd,
- ett måltillstånd,
- en uppsättning operatorer och
- en uppsättning objekt att arbeta på.
planeringssystem bestämmer en väg från det ursprungliga tillståndet till måltillståndet med hjälp av operatörerna. Som ett enkelt exempel på ett planeringsproblem, givet två ord och en enda operation som ersätter en enda bokstav i ett ord med en annan, kan målet vara att ändra ett ord till ett annat.
i författarna använde planeraren IPP för att demonstrera denna teknik. Systemets användargränssnitt analyseras först för att bestämma möjliga operationer. Dessa blir de operatörer som används i planeringsproblemet. Nästa en initial systemtillstånd bestäms, och ett mål tillstånd specificeras att testaren känner skulle tillåta utövandet av systemet. Planeringssystemet bestämmer en väg från det ursprungliga tillståndet till måltillståndet, vilket blir testplanen.
att använda en planerare för att generera testfallen har vissa specifika fördelar jämfört med manuell generation. Ett planeringssystem genererar till sin natur lösningar på planeringsproblem på ett sätt som är mycket fördelaktigt för testaren:
- planerna är alltid giltiga. Systemets utgång är antingen en giltig och korrekt plan som använder operatörerna för att uppnå målstaten eller ingen plan alls. Detta är fördelaktigt eftersom mycket tid kan slösas bort när man manuellt skapar en testsvit på grund av ogiltiga testfall som testaren trodde skulle fungera men inte gjorde.
- ett planeringssystem uppmärksammar beställningen. Ofta för att testa en viss funktion måste testfallet vara komplext och följa en väg genom GUI där operationerna utförs i en specifik ordning. När det görs manuellt kan detta leda till fel och kan också vara ganska svårt och tidskrävande att göra.
- slutligen, och viktigast av allt, är ett planeringssystem målinriktat. Testaren fokuserar testsvitgenerering på det som är viktigast, testa systemets funktionalitet.
när man manuellt skapar en testsvit är testaren mer fokuserad på hur man testar en funktion (dvs. den specifika sökvägen genom GUI). Genom att använda ett planeringssystem tas vägen om hand och testaren kan fokusera på vilken funktion som ska testas. En ytterligare fördel med detta är att ett planeringssystem inte är begränsat på något sätt när man genererar vägen och ofta kan hitta en väg som aldrig förväntades av testaren. Detta problem är mycket viktigt att bekämpa.
en annan metod för att generera GUI-testfall simulerar en nybörjare. En expertanvändare av ett system tenderar att följa en direkt och förutsägbar väg genom ett GUI, medan en nybörjare skulle följa en mer slumpmässig väg. En nybörjare är då sannolikt att utforska fler möjliga tillstånd av GUI än en expert.
svårigheten ligger i att generera testsviter som simulerar ’nybörjare’ systemanvändning. Att använda genetiska algoritmer har föreslagits för att lösa detta problem. Nybörjare vägar genom systemet är inte slumpmässiga vägar. För det första kommer en nybörjare att lära sig över tiden och kommer i allmänhet inte att göra samma misstag upprepade gånger, och för det andra följer en nybörjare en plan och har förmodligen någon domän-eller systemkunskap.
genetiska algoritmer fungerar enligt följande: en uppsättning ’gener’ skapas slumpmässigt och utsätts sedan för någon uppgift. De gener som slutför uppgiften bäst hålls och de som inte kasseras. Processen upprepas igen med de överlevande generna som replikeras och resten av uppsättningen fylls i med mer slumpmässiga gener. Så småningom kommer en gen (eller en liten uppsättning gener om det finns någon tröskeluppsättning) att vara den enda genen i uppsättningen och passar naturligtvis bäst för det givna problemet.
vid GUI-testning fungerar metoden enligt följande. Varje gen är i huvudsak en lista över slumpmässiga heltalvärden med viss fast längd. Var och en av dessa gener representerar en väg genom GUI. Till exempel, för ett givet träd av widgets, skulle det första värdet i genen (varje värde kallas en allel) välja widgeten att fungera på, följande alleler skulle sedan fylla i inmatning till widgeten beroende på antalet möjliga ingångar till widgeten (till exempel skulle en nedrullningslistruta ha en ingång…det valda listvärdet). Genernas framgång görs av ett kriterium som belönar det bästa ’nybörjare’ beteendet.
ett system för att göra denna testning för X window system, men kan utökas till alla fönstersystem beskrivs i. X Window-systemet ger funktionalitet (via XServer och redaktörsprotokollet) för att dynamiskt skicka GUI-inmatning till och få GUI-utmatning från programmet utan att direkt använda GUI. Till exempel kan man ringa XSendEvent() för att simulera ett klick på en rullgardinsmeny och så vidare. Detta system gör det möjligt för forskare att automatisera genskapande och testning så för en viss applikation som testas kan en uppsättning testfall för nybörjare skapas.