Wat is modelgebaseerd testen?
⚡ Slimme samenvatting
Modelgebaseerd testen controleert het runtimegedrag van software aan de hand van voorspellingen die zijn gedaan door een abstract model.tracHet modelleren van het systeem, waarbij testgevallen automatisch worden gegenereerd op basis van eindige toestandsautomaten, toestandsdiagrammen of UML-notaties in plaats van handmatig.

Wat is modelgebaseerd testen?
Modelgebaseerd testen Testen is een softwaretesttechniek waarbij het runtimegedrag van de te testen software wordt vergeleken met voorspellingen van een model. Een model is een beschrijving van het gedrag van een systeem, uitgedrukt in termen van invoersequenties, acties, voorwaarden, uitvoer en de datastroom van invoer naar uitvoer. Een bruikbaar model moet praktisch begrijpelijk, herbruikbaar en deelbaar zijn, en het moet het te testen systeem nauwkeurig beschrijven.
Er zijn talloze modellen beschikbaar, en elk model beschrijft een ander aspect van het systeemgedrag. Veelvoorkomende voorbeelden zijn:
- Informatiestroom
- Controle stroom
- Afhankelijkheidsgrafieken
- Beslissingstabellen
- Machines voor staatstransitie
Modelgebaseerd testen beschrijft hoe een systeem reageert op een actie die door het model is bepaald. De actie wordt ingevoerd en vervolgens wordt gecontroleerd of het systeem reageert zoals het model voorspelt. Elke afwijking tussen beide duidt op een defect in de software of een fout in het model, en het is de moeite waard om beide op te sporen.
Het is een lichtgewicht, formele methode voor het valideren van een systeem, en het is even goed toepasbaar op hardwaretesten als op softwaretesten. Omdat de tests gebaseerd zijn op een specificatie van het gedrag in plaats van op de code, sluit de techniek aan bij de black box testen familie van software testtechnieken.
Modelgebaseerd testvoorbeeld
De eenvoudigste manier om een gedragsmodel te lezen, is door het stap voor stap te doorlopen. Het onderstaande diagram modelleert een kleine tekstbewerkingstaak, waarbij elk vakje een toestand van de applicatie vertegenwoordigt en elke pijl een actie die een gebruiker kan uitvoeren.
Het model legt een vereenvoudigde aanpak uit voor het schrijven van poëzie in Kladblok en de mogelijke acties die bij elke stap horen. Voor elke actie, zoals het starten van de applicatie, het invoeren van een gedicht of het opslaan van het bestand, wordt een testcase De resultaten kunnen worden gegenereerd en geverifieerd. Door bijvoorbeeld een ander pad door hetzelfde diagram te volgen, zoals starten en sluiten zonder op te slaan, ontstaat een andere testcase zonder extra ontwerpkosten. Dit is het economische argument voor de hele techniek.
Soorten MBT
Er bestaan twee soorten frameworks voor modelgebaseerd testen, en het verschil daartussen zit hem simpelweg in het moment waarop de teststappen worden uitgevoerd:
- Offline / a priori: Het genereren van testsuites vóór de uitvoering ervan. Een testsuite is een verzameling testgevallen, en in deze modus wordt de suite opgeslagen, beoordeeld en opnieuw uitgevoerd zoals elke andere suite. automatisering testen troef.
- Online / spontaan: Het genereren van testsuites tijdens de testuitvoering, waarbij de volgende stap wordt gekozen op basis van hoe het systeem daadwerkelijk op de vorige stap heeft gereageerd.
Offline generatie is geschikt voor gereguleerde omgevingen die een controleerbare, herhaalbare reeks resultaten vereisen. Online generatie is geschikt voor langdurige verkennende sessies met stateful systemen, omdat de generator kan reageren op de werkelijke respons in plaats van op de voorspelde respons.
Hoe werkt modelgebaseerd testen?
Welk framework er ook gebruikt wordt, de techniek doorloopt dezelfde vijf fasen. Elke fase produceert een artefact dat in de volgende fase gebruikt wordt. Daarom is het model, en niet het testscript, hetgeen dat het team onderhoudt.
- Stap 1: Bouw het model. Vertaal eisen of een specificatie naar een abstracte vorm.tracEen model van het verwachte gedrag, waarin de toestanden, de overgangen daartussen en de inputs die elke overgang teweegbrengen, worden gedefinieerd.
- Stap 2: Kies de selectiecriteria voor de tests. Criteria geven de generator aan wanneer hij moet stoppen. Veelgebruikte criteria zijn: dekking van alle toestanden, waarbij elke toestand minstens één keer wordt bezocht; dekking van alle overgangen, waarbij elke pijl minstens één keer wordt doorlopen; en pad- of gegevensstroomdekking voor een diepere verkenning.
- Stap 3: Genereer abstract testgevallen. De tool doorloopt het model en genereert reeksen abs.tract stappen die voldoen aan de gekozen criteria, samen met het verwachte resultaat bij elke stap.
- Stap 4: De buikspieren concretiserentract-toetsen. Een adapterlaag brengt elk abs in kaart.tracom over te gaan tot een daadwerkelijke actie tegen het systeem, zoals een UI-interactie, een API oproep of een protocolbericht. Deze kaartping wordt eenmaal geschreven en hergebruikt door elke gegenereerde test.
- Stap 5: Uitvoeren en uitspraken toewijzen. Bij de concrete tests die op het te testen systeem worden uitgevoerd, wordt elke waargenomen respons vergeleken met de modelvoorspelling en wordt een oordeel (geslaagd of niet geslaagd) vastgelegd. tracterugverwezen naar het modelelement dat het heeft geproduceerd.
De tracDe in stap 5 gecreëerde flexibiliteit is de praktische winst. Wanneer een vereiste verandert, verandert het model en worden de betreffende tests opnieuw gegenereerd in plaats van herschreven. Daarom werken teams die frequent regressietesten Het voordeel van een stabiele specificatie is het grootst.
Verschillende modellen in testen
Om MBT te begrijpen, is het nodig om enkele van de onderstaande modellen te begrijpen. Elk model maakt een afweging tussen expressieve kracht en inspanning, dus de keuze hangt af van hoe complex het te testen gedrag daadwerkelijk is.
Eindige-toestandsmachines
Dit model helpt testers het resultaat te beoordelen op basis van de geselecteerde invoer. Verschillende combinaties van de invoer kunnen resulteren in een overeenkomstige toestand van het systeem.
Het systeem heeft een specifieke toestand en een huidige toestand, die wordt bepaald door een reeks invoerwaarden die door de testers worden gegeven.
Neem het volgende voorbeeld. Een systeem stelt medewerkers in staat om in te loggen op een applicatie. De huidige status van de medewerker is 'Uit' en verandert in 'In' zodra de medewerker is ingelogd. In de 'In'-status kan een medewerker documenten in het systeem bekijken, afdrukken en scannen.
De toestandsmachine voor dat voorbeeld wordt hier weergegeven, waarbij elke pijl is gelabeld met de invoer die de overgang veroorzaakt.
Staatskaarten
Een toestandsdiagram is een uitbreiding van de eindige toestandsmachine en kan worden gebruikt voor complexe en realtime systemen. Toestandsdiagrammen beschrijven verschillende gedragingen van het systeem, ze hebben een vast aantal toestanden en het gedrag van het systeem wordt geanalyseerd en weergegeven in de vorm van gebeurtenissen voor elke toestand. De uitbreiding die in de praktijk van belang is, is de hiërarchie: een toestandsdiagram maakt geneste en parallelle toestanden mogelijk, waardoor een machine die tientallen platte toestanden nodig zou hebben, compact kan worden weergegeven.
Defecten worden bijvoorbeeld in de defectbeheertool geregistreerd met de status 'Nieuw'. Zodra een defect door ontwikkelaars is opgelost, moet de status worden gewijzigd naar 'Opgelost'. Als een defect niet wordt opgelost, verandert de status naar 'Heropend'. Statecharts moeten zo worden ontworpen dat voor elke status een gebeurtenis wordt aangeroepen.
De levenscyclus van een defect is hieronder weergegeven, waarbij elke status als een toestand en elke workflowactie als de gebeurtenis die het defect tussen de toestanden verplaatst, wordt getoond.
Uniforme modelleringstaal (UML)
Uniforme modelleringstaal (UML) UML is een gestandaardiseerde, algemene modelleertaal. UML omvat een reeks grafische notatietechnieken die worden gebruikt om visuele modellen te creëren die zeer complex systeemgedrag kunnen beschrijven.
UML heeft notaties zoals:
- Activiteiten
- Acteurs
- Bedrijfsproces
- Componenten
- Programmeertaal
De activiteits- en toestandsdiagrammen zijn de diagrammen die testontwikkelaars het vaakst lezen, zoals het onderstaande UML-modelvoorbeeld illustreert.
Modelgebaseerde testtools
Een model op papier genereert op zichzelf niets. Er is een generator nodig om het model te doorlopen en testpaden te genereren, en de markt voor dergelijke tools is opgesplitst in open-source generators en commerciële testontwerpplatformen.
- GraphWalker — een open-source tool die modellen leest die de vorm hebben van gerichte grafieken en daaruit testpaden genereert, met selecteerbare generatoren en stopvoorwaarden.
- fMBT — een open-source, modelgebaseerde testtoolset van Intel die het genereren en uitvoeren van tests tegen toestandsmodellen ondersteunt.
- Conformiq — een commercieel, geautomatiseerd testontwerpproduct dat testgevallen en -scripts afleidt uit grafische gedragsmodellen.
- MaTeLo en MBTsuite — commerciële platforms gericht op statistische gebruiksmodellen en het genereren van tests voor bestaande automatiseringsframeworks.
- Spec Explorer - MicrosoftDe modelgebaseerde testuitbreiding van Visual Studio, die veelvuldig wordt aangehaald in de literatuur over protocoltesten.
De keuze hangt minder af van de functielijst dan van twee vragen: welke notatie het team daadwerkelijk kan gebruiken en of de tool tests kan genereren binnen het bestaande automatiseringsframework. Een generator die testsuites produceert die niemand kan uitvoeren, voegt een extra stap toe aan het proces in plaats van er een te verwijderen.
Modelgebaseerd testen versus traditioneel testontwerp
Het contrast met handgeschreven toetsen is het vermelden waard, omdat de twee benaderingen op verschillende punten tekortschieten en niet zozeer dat de ene simpelweg beter is dan de andere.
| Aspect | Modelgebaseerd testen | Traditioneel testontwerp |
|---|---|---|
| Bron van testgevallen | Automatisch gegenereerd op basis van een gedragsmodel. | Individueel geschreven door een tester op basis van de vereisten. |
| Effect van een wijziging in de vereisten | Werk het model bij en genereer de betreffende tests opnieuw. | Zoek en bewerk elk getroffen testgeval handmatig. |
| Dekking | Gemeten aan de hand van modelcriteria zoals alle toestanden of alle overgangen. | Gemeten aan de hand van de vereisten en afhankelijk van het oordeel van de tester. |
| Kosten vooraf | Hoog: modelleervaardigheid, gereedschapsinstellingen en een adapterlaag | Laag: een tester kan direct beginnen met schrijven. |
| Beste pasvorm | Stateful, duurzame systemen met een stabiele specificatie. | Korte projecten, eenmalige projecten en verkennend werk |
| Belangrijkste storingsmodus | Een onjuist of verouderd model genereert ongemerkt onjuiste tests. | Er ontstaan hiaten en duplicaten in een grote suite. |
De onderstaande evolutie plaatst de techniek in de juiste context: handmatige testuitvoering maakte plaats voor geautomatiseerde uitvoering, en modelgebaseerde benaderingen verplaatsen de automatisering naar een eerder stadium, namelijk naar het testontwerp zelf.
Uitdagingen van modelgebaseerd testen
De implementatie van MBT in een organisatie vereist een aanzienlijke investering in geld en inspanning. De volgende punten zijn de nadelen van MBT: software engineering:
- Testers hebben modelleervaardigheden nodig die bij traditioneel testontwerp niet vereist zijn.
- Het leerproces is lang en het eerste project kost meestal meer dan het oplevert.
- Het model zelf kan lastig te begrijpen en te evalueren zijn, vooral wanneer het groeit.
- Een model dat niet meer aan de specificaties voldoet, genereert zelfverzekerde, maar onjuiste tests.
- De adapterlaag die abs omzettracDe stappen die in de praktijk worden omgezet, moeten afzonderlijk worden beschreven en bijgehouden.
- De omvang van een model groeit snel, waardoor een onbeperkt toestandsmodel meer paden kan genereren dan welk team dan ook kan uitvoeren.
Geen van deze punten is een reden om de techniek te vermijden, maar samen verklaren ze waarom MBT meestal eerst op één stabiel subsysteem wordt geïntroduceerd in plaats van op een volledig subsysteem. levenscyclus van softwaretests onmiddelijk.
Voordelen van modelgebaseerd testen
Tegenover die kosten staan de voordelen van MBT:
- Eenvoudig onderhoud van testcases en testsuites, omdat het model wordt bewerkt in plaats van de individuele tests.
- Kostenbesparing gedurende de looptijd van een langlopend project.
- Verbeterde test dekking, omdat de generator paden verkent die een persoon zou overslaan.
- Verschillende gegenereerde testsuites kunnen parallel op een willekeurig aantal machines worden uitgevoerd.
- Vroege foutdetectie, omdat onduidelijkheden aan het licht komen tijdens het bouwen van het model, voordat er code wordt uitgevoerd.
- Een toename van het aantal gevonden defecten bij dezelfde testinspanning.
- Tijdsbesparing bij het ontwerpen van tests zodra het model en de adapter beschikbaar zijn.
- De tevredenheid van testers neemt toe, doordat de focus verschuift van repetitief scripten naar modelleren en analyseren.
Testers ontwikkelen sowieso mentale modellen tijdens hun werk, en MBT zet die mentale modellen simpelweg over op papier, waar ze kunnen worden beoordeeld, van versies voorzien en hergebruikt. Hoe de techniek zich verhoudt tot de andere beschikbare benaderingen wordt uiteengezet in soorten softwaretesten.





