Funktionstestning är en typ av testning som syftar till att fastställa om varje applikationsfunktion fungerar enligt programvarukraven. Varje funktion jämförs med motsvarande krav för att fastställa om dess utdata överensstämmer med slutanvändarens förväntningar. Testningen görs genom att ge exempel på inmatningar, fånga upp resulterande utmatningar och verifiera att faktiska utmatningar är desamma som förväntade utmatningar.
Några exempel på funktionell testning är:
Till skillnad från icke-funktionell testning handlar funktionell testning inte om att undersöka kvaliteten, säkerheten eller prestandan hos applikationens underliggande källkod. Det mäter inte hastighet, skalbarhet och tillförlitlighet.
Funktionstestning fokuserar snarare på resultatet av bearbetningen och inte på mekaniken i bearbetningen, och avgör om applikationen uppfyller användarnas grundläggande minimiförväntningar.
I den meningen är definitionen av funktionell testning nästan synonym med black-box-testning, medan white-box-testning å andra sidan oftare är en egenskap hos icke-funktionella tester.
En funktionstestplan följer vanligtvis nedanstående sekvens:
Identifiera testmålen
Funktionella testmål är de funktioner som programvaran förväntas ha baserat på projektkraven. Testmålen inkluderar validering av att applikationen fungerar som den var avsedd att göra och att den hanterar fel och oväntade scenarier på ett elegant sätt.
Skapa testscenarier
Ta fram en lista över alla möjliga (eller åtminstone alla de viktigaste) testscenarierna för en viss funktion. Testscenarierna beskriver de olika sätt som funktionen kommer att användas på. För en betalningsmodul kan testscenarierna t.ex. omfatta flera valutor, hantering av ogiltiga eller utgångna kortnummer och generering av ett meddelande när transaktionen har slutförts.
Skapa testdata
Skapa testdata som simulerar normala användningsförhållanden baserat på de testscenarier som du har identifierat. Du kan mata in testdata manuellt (t.ex. från ett MS-Excel-kalkylblad eller en utskrift) eller automatiskt via ett skript eller testverktyg som läser och matar in data från en databas, en plattfil, XML eller ett kalkylblad. Varje uppsättning indata bör också ha tillhörande data som beskriver det förväntade resultat som indata ska generera.
Utforma testfall
Skapa testfall baserat på de olika önskade resultaten för testinmatningarna. Om du t.ex. anger ett ogiltigt kreditkortsnummer ska programmet visa ett meningsfullt felmeddelande.
Exekvera testfallen
Kör testfallen genom applikationen och jämför faktiska resultat med förväntade resultat. Om det faktiska och det förväntade resultatet skiljer sig åt har funktionen inte klarat testet och en defekt bör registreras.
Överväga, spåra och åtgärda defekter
När en defekt har identifierats bör den registreras i ett formellt spårningssystem som är tillgängligt för hela projektgruppen. Nödvändiga ändringar ska göras i applikationen och testfallet ska utföras igen för att bekräfta lösningen innan en defekt markeras som stängd.
Verktyg för automatisering av funktionella tester kan interagera med användargränssnittet i den applikation som testas. De kan identifiera objekt på skärmen, t.ex. listboxar, textboxar och knappar, och kan göra val, mata in data och trycka på dem.
Många verktyg för automatisering av funktionstester innehåller en inspelare som "tittar på" användaren när denne interagerar med en applikation och dess objekt på skärmen, registrerar de data som användaren matar in i systemet och de åtgärder som användaren utför, t.ex. trycker på knappar eller väljer menyer. Dessa åtgärder kan sedan spelas upp igen, med hjälp av de objekt, data och åtgärder som registrerats under inspelningen, för att replikera användarens aktiviteter. Resultaten av dessa åtgärder noteras av testverktyget och jämförs med de förväntade resultat som definierats av automationsingenjören för att avgöra om testet är godkänt eller inte.
Ingenjörer inom funktionell testautomatisering kan bygga sina tester steg för steg med hjälp av de objekt som verktyget känner igen, eller så kan de börja med en inspelning, anpassa stegen och parametrisera data för att generalisera dem och göra det möjligt att köra tester i olika miljöer, inklusive olika webbläsare och mobila enheter.
Ledande testautomatiseringsverktyg innehåller idag funktioner för artificiellIntelligence (AI) som använder avancerade tekniker som maskininlärning, datorseende, neurala nätverk och bearbetning av naturligt språk. Detta hjälper till att identifiera objekt på skärmen på samma sätt som en människa gör, interagera med och manipulera objekt på ett naturligt sätt och göra det möjligt att skriva tester på vanlig engelska.
AI-baserad automatisering av funktionella tester har visat sig minska tiden för att skapa tester, öka testtäckningen, öka testtillgångarnas motståndskraft och minska underhållet av tester.
Skapa testfall tidigt
Vänta inte på att kodningen av applikationen eller modulen ska vara klar innan du börjar skapa testfall. Det är i de tidiga faserna av projektet som användarkraven är som färskast. Du kan alltid ändra testfallen senare om det behövs.
Automatisera
Funktionstestning kan vara en mödosam, repetitiv och tidskrävande process. Ju mer du automatiserar, desto snabbare kan du säkerställa önskad funktionalitet eller identifiera och korrigera defekter, och desto mer sparar du in på testtid och kostnader i appleveransprocessen. Det kanske inte är möjligt, eller ens önskvärt, att automatisera alla testfall, men bara genom att få bort de viktigaste testfallen från den manuella listan kan du avsevärt förbättra din test-ROI.
Förstå användarens tankeprocess
Funktionstestare måste ha en djup förståelse för slutanvändarens tankeprocess. Det finns ofta olika typer av användare för varje applikation (köpare, säljare, administratörer, dataregistrerare, chefer etc.). De olika typerna av användare och deras typiska navigering i applikationen måste beaktas i varje testplan.
Prioritera
Testare har begränsad tid och begränsade resurser. Alla funktioner kan inte testas. Vissa applikationsfunktioner är högprioriterade och måste därför prioriteras framför lägre prioriterade funktioner.
Även om Functional Testing kan vara en utmaning för många organisationer är fördelarna med en korrekt automatiserad QA-organisation för funktionstestning långt större än dessa utmaningar, och att utnyttja kraften i beprövade verktyg för funktionstestning är det bästa sättet att göra det på. Ta reda på hur OpenText™ Functional Test Automation kan hjälpa dig att få ut optimalt värde av din funktionella testning.
Snabba upp testautomatiseringen med hjälp av AI
Engagera dina utvecklare med integrerad, automatiserad shift-left-testning
Utveckla, felsök, övervaka och optimera applikationer var du än befinner dig
Snabbare programvarutestning med realistiska API:er och simuleringar
Leverera bättre programvara - snabbare - med AI-driven DevOps-automatisering, testning och kvalitet