Ett ramverk för testautomatisering är en uppsättning verktyg som används för att utföra automatiserad mjukvarutestning. Ramverk för testautomatisering ger betydande fördelar jämfört med manuell testning och används ofta i snabb mjukvaruutveckling. Dessa ramverk tillåter mjukvaruutvecklare att skapa tester, utföra tester och analysera testresultat. Ett ramverk för testautomatisering kan drivas av kod, data, ett grafiskt användargränssnitt (GUI) eller en kombination av dessa.
Ramverk för testautomatisering krävs för att möta behoven av snabb mjukvaruutveckling. I den klassiska livscykeln för mjukvaruutveckling för vattenfall var mjukvarutestning en diskret fas som utfördes efter implementering, eller kodning. Som sådana var tester som utfördes av människor typiska.
Många utvecklingsteam har ersatt vattenfallsmodellen med olika agila mjukvaruutvecklingsmetoder, som vanligtvis kräver snabb, iterativ utveckling. Den snabba utvecklingen har skapat ett behov av snabba tester. Ett ramverk för testautomatisering tillåter ett mjukvaruteam att utföra frekventa, automatiserade tester på en kodbas. Till exempel, snarare än att kräva en separat testfas efter utvecklingen, kan ett team som använder ett ramverk för testautomatisering välja att köra en hel uppsättning tester över natten, såväl som mindre bitar av automatiserade tester under dagen när ändringar görs i källan koda.
Den vanligaste typen av ramverk är det koddrivna ramverket, som används för att utföra white-box-testning. Koddrivna ramverk kräver att utvecklare skriver små kodavsnitt, i form av enhetstester, för att testa mjukvarans funktionalitet eller prestanda. Utvecklare som använder koddrivna ramverk måste se till att skriva sin programvara på ett sätt som är testbart – det vill säga koden måste vara modulariserad så att ett enhetstest kan anropa ett kodavsnitt och verifiera resultatet. Dessa ramverk inkluderar vanligtvis en implementering av xUnit, där ”x” varierar beroende på vilket programmeringsspråk som testas.
GUI-drivna testramar används för att utföra black-box-testning, med hjälp av ett mjukvaruverktyg som en användare skulle göra, genom mus- och tangentbordsingångar. De kan bestå av skript skrivna av utvecklare för att utöva en rad funktioner, eller så kan de bestå av verktygsgenererade skript, till exempel spela in och spela upp skript. En potentiell nackdel med dessa ramverk är att skriptet kommer att gå sönder när GUI ändras. Vissa ramverk för GUI-automatisering kan generera ett skript som kan redigeras av en utvecklare i händelse av GUI-ändringar, och andra kan kräva att användaren skapar en ny inspelnings-och-uppspelningssession.
Datadrivna testramverk utför mjukvarutestning med hjälp av data, och dessa tester fungerar vanligtvis med datatabeller som anger både indata och utdata. Data kan förvaras på olika platser, såsom databaser, kalkylblad eller textfiler. Skript kan skrivas för att exekvera mjukvarumetoder med indata som parametrar och för att validera mjukvarumetodens returvärde mot utdata. Allt annat som kan varieras, såsom miljön under vilken testet körs, kan också lagras med data och separeras från testskriptet. En fördel med dessa ramverk är separeringen av data och logik, vilket ofta leder till lägre långsiktigt underhåll.