Modellbaserad testning - Model-based testing

Image
Allmän modellbaserad testinställning

Modellbaserad testning är en tillämpning av modellbaserad design för att designa och eventuellt också utföra artefakter för att utföra programvarutestning eller systemtestning . Modeller kan användas för att representera önskat beteende för ett system under test (SUT) eller för att representera teststrategier och en testmiljö. Bilden till höger visar det tidigare tillvägagångssättet.

En modell som beskriver en SUT är vanligtvis en abstrakt, delvis presentation av SUT: s önskade beteende. Testfall härledda från en sådan modell är funktionella tester på samma abstraktionsnivå som modellen. Dessa testfall kallas kollektivt som en abstrakt testsvit . En abstrakt testsvit kan inte köras direkt mot en SUT eftersom sviten är på fel abstraktionsnivå. En körbar testsvit måste härledas från en motsvarande abstrakt testsvit. Den körbara testsviten kan kommunicera direkt med systemet som testas. Detta uppnås genom att kartlägga abstrakta testfall till konkreta testfall som är lämpliga för utförande. I vissa modellbaserade testmiljöer innehåller modeller tillräckligt med information för att generera körbara testsviter direkt. I andra måste element i den abstrakta testsviten mappas till specifika uttalanden eller metodanrop i programvaran för att skapa en konkret testsvit . Detta kallas för att lösa "kartläggningsproblemet". När det gäller online-testning (se nedan) finns abstrakta testsviter endast begreppsmässigt men inte som uttryckliga artefakter.

Tester kan härledas från modeller på olika sätt. Eftersom testning vanligtvis är experimentell och baserad på heuristik, finns det inget känt enda bästa tillvägagångssätt för testderivation. Det är vanligt att konsolidera alla testderivationsrelaterade parametrar i ett paket som ofta kallas "testkrav", "teständamål" eller till och med "användningsfall (er)". Detta paket kan innehålla information om de delar av en modell som bör fokuseras på, eller villkoren för avslutningstestning (teststoppningskriterier).

Eftersom testsviter härrör från modeller och inte från källkod ses modellbaserad testning vanligtvis som en form av svartboxtestning .

Modellbaserad testning av komplexa mjukvarusystem är fortfarande ett område under utveckling.

Modeller

Speciellt inom Model Driven Engineering eller i Object Management Group ( OMG : s) modellstyrda arkitektur byggs modeller före eller parallellt med motsvarande system. Modeller kan också konstrueras från färdiga system. Typiska modelleringsspråk för testgenerering inkluderar UML , SysML , vanliga programmeringsspråk, ändliga maskinnoteringar och matematiska formalismer som Z , B ( Event-B ), Alloy eller Coq .

Implementera modellbaserad testning

Image
Ett exempel på ett modellbaserat testningsflöde (offlinegenerering av testfall). IXIT hänvisar till extra information om implementering och hänvisar till information som behövs för att konvertera en abstrakt testsvit till en körbar. Vanligtvis innehåller IXIT information om teststammen, datakartningar och SUT-konfiguration.

Det finns olika kända sätt att distribuera modellbaserad testning, som inkluderar onlinetestning , offlinegenerering av körbara tester och offlinegenerering av manuellt distribuerbara tester .

Onlinetestning innebär att ett modellbaserat testverktyg ansluts direkt till en SUT och testar det dynamiskt.

Offlinegenerering av körbara tester innebär att ett modellbaserat testverktyg genererar testfall som datorläsbara tillgångar som senare kan köras automatiskt. till exempel en samling Python- klasser som förkroppsligar den genererade testlogiken.

Offlinegenerering av manuellt distribuerbara tester innebär att ett modellbaserat testverktyg genererar testfall som mänskligt läsbara tillgångar som senare kan hjälpa till med manuell testning. till exempel ett PDF-dokument på ett mänskligt språk som beskriver de genererade teststegen.

Hämta tester algoritmiskt

Effektiviteten i modellbaserad testning beror främst på potentialen för automatisering som den erbjuder. Om en modell är maskinläsbar och formell i den utsträckning den har en väldefinierad beteendestolkning kan testfall i princip härledas mekaniskt.

Från finite state-maskiner

Ofta översätts modellen till eller tolkas som en slutlig tillståndsautomat eller ett tillståndsövergångssystem . Denna automat representerar de möjliga konfigurationerna för systemet som testas. För att hitta testfall söks automaten efter körbara sökvägar. En möjlig exekveringsväg kan fungera som ett testfall. Denna metod fungerar om modellen är deterministisk eller kan omvandlas till en deterministisk. Värdefulla icke-nominella testfall kan erhållas genom att använda ospecificerade övergångar i dessa modeller.

Beroende på komplexiteten hos det testade systemet och motsvarande modell kan antalet banor vara mycket stort på grund av den enorma mängden möjliga konfigurationer av systemet. För att hitta testfall som kan täcka ett lämpligt men ändligt antal vägar krävs testkriterier för att styra valet. Denna teknik föreslogs först av Offutt och Abdurazik i tidningen som startade modellbaserad testning. Flera tekniker för generering av testfall har utvecklats och kartläggs av Rushby. Testkriterierna beskrivs i termer av allmänna diagram i testhandboken.

Sats bevisar

Satsprövning användes ursprungligen för automatisk provning av logiska formler. För modellbaserade testmetoder modelleras systemet av en uppsättning predikat som anger systemets beteende. För att härleda testfall delas modellen upp i ekvivalensklasser över giltig tolkning av uppsättningen predikat som beskriver systemet som testas. Varje klass beskriver ett visst systembeteende och kan därför fungera som ett testfall. Den enklaste partitioneringen är med den disjunktiva normala formen, där de logiska uttrycken som beskriver systemets beteende omvandlas till den disjunktiva normala formen .

Begränsningslogisk programmering och symbolisk körning

Begränsningsprogrammering kan användas för att välja testfall som uppfyller specifika begränsningar genom att lösa en uppsättning begränsningar över en uppsättning variabler. Systemet beskrivs med hjälp av begränsningar. Att lösa uppsättningen av begränsningar kan göras med booleska lösare (t.ex. SAT-lösare baserat på det booleska tillfredsställande problemet ) eller genom numerisk analys , som Gauss eliminering . En lösning som hittas genom att lösa uppsättningen av begränsningsformler kan fungera som testfall för motsvarande system.

Begränsningsprogrammering kan kombineras med symbolisk körning. I detta tillvägagångssätt körs en systemmodell symboliskt, dvs samlar in data begränsningar över olika styrvägar, och använder sedan begränsningsprogrammeringsmetoden för att lösa begränsningarna och producera testfall.

Modellkontroll

Modellkontroller kan också användas för att generera testfall. Ursprungligen utvecklades modellkontroll som en teknik för att kontrollera om en egenskap hos en specifikation är giltig i en modell. När den används för testning tillhandahålls en modell av systemet som testas och en egenskap att testa till modellkontrollen. Om denna egenskap är giltig i modellen upptäcker modellkontrollen vittnen och motexempel inom proceduren för korrektur. Ett vittne är en väg där egendomen är nöjd, medan ett motexempel är en väg i utförandet av modellen där egendomen kränks. Dessa vägar kan återigen användas som testfall.

Testa fallgenerering med hjälp av en Markov-kedjetestmodell

Markov-kedjor är ett effektivt sätt att hantera modellbaserad testning. Testmodeller som realiserats med Markov-kedjor kan förstås som en användningsmodell: den kallas Usage / Statistical Model Based Testing. Användningsmodeller, så Markov-kedjor, är huvudsakligen konstruerade av två artefakter: Finite State Machine (FSM) som representerar alla möjliga användningsscenarier för det testade systemet och Operational Profiles (OP) som kvalificerar FSM att representera hur systemet är eller kommer att användas statistiskt. Den första (FSM) hjälper till att veta vad som kan testas eller har testats och den andra (OP) hjälper till att få fram operativa testfall. Användning / statistisk modellbaserad testning utgår från fakta som inte är möjligt att uttömmande testa ett system och som fel kan uppstå med en mycket låg hastighet. Detta tillvägagångssätt erbjuder ett pragmatiskt sätt att statiskt härleda testfall som är inriktade på att förbättra tillförlitligheten hos det testade systemet. Användning / statistisk modellbaserad testning utvidgades nyligen till att gälla för inbäddade programvarusystem.

Se även

Referenser

Vidare läsning