Modelbaseret test - Model-based testing

Image
Generel modelbaseret testindstilling

Modelbaseret test er en anvendelse af modelbaseret design til at designe og eventuelt også udføre artefakter til at udføre softwaretest eller systemtest . Modeller kan bruges til at repræsentere den ønskede opførsel af et system under test (SUT) eller til at repræsentere teststrategier og et testmiljø. Billedet til højre viser den tidligere tilgang.

En model, der beskriver en SUT, er normalt en abstrakt, delvis præsentation af SUT's ønskede opførsel. Test tilfælde afledt af en sådan model er funktionelle tests på samme abstraktionsniveau som modellen. Disse testsager kaldes samlet en abstrakt testsuite . En abstrakt testpakke kan ikke udføres direkte mod en SUT, fordi pakken er på det forkerte abstraktionsniveau. En eksekverbar testpakke skal stamme fra en tilsvarende abstrakt testpakke. Den eksekverbare testpakke kan kommunikere direkte med det testede system. Dette opnås ved at kortlægge de abstrakte testsager til konkrete testsager, der er egnede til udførelse. I nogle modelbaserede testmiljøer indeholder modeller nok information til at generere eksekverbare testpakker direkte. I andre skal elementer i den abstrakte testpakke kortlægges til specifikke udsagn eller metodekald i softwaren for at oprette en konkret testpakke . Dette kaldes at løse "kortlægningsproblemet". I tilfælde af online test (se nedenfor) findes abstrakte testsuiter kun konceptuelt, men ikke som eksplicitte artefakter.

Test kan udledes fra modeller på forskellige måder. Fordi test normalt er eksperimentel og baseret på heuristik, er der ingen kendt enkelt bedste metode til testafledning. Det er almindeligt at samle alle testafledningsrelaterede parametre i en pakke, der ofte kaldes "testkrav", "testformål" eller endda "use case (s)". Denne pakke kan indeholde oplysninger om de dele af en model, der skal fokuseres på, eller betingelserne for færdigprøvning (teststopkriterier).

Fordi testsuiter stammer fra modeller og ikke fra kildekode, betragtes modelbaseret test normalt som en form for black-box-test .

Modelbaseret testning af komplekse softwaresystemer er stadig et felt under udvikling.

Modeller

Især i Model Driven Engineering eller i Object Management Groups ( OMGs ) model-drevne arkitektur , er modeller bygget før eller parallelt med de tilsvarende systemer. Modeller kan også konstrueres fra færdige systemer. Typiske modelleringssprog til testgenerering inkluderer UML , SysML , almindelige programmeringssprog, endelige maskinnoteringer og matematiske formalismer som Z , B ( Event-B ), Alloy eller Coq .

Implementering af modelbaseret test

Image
Et eksempel på en modelbaseret testworkflow (offline test case generation). IXIT refererer til ekstra information om implementering og henviser til de oplysninger, der er nødvendige for at konvertere en abstrakt testpakke til en eksekverbar. Typisk indeholder IXIT information om testbælte, datatilknytning og SUT-konfiguration.

Der er forskellige kendte måder at implementere modelbaseret test på, som inkluderer online test , offline generation af eksekverbare tests og offline generation af manuelt implementerbare tests .

Onlinetest betyder, at et modelbaseret testværktøj forbinder direkte til en SUT og tester det dynamisk.

Offline-generering af eksekverbare tests betyder, at et modelbaseret testværktøj genererer testcases som computerlæsbare aktiver, der senere kan køres automatisk. for eksempel en samling af Python- klasser, der inkorporerer den genererede testlogik.

Offline-generering af manuelt implementerbare tests betyder, at et modelbaseret testværktøj genererer testcases som menneskeligt læsbare aktiver, der senere kan hjælpe med manuel test; for eksempel et PDF-dokument på et menneskeligt sprog, der beskriver de genererede testtrin.

Udledning af test algoritmisk

Effektiviteten af ​​modelbaseret testning skyldes primært det potentiale for automatisering, det giver. Hvis en model er maskinlæsbar og formel i den udstrækning, at den har en veldefineret adfærdstolkning, kan testsager i princippet udledes mekanisk.

Fra finite state-maskiner

Ofte oversættes modellen til eller fortolkes som en endelig tilstandsautomat eller et tilstandsovergangssystem . Denne automat repræsenterer de mulige konfigurationer af det testede system. For at finde testtilfælde søges automaten efter eksekverbare stier. En mulig eksekveringssti kan tjene som en testsag. Denne metode fungerer, hvis modellen er deterministisk eller kan omdannes til en deterministisk. Værdifulde ikke-nominelle testtilfælde kan opnås ved at udnytte uspecificerede overgange i disse modeller.

Afhængig af kompleksiteten af ​​det testede system og den tilsvarende model kan antallet af stier være meget stort på grund af den enorme mængde mulige konfigurationer af systemet. For at finde testsager, der kan dække et passende, men endeligt antal stier, er testkriterier nødvendige for at styre valget. Denne teknik blev først foreslået af Offutt og Abdurazik i papiret, der startede modelbaseret test. Flere teknikker til generering af testsager er blevet udviklet og undersøges af Rushby. Testkriterier er beskrevet i form af generelle grafer i testbogen.

Sætning, der beviser

Teorem-bevisning blev oprindeligt brugt til automatisk påvisning af logiske formler. For modelbaserede testtilgange modelleres systemet af et sæt prædikater , der specificerer systemets adfærd. For at udlede testsager er modellen opdelt i ækvivalensklasser over den gyldige fortolkning af sættet med prædikater, der beskriver systemet under test. Hver klasse beskriver en bestemt systemadfærd og kan derfor fungere som en testcase. Den enkleste partitionering er med den disjunktive normale formtilgang, hvor de logiske udtryk, der beskriver systemets opførsel, omdannes til den disjunktive normale form .

Begrænsningslogisk programmering og symbolsk udførelse

Begrænsningsprogrammering kan bruges til at vælge testtilfælde, der opfylder specifikke begrænsninger ved at løse et sæt begrænsninger over et sæt variabler. Systemet beskrives ved hjælp af begrænsninger. Løsning af sæt af begrænsninger kan gøres ved hjælp af boolske opløsere (f.eks. SAT-opløsere baseret på det boolske tilfredshedsproblem ) eller ved numerisk analyse , som den Gaussiske eliminering . En løsning, der findes ved at løse sæt af begrænsningsformler, kan tjene som testsager for det tilsvarende system.

Begrænsningsprogrammering kan kombineres med symbolsk udførelse. I denne fremgangsmåde udføres en systemmodel symbolsk, dvs. indsamling af databegrænsninger over forskellige kontrolstier og derefter anvendelse af begrænsningsprogrammeringsmetoden til at løse begrænsningerne og producere testsager.

Modelkontrol

Modelbrikker kan også bruges til generering af testsager. Oprindeligt blev modelkontrol udviklet som en teknik til at kontrollere, om en egenskab ved en specifikation er gyldig i en model. Når det bruges til test, leveres modelmodellen til det testede system og en egenskab, der skal testes. Hvis denne egenskab er gyldig i modellen inden for korrekturproceduren, registrerer modelkontrolleren vidner og modeksempler. Et vidne er en sti, hvor ejendommen er tilfreds, mens en modeksempel er en sti i udførelsen af ​​den model, hvor ejendommen krænkes. Disse stier kan igen bruges som testtilfælde.

Test casegenerering ved hjælp af en Markov-kædetestmodel

Markov-kæder er en effektiv måde at håndtere modelbaseret test på. Testmodeller realiseret med Markov-kæder kan forstås som en brugsmodel: den kaldes Usage / Statistical Model Based Testing. Brugsmodeller, så Markov-kæder, er hovedsageligt konstrueret af 2 artefakter: Finite State Machine (FSM), der repræsenterer alle mulige brugsscenarier for det testede system og de operationelle profiler (OP), der kvalificerer FSM til at repræsentere, hvordan systemet er eller vil bruges statistisk. Den første (FSM) hjælper med at vide, hvad der kan eller er blevet testet, og den anden (OP) hjælper med at udlede operationelle testsager. Brug / statistisk modelbaseret test starter med de faktiske omstændigheder, der ikke er udtømmende til at teste et system, og at fejl kan vises med en meget lav hastighed. Denne tilgang giver en pragmatisk måde at statisk udlede testsager, der er fokuseret på at forbedre pålideligheden af ​​det testede system. Brug / statistisk modelbaseret test blev for nylig udvidet til at gælde for indlejrede softwaresystemer.

Se også

Referencer

Yderligere læsning