Modelbaseret test - Model-based testing
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
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å
- Domænespecifikt sprog (DSL)
- Domænespecifik modellering (DSM)
- Model-driven arkitektur (MDA)
- Model-driven engineering (MDE)
- Objektorienteret analyse og design (OOAD)
- Time Partition Testing (TPT)
Referencer
Yderligere læsning
- OMG UML 2 testprofil; [2]
- Bringmann, E .; Krämer, A. (2008). "Modelbaseret test af bilsystemer" (PDF) . 2008 International konference om softwaretest, verifikation og validering . International konference om softwaretest, verifikation og validering (ICST). s. 485–493. doi : 10.1109 / ICST.2008.45 . ISBN 978-0-7695-3127-4 .
- Praktisk modelbaseret testning: A Tools Approach , Mark Utting og Bruno Legeard, ISBN 978-0-12-372501-1 , Morgan-Kaufmann 2007.
- Modelbaseret softwaretestning og -analyse med C # , Jonathan Jacky, Margus Veanes, Colin Campbell og Wolfram Schulte, ISBN 978-0-521-68761-4 , Cambridge University Press 2008.
- Modelbaseret test af reaktive systemer Advanced Lecture Series, LNCS 3472, Springer-Verlag, 2005. ISBN 978-3-540-26278-7 .
- Hong Zhu; et al. (2008). AST '08: Forløb fra den 3. internationale workshop om automatisering af softwaretest . ACM-tryk. ISBN 978-1-60558-030-2 .
- Santos-Neto, P .; Resende, R .; Pádua, C. (2007). "Krav til modelbaseret test af informationssystemer". Forhandlinger fra ACM-symposiet 2007 om anvendt computing - SAC '07 . Symposium om anvendt databehandling . s. 1409–1415. doi : 10.1145 / 1244002.1244306 . ISBN 978-1-59593-480-2 .
- Roodenrijs, E. (Forår 2010). "Modelbaseret test tilføjer værdi" . Metoder og værktøjer . 18 (1): 33–39. ISSN 1661-402X .
- En systematisk gennemgang af modelbaseret testværktøjsstøtte , Muhammad Shafique, Yvan Labiche, Carleton University, teknisk rapport, maj 2010.
- Zander, Justyna; Schieferdecker, Ina; Mosterman, Pieter J. , red. (2011). Modelbaseret testning af indlejrede systemer . Beregningsanalyse, syntese og design af dynamiske systemer. 13 . Boca Raton: CRC Press . ISBN 978-1-4398-1845-9 .
- 2011/2012 Modelbaseret testbrugerundersøgelse: Resultater og analyse. Robert V. Binder. System Verification Associates, februar 2012
