Bij de ontwikkeling van een applicatie worden bijna altijd wel programmeerfouten gemaakt. Dat is niet erg, mits deze fouten in de testfase maar gevonden en verbeterd worden. Het testproces is echter complex en er is niet met 100 procent zekerheid te zeggen dat de applicatie geen fouten bevat. Een gestandaardiseerd model in testen kan daarin uitkomst bieden. Onze testexperts binnen het topic Development leggen uit hoe model-based testing (MBT) fouten helpt te voorkomen, zelfs nog voordat de applicatie daadwerkelijk ontwikkeld wordt.
Maurice Siteur, managing consultant, Capgemini
Model-based testen (MBT) is meer dan tien jaar oud en komt uit de wetenschappelijke wereld. Met MBT gingen ze zo ver dat ze konden bewijzen dat een stuk software wel of niet werkte. Zo ver gaan we met de MBT-toepassingen, die we puur voor testen kennen, niet. Wat me bij de vergelijking van verschillende MBT-tools opviel was dat het gebruikte model behoorlijk verschilde, van puur schermnavigatie tot de meer procesmatige benadering. Modellen alleen voor testen zijn minder krachtig dan modellen die ook voor ontwerp gebruikt worden. Voor mij moet er een integrale benadering op dit vlak zijn, waardoor design/build en test elkaar al vroeg in het ontwikkelproces tegenkomen.
Ewald Roodenrijs, sr. testmanager, Sogeti Nederland
Model-based testing maakt het mogelijk om automatisch testgevallen te generen uit een model. Hierbij is het mogelijk om het proces van testspecificatie tot testuitvoering te automatiseren met als gevolg een versnelling in het testproces. Dit klinkt allemaal heel mooi en het is ook zeker mogelijk. Hierbij ligt de uitdaging in het handmatig creëren van een model vanuit de requirements, met daarin de functionele werking van het te testen systeem. Dit vereist vaak nog technische kennis en is daardoor vaak gespecialiseerd werk. Dit gebeurt vaak vroeg in het ontwikkelproces, wat als bijkomend voordeel heeft dat de kwaliteit van de requirements al snel worden gecontroleerd.
Gerlof Hoekstra, sr. testconsultant, Atos Origin
Dit jaar heb ik model-based testing toegepast in een serieus project bij een opdrachtgever. De te behalen voordelen zijn duidelijk: het monnikenwerk (testgevallen uitpuzzelen en opschrijven in een standaard formaat) wordt geautomatiseerd, geen honderd testgevallen meer onderhouden maar één model en doordat alle testgevallen uniform zijn (want computer-gegenereerd), is de weg naar geautomatiseerde testuitvoering gemakkelijker. In situaties waar je veel en vaak testen aanpast en uitvoert (Agile) is dit zeer aantrekkelijk.
Er zijn ook nadelen: je hebt methodes en tools nodig plus voldoende kennis om daarmee te werken (ik gebruikte State Transition Diagrammen, OCL, IBM Rational Software Modeller en Smartesting Test Designer) en voor sommige ‘traditionele' testers is dit best lastig om te leren. Er is een mix van technische vaardigheid en denken in modellen voor nodig. Omdat kennis van MBT nog schaars is, is het ook lastig het als standaard aanpak geaccepteerd te krijgen in een organisatie die veel testers van externe partijen inhuurt.
Ondanks deze nadelen ga ikj MBT meer en meer toepassen. Bij het specificeren en uitschrijven van testgevallen halen we tot 50 procent efficiencywinst. Heb je eenmaal een model, dan is de winst bij aanpassingen zelfs nog groter. En belangrijker: het maken van een formeel testmodel is een uitstekende vorm van vroegtijdig testen. Ik ontdek daardoor veel fouten in de specificaties, nog voordat de software wordt gemaakt.
Rob van der Veer, managing director, Serials Solutions Medialab
Bij elke vorm van testen kijken we of een systeem voldoet aan een model. Dat model zit vaak alleen in ons hoofd of staat op papier, maar bij model-based testing zit het verwerkt in een testprogramma dat het systeem automatisch doorloopt aan de hand van het model. Zo'n model is typisch een verzameling van states waarin het systeem kan verkeren en de overgangen daartussen. Een state is bijvoorbeeld: wachtwoord wordt ingevuld. Als de gebruiker een leeg wachtwoord invult, dan vindt er een overgang plaats naar de state: meldt 'het wachtwoord mag niet leeg zijn'. Alleen al het uitwerken van het model is een goede exercitie die ontwikkelaars kan helpen om fouten te voorkomen.
Jos van Rooyen, principal consultant testen, Bartosz ICT
Model-based testen is een methode waarbij een systeem wordt getest ten opzichte van een model; een abstracte beschrijving van het gewenste gedrag van het te testen systeem. Voor velen is het voordeel van deze methode dat je grote hoeveelheden testcases kunt genereren en een betere dekking bereikt. De methode is bij mij favoriet omdat het teruggaat naar de basis, de business requirements. Wat heeft de opdrachtgever voor ogen en hoe dient het systeem in de praktijk te werken? De opdrachtgever staat weer centraal! Betrokkenen bij het ontwikkeltraject dienen samen te werken om het gewenste resultaat, een tevreden klant, te bereiken.
Katarzyna Kot, managing consultant, Devoteam
Het model-based testen staat nog steeds in de kinderschoenen. Dat heeft vooral te maken met veelgehoorde bezwaren van bedrijven: te duur en te bewerkelijk. Volgens mij is dat niet meer terecht in een tijd dat de kennis over goede modellen toeneemt en geavanceerde tooling beschikbaar is. MBT begint eigenlijk al bij de requirements. Requirements definiëren het te ontwikkelen systeem en daarom kunnen ze gezien worden als het eerste model van het gewenste product dat gebouwd moet worden. Als de product requirements in de vorm van bijvoorbeeld use cases worden vastgelegd, bieden veel moderne tools de mogelijkheid om de testcases automatisch vanuit de use cases te genereren. Om deze testcases feitelijk te kunnen gebruiken, moet er nog veel handmatig aangepast en/of toegevoegd worden zoals bijvoorbeeld testcondities.
Dat brengt ons bij de kern van het probleem. Om MBT succesvol te laten zijn, is goede tool-ondersteuning en een goed model van het SUT (system under test) noodzakelijk. Dat betekent dat op basis van een volwassen SUT valide test cases gegenereerd kunnen worden die weinig of geen aanpassingen meer nodig hebben. In de praktijk wordt het bouwen van zo'n model echter vaak gezien als een bewerkelijke uitdaging en tegelijkertijd een investering die veel bedrijven niet willen doen. Tooling voor MBT wordt ook steeds beter en toegankelijker. Bedrijven doen er goed aan om te bedenken of hun bezwaren tegen het gebruik van MBT nog opwegen tegen de genoemde voordelen.
Eugene Derksen, partner en directeur R&D, Four Oaks
Model-based testing (MBT) berust op het maken van een model van het beoogd systeemgedrag om de software tegen te kunnen valideren en verifiëren. Idealiter wordt dit model al tijdens de ontwerpfase opgesteld (model-based design). Op basis van dit model kunnen de testgevallen worden afgeleid en kan de testexecutie per component worden uitgevoerd. Aangezien bij MBT systeemgedrag en dus functionaliteit voorop staat, worden niet functionele eisen nogal eens over het hoofd gezien. Dat benadrukt dat bij MBT de acceptatietest van essentieel belang is om aan te tonen dat het systeem, inclusief niet-functionele aspecten, de bedrijfsprocessen in voldoende mate ondersteunt.
Christiaan Heidema, softwarearchitect, Sogeti Nederland
De grote kracht van model-based testing ligt in het verschuiven van het testtraject van het einde naar het begin van het project. Nog voordat er maar iets gebouwd is, kun je het procesmodel testen. Conform de wet van Boehm de meest optimale plek. Fouten in het model worden vroegtijdig ontdekt en zijn op te lossen tegen minimale kosten. Tevens kunnen in dit stadium al testgevallen geautomatiseerd gegeneerd worden. Inzet van goede tooling is in deze noodzakelijk. De besparingen op het gehele softwareontwikkelingsproces,die door vroegtijdige foutdetectie en geautomatiseerde testgevallen generatie worden behaald, zijn enorm. Model-based testing heeft veel potentie.
André Boonzaaijer, cto, Sogyo
Modelgedreven ontwikkelen is de laatste jaren aan een ware revival bezig. Eind jaren '90 verfoeid om de starheid van de toen gebruikte 4GL-omgevingen is er de laatste jaren een sterkere focus gelegd op minder generieke modellen. Daarnaast zie ik in de praktijk nu al een jaar of vijf een andere beweging op het gebied van modelmatige softwareontwikkeling: domain driven design, een in 2003 door Eric Evans uitgewerkte techniek in het gelijknamige boek. Ook hierin staat een model van de te automatiseren problematiek centraal: het domeinmodel. De vorm hiervan is echter minder vastomlijnd dan die in de klassieke modelgedreven aanpak.
Centrale vraag bij deze benaderingen van softwareontwikkeling blijft: hoe kom ik tot een correct en volledig model? Een antwoord hierop is een techniek bekend onder de term ‘test-driven development' (TDD). Deze methode richt zich erop om de omschrijving van modellen te vatten in geautomatiseerd uitvoerbare testscripts; vóórdat het model zelfs al bestaat. Het is een test-first approach waarbij de testen gebruikt worden om de daadwerkelijke implementatie te specificeren, en later ook te verifiëren. Een bijkomend voordeel van deze benadering, die bewezen goed werkt in de praktijk, is dat er een geautomatiseerd uitvoerbare set aan unit-tests ontstaat die tevens een sterk documenterende functie hebben voor een systeem. Ook komt het de onderhoudbaarheid ten goede. Al met al een benadering die van harte aan te bevelen is.
Andreas Prins, project-/testmanager, Sogeti
Model-based testing (MBT) zal één van de sporen van de toekomst zijn die het testen van software moet industrialiseren. Een industrialisatie heeft als voordelen, de herhaalbaarheid van specificatie, op slechts één manier uit te leggen ontwerpdocumentatie en schaalbaarheid van resources. Binnen het MBT-spoor zijn drie toepassingsvarianten te onderkennen. Eén van de meest voorkomende varianten van MBT is automatisch specificeren van testgevallen. Door een model te maken kunnen de testgevallen automatisch worden gegenereerd. Dit is nog een stap verder te trekken door ook de uitvoering te automatiseren.
Minder voorkomend maar wel gebruikt is MBT voor het toetsen van ontwerpdocumentatie. Met het omzetten van de documentatie in een model komt de inconsistentie en onvolledigheid aan het licht. Een onbekende toepassing van MBT is reverse enginering van oude systemen. Soms zijn ontwerpen niet voorhanden of niet meer actueel. Door modellen uit de bestaande code af te leiden krijgt men weer een vorm van ontwerpdocumentatie die men kan gebruiken voor aanpassingen en om inzicht te krijgen in het systeem. Ik denk dat deze onderscheidend is omdat het concreet aantoont welke mogelijkheden er zijn voor de toekomst.
Huib Klink, sr. consultant/presales, Micro Focus
Bij model-based testing stellen ontwikkelaars een model op, dat de eisen van de applicatie en de infrastructuur waarbinnen de applicatie gaat draaien, simuleert. Het model is de basis voor uitvoerbare testen die samen met de simulaties een goed beeld geven van de applicatie en het systeem. Omdat dit al in een zeer vroeg stadium gebeurt, vaak voordat de code gebouwd wordt, zijn veel instabiliteitfactoren te vermijden.
Deze testmethodiek biedt ook een goede manier om de applicatie-requirements al in het begin van de ontwikkelcyclus te testen. Fouten zijn dan snel te corrigeren. Door toepassing en iteratie van deze methodologie ontstaat een betere match tussen het applicatielandschap en de eisen van de eindgebruikers. Er zijn tools die de requirements kunnen simuleren. Daarmee is de application life cycle aanzienlijk te verkorten en zijn de kosten te verminderen. Deze methodologie komt steeds vaker voor in agile development-omgevingen.
Jelle Calsbeek, global solution delivery manager test & acceptance management, Atos Origin
Het is een denkfout dat mobel based testing alleen toepasbaar is als geautomatiseerd testuitvoering. MBT is een aanpak die industrialisatie van het testontwerp mogelijk maakt. Met MBT worden automatisch testgevallen gegenereerd uit functionele testmodellen. Het testontwerp verloopt sneller, fouten worden eerder onderkend en de testdekking is optimaal. Met name als het onderhoud van bestaande testsets een kostbare zaak is, kan MBT het testwerk versnellen.
Ook in situaties waar processen worden ondersteund door software die voor een groot deel uit standaard modules bestaat, kan het gebruik van MBT een verbeterslag betekenen. Het is inmiddels mogelijk om uit BPM-modellen testscenario's te genereren. Hierdoor zijn testmodellen beschikbaar, die standaard processen beschrijven, binnen bijvoorbeeld telecom (E-Tom en ook voor SAP-modules). Bij nieuwe releases bewijzen deze testmodellen keer op keer hun waarde.
Johan Vink, teamleider testing, Info Support
Met behulp een model-based testing (MBT)-tool is het mogelijk om op basis van een model dat het gedrag van een systeem beschrijft geautomatiseerd testgevallen te genereren. De inzet van een MBT-tool heeft belangrijke voordelen ten opzichte van het handmatig specificeren en onderhouden van testgevallen. Een tester kan met behulp van een MBT-tool vroeg in het ontwikkelproces fouten vinden. Een tester heeft voor succesvolle generatie van testgevallen een kloppend model nodig. Ook is een groter aantal testgevallen te produceren binnen de beschikbare tijd. De tool kan sneller veel grotere aantallen testgevallen genereren dan een team testers dat handmatig testgevallen maakt. Tevens kan het inzichtelijk maken met welke testgevallen de requirements zijn afgedekt. Tot slot kan veel sneller ingespeeld worden op veranderingen in het ontwerp. De tester past het model aan en genereert vervolgens een nieuwe set testgevallen. Zonder de inzet MBT moet een tester alle testgevallen nalopen en deze daar waar nodig handmatig aanpassen.
Wanneer de inzet van een MBT-tool is gecombineerd met het geautomatiseerd uitvoeren van testgevallen is het meeste rendement te behalen. Het aantal testgevallen dat dan daadwerkelijk in de beschikbare tijd is uit te voeren, is dan niet gelimiteerd door het aantal beschikbare testers. Dit vergt een aanzienlijke investering in tools, de ontwikkeling van processen, medewerkers en de implementatie. Deze investeringen moet een organisatie kunnen terugverdienen. MBT is daarmee vooral geschikt voor het testen van risicovolle systemen waarop regelmatig wijzigingen worden aangebracht en waarbij hoge eisen gesteld zijn aan de bewezen dekking die met de set testgevallen behaald moet worden.
Nathalie van Delft, managing consultant testing, Capgemini
Volgens mij is model-based testing (MBT), zoals het woord al zegt, testen op basis van een (conceptueel) model. Het wordt, wellicht ten onrechte, typisch tot de ‘black box'-technieken gerekend. Volgens mij ligt dat aan het abstractieniveau van het model dat bepaalt of het een ‘black box' of ‘white box' is. Ook kunnen de uiteindelijke testcases van invloed zijn: gebaseerd op broncode (‘white box') of het functionele model zelf (‘black box').
Het grote voordeel van MBT is dat het zich in grote mate geschikt maakt voor geautomatiseerd testen en dat ook, voordat er maar één regel code is geschreven, testen kunnen worden uitgevoerd (en dus ook fouten kunnen worden gevonden) tegen relatief lage kosten. In de praktijk blijkt echter dat het een hels karwij is om echt goede modellen te verkrijgen die volgens een standaard zijn opgesteld, voor mij een randvoorwaarde om MBT goed uit te voeren of in ieder geval een goede, herbruikbare, onderhoudbare en traceerbare testsuite te maken. Verder zijn veel modellen dusdanig complex opgesteld dat het, op zijn zachtst gezegd, lastig is om hier een testsuite voor te maken.
Eigenlijk moet je het model zelf dus testen voordat je het kunt automatiseren, wat op zich voor een organisatie ook al een goede oefening kan zijn omdat je onnodige complexiteit in businessprocessen, systemen, en software voorkomt. Zijn echter goed opgestelde modellen voorhanden, dan kan met de juiste tool een prachtige suite gemaakt worden, zelfs in dusdanige mate dat als het model door voortschrijdend inzicht gewijzigd wordt, de cases in de suite automatisch mee gewijzigd worden en dat levert weer een grote tijdwinst op.
Wat ik ook als positieve ontwikkeling zie, zijn de ‘gestandaardiseerde' modellen die voor meerdere systemen kunnen gelden (bijvoorbeeld ‘smart usecases', die een onderdeel zijn van het ‘Accelerated Delivery Platform') en het gebruik van functies die algemeen voorkomen (denk aan ‘login', ‘maak adres', etc.). Deze algemeen voorkomende functies zijn dan in een model gevat en daaraan zijn ook standaard testcases/testscenario's gekoppeld. Die zijn dus herbruikbaar en ook de raming van de kosten om een bepaald scenario uit te voeren is met redelijke nauwkeurigheid af te geven.
Overigens is MBT alleen niet voldoende om het geautomatiseerde systeem/proces te testen; de zogenaamde non-functionals (zoals usability, testbaarheid, betrouwbaarheid, etc.) zijn vaak lastig of zelfs gewoon niet in een model te vatten. De echte (gebruikers)acceptatietesten kun je er bijvoorbeeld niet mee uitvoeren, omdat een model nu eenmaal niet kan vertellen hoe gebruikersvriendelijk een systeem uiteindelijk is of in hoeverre het ‘werkbaar' is binnen een proces.
Experts gezocht
Computable heeft op al zijn 26 topics een expertpanel. Wij zoeken echter altijd meer experts, op al onze topics, maar voor de komende tijd zoeken wij specifiek naar experts voor de topics Netwerken, Business Intelligence, Cloud Computing, Open Source en Virtualisatie.
Ben jij expert op een van deze vakgebieden of een ander Computable-topic en wil je als vraagbaak van de redactie dienen, stuur dan een e-mail met je gegevens (naam, functie, bedrijf, werkzaamheden) naar experts@computable.nl.
“Het testproces is echter complex en er is niet met 100 procent zekerheid te zeggen dat de applicatie geen fouten bevat. Een gestandaardiseerd model in testen kan daarin uitkomst bieden.”
Ook een “een gestandaardiseerd model” kan niet met 100 procent zekerheid zeggen dat de applicatie geen fouten bevat.
Geen fouten kunnen vinden (maakt niet uit welke methode) is nooit een garantie dat het foutloos is.
Model Based Testen is in een stroomversnelling aan het komen. In de nieuwe ontwikkelomgevingen een must have. In bestaande omgevingen kan deze methode relatief simpel, stapsgewijs ingevoerd worden. Investeringen zijn beperkt.
Daarbij vooral de bestaande modeltechnieken gebruiken voor bouw én test.
Door het gebruik van geteste modellen, vroeg in het ontwikkelproces, zijn de besparingen zeer groot.
Het nadeel van Model based testen is, de term zegt het al, het gaat uit van een model. Een model is een geschematiseerde (en dus versimpelde) kijk op de werkelijkheid. Het is misschien mogelijk om op een laag, technisch niveau onderdelen in een compleet model vast te leggen. Op een hoger niveau wordt het aantal mogelijke paden en combinaties zo groot, dat een model wel versimpeld *moet* worden. En daarbij: menselijk gedrag valt moeilijk in een model te vatten. MBT is in mijn ogen een aanvulling (alle beetjes helpen) maar bepaald niet het toverwoord bij testen.