Oplossingen voor het testen van objectgeoriënteerde software



Vergelijkbare documenten
Oplossingen voor het testen van objectgeoriënteerde software

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn.

IMP Uitwerking week 13

Abstracte klassen & Interfaces

Eindtoets. Opgaven. 1 Gegeven is het domeinmodel van figuur 1. Domeinmodel voor betalingen. Eindtoets I N T R O D U C T I E.

Zelftest Programmeren in Java

Problemen met platte toestandsdiagrammen

Kleine cursus PHP5. Auteur: Raymond Moesker

Domeinmodellen en klassendiagrammen

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Noties Informatica. In java fungeren objecten als een model voor de elementen waarin een probleem kan worden opgesplitst

Deel II: Modelleren en software ontwikkeling. Hoofdstuk 7 Software ontwikkeling - Overzicht. Naïeve benadering

VI. Klassen en objecten

ALGORITME objectgeoriënteerd programmeren

TENTAMEN Programmeren 1

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Wat is een grafische gebruikersinterface (GUI)?

Overerving & Polymorfisme

Tentamen in2705 Software Engineering

3.1 Opsomming data type

Ontwerp van Informatiesystemen

Objectgeoriënteerd Programmeren: WPO 2a

Inhoudstafel. UML (Unified Modeling Language)

Software Test Plan. Yannick Verschueren

SYNTRA-WEST. Cursus OOP. Deel

1. Welke diagrammen beschrijven het dynamisch gedrag van een applicatie?

Programmeren in C# Overerving

Programmeren in C# Interfaces. Hoofdstuk 23

Die inputs worden op een gecontroleerde manier aangeboden door (test) stubs. De test driver zorgt voor de uiteindelijke uitvoering ervan.

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Deel I Hoofdstuk 4: Modelleren van Toestand

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Deel I Hoofdstuk 2: Het klassenmodel

Inhoud leereenheid 2. Overerving (1) Introductie 59. Leerkern 60. Samenvatting 88. Zelftoets 90. Terugkoppeling 94

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Object Oriëntatie Foundation (OOF.NL)

voorbeeldexamen Object Oriëntatie Foundation (OOF.NL) editie juli 2010 inhoud inleiding 3 voorbeeldexamen 4 antwoordindicatie 11 evaluatie 22

Software Test Plan. Yannick Verschueren

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2

UML. From weblog Dennis Snippert

Leren programmeren in C# Deel 4 - Objectoriëntatie

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Programmeren in Java 3

Inhoud leereenheid 1. Objectgeoriënteerd ontwerpen. Introductie 17. Leerkern 18. Samenvatting 50. Zelftoets 51. Terugkoppeling 52

Modulewijzer tirprog02/infprg01, programmeren in Java 2

Object-oriented programmeren met BlueJ en Visual Studio

voorbeeldexamen I-Tracks voorbeeldexamen ISDDF Information Systems Design and Development Foundation uitgave april 2005

Oplossingen voor het testen van objectgeoriënteerde software

DATAMODELLERING BEGRIPPENBOOM

Les F-02 UML. 2013, David Lans

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Software Test Document

Modulewijzer Tirdat01

et Zend Framework bestaat volledig uit objectgeoriënteerde

Aan het eind van deze lesbrief wordt uitgelegd wat het nut van OOP is en vind je een aantal oefenopdrachten.

Leertaak 2: Project Vossen & Konijnen

Software Test Plan. PEN: Paper Exchange Network Software Engineering groep 1 (se1-1415) Academiejaar

SmartTestAssistant. Het slimme testhulpmiddel. door Frank Stolker

Programmeren met Java

BEKNOPTE BESCHRIJVING VOORZIENING BRIEFSTEMMEN WATERSCHAPSVERKIEZINGEN 2008

NAAM: Programmeren 1 Examen 21/01/2011

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 6 november 2015, uur

Regressietesten. De aanpak en aandachtspunten. Algemene informatie voor medewerkers van: SYSQA B.V.

Modelleren en Programmeren

Java. Basissyllabus. Egon Pas

Scrum in het kort

UML is een visuele taal om processen, software en systemen te kunnen modeleren.

Programmeren in Java 3

Software Test Documentation

Object Oriented Ontwerp. Yannick Reekmans

Verantwoording van de te bezoeken les

Canonieke Data Modellering op basis van ArchiMate. Canonieke Data Modellering op basis van Archimate Bert Dingemans

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Vier aandachtspunten bij het specificeren van digitaal geregelde voedingen

HvA Instituut voor Interactieve Media ActionScript 3.0

Programmeren in Java 3

Vakgroep CW KAHO Sint-Lieven

SmartTestAssistant. Het slimme testhulpmiddel. door Frank Stolker

Sjabloon testspecificatie. <<Organisatie>>

Het Testen van Elektronica nu en in de toekomst

Unified Modeling Language

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Programmaontwerp en - Realisatie

Expert review Reservatiesysteem

Software Quality Assurance Plan

Workshop 12 ART-DECOR en Acute overdracht. Michael Tan Kai Heitmann Maarten Ligtvoet

Unified Modeling Language

Transcriptie:

Oplossingen voor het testen van objectgeoriënteerde software Pieter van den Hombergh Fontys Hogeschool voor Techniek en Logistiek Software Engineering 14 maart 2013 HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 1/39

1 Principes van objectgeoriënteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hiërarchieën van vererving 2 3 Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes 4 Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 2/39

Een vierkant in een... Principes van objectgeoriënteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hiërarchieën van vererving Soms is compositie een betere oplossing. Maar het is nog steeds oppassen geblazen. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 3/39

Principes van objectgeoriënteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hiërarchieën van vererving Delegatie en niet abstracte methoden in Super Bij overerving van concrete methodes is ook de delegatie-oplossing problematisch, omdat een correct gedrag alleen door het overschrijven van alle, inclusief de concrete, methodes van de basisklasse gegarandeerd kan worden. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 4/39

Het substitutieprincipe volgens Liskov Principes van objectgeoriënteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hiërarchieën van vererving Substitueerbaar betekent: Exemplaren van een subklasse moeten onder alle omstandigheden in de plaats van exemplaren van elke superklasse inzetbaar zijn De pré-condities van iedere methode moeten gelijk of zwakker zijn dan in de superklasse De post-condities van iedere methode moeten gelijk of sterker zijn. Er mogen dus meer garanties gedaan worden, maar niet minder. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 5/39

Principes van objectgeoriënteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hiërarchieën van vererving Voor de zichtbare toestanden betekent dat: Alle zichtbare toestanden en toestandsovergangen (transities) van de superklasse moeten in de subklasse bewaard blijven. In de subklasse mogen transities tussen de toestanden van de superklasse toegevoegd worden. In de subklasse mogen nieuwe zichtbare toestanden toegevoegd worde, zolang deze bestaande toestanden van de superklasse orthogonaal aanvullen ofwel subtoestanden van een reeds bestaande toestand zijn. Het waarborg- en verantwoordelijkheidsprincipe: Een klasse kan geen waarborgen voor eigenschappen van haar superklasse afdwingen. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 6/39

A deflated world Principes van objectgeoriënteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hiërarchieën van vererving Flattening schematisch: We laten de lucht uit de verervingshiärarchie en zien welke vererfde methodes in de subklasses opnieuw getest moeten worden. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 7/39

Drie regels voor de vererving. Principes van objectgeoriënteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hiërarchieën van vererving Een subklasse mag een gebeurtenis van de superklasse in meer toestanden accepteren dan een superklasse. Op deze wijze kunnen we een toestand van de superklasse in subtoestanden partitioneren. Een subklasse mag nieuwe toestanden definiëren wanneer deze orthogonaal ten opzichte van de superklasse zijn, dus deze slechts met nieuwe aspecten uitbreiden. Het effect van private-variabelen van de superklasse op hun toestandsruimte moet orthogonaal ten opzichte van de toestanden van de protected-variabelen zijn. Compact Eis niet meer, beloof niet minder. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 8/39

Toevallige correctheid door vererving Principes van objectgeoriënteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hiërarchieën van vererving p u b l i c c l a s s Account { p r o t e c t e d Date lasttxdate, today ; i n t newrequestsperday ( i n t n r R e q u e s t s ){ r e t u r n ( n r R e q u e s t s / d a y s S i n c e L a s t T r a n s a c t i o n ( ) ) ; } i n t d a y s S i n c e L a s t T r a n s a c t i o n ( ) { r e t u r n ( today. day ( ) l a s t T x D a t e. txdate ( ) + 1 ) ; } } p u b l i c c l a s s S p e c i a l A c c o u n t extends Account { i n t d a y s S i n c e L a s t T r a n s a c t i o n ( ) { r e t u r n ( today. day ( ) l a s t T x D a t e. txdate ( ) ) ; // newly d e f i n e d } } HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 9/39

Principes van objectgeoriënteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hiërarchieën van vererving Wat er allemaal mis kan gaan bij de vererving. Ontbrekende overschrijvingen: Directe toegang tot attributen: Hoekige plug in een rond gat : Ondeugende kinderen : een subklasse die niet alle berichten van de superklasse accepteert, een subklasse die in een toestand komt die voor de superklasse niet is toegestaan. Wormgaten Verantwoordelijkheidsverschuiving Fat Interface HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 10/39

Principes van objectgeoriënteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hiërarchieën van vererving en de klasieke fout in java.util: HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 11/39

Teststrategie bij vererving Principes van objectgeoriënteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hiërarchieën van vererving Anti extentionaliteit: Een testsuite resp. de testcases voor één bepaalde implementatie volgens een eis dekken niet noodzakelijkerwijs ook de testcases voor een andere implementatie van dezelfde eis af. Anti-decompositie: De testcoverage voor een klassen- of ketentest dekt niet noodzakelijkerwijs ook de test voor de gebruikte (primitieve) klassen mede af. Anti-compositie De voor delen van een module adequate testcases zijn niet noodzakelijkerwijs ook voor de test over de gehele module voldoende. Objectoriëntatie is dus een Denken in verantwoordelijkheden HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 12/39

Test volgorde: In de V langs rechts omhoog 1 Methodes, dus functies van een klasse. 2 De klassen met hun methodes. 3 De hoeveelheid van klassen die gezamenlijk een taak in samenwerking uitvoeren. 4 Componenten of subsystemen als werkende bij elkaar horende groepen van hoeveelheden van klassen. 5 Applicatie of systeem. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 13/39

Structurele richtingen Daar komt nog de samenhang tussen klassen, dus structurele samenhang bij. top-down langs de verervingshiërarchie langs de associaties resp. de associatieketen HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 14/39

De orthogonale testeisen voor een klassentest HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 15/39

De twee integratierichtingen architectuur-test: Op basis van de klassendiagrammen wordt langs de klassenhiërarchie door de gegeneraliseerde klasse naar beneden in de richting van de gespecificeerde klassen getest. De superklassen zijn dus altijd het eerste aan de beurt. integratietest voor klassen: Op basis van de sequentiediagrammen wordt langs de associatieketens het samenspel van de afzonderlijke objecten, dus het correcte wederzijdse aanroepen van methodes getest. Daaruit resulteren twee vragen: In welke volgorde moeten de tests in objectgeoriënteerde programma s plaatsvinden? Hoe dienen objectgeoriënteerde programma s gestructureerd te worden zodat deze tests kans op succes hebben? HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 16/39

Associaties Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes Voorbeelden voor multipliciteitsbeperkingen bij associaties. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 17/39

Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes Multipliciteiten kunnen tot anomaliën leiden. Invoeganomalie: Gebeurt het invoegen van nieuwe associaties op de juiste plaats binnen de collectie? Veranderingsanomalie: Zijn veranderingen zoals bijvoorbeeld op mijn collectie correct? Wisanomalie: Wordt het juiste element gewist en is de toestand van de collectie na het wissen correct? Bij bi-directionele associaties kan het probleem van inconsistente verbindingen optreden. De heen- en terugverwijzingen passen dan niet bij elkaar (Volgende dia). HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 18/39

Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes Voorbeeld van een inconsistente bidirectionele associatie Tenslotte moeten de vererfde associaties aan een controle onderworpen worden. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 19/39

Vererving uit testers perspectief Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes strikt: In een subklasse vinden alleen uitbreidingen van haar superklassen plaats. niet-strikt: In een subklasse wordt basisfunctionaliteit uit de superklassen overschreven. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 20/39

Strikte vererving Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 21/39

Problemen bij niet-strikte vererving Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 22/39

Extra tests bij niet strikte vererving Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes Bij niet strikte vererving kan het voorkomen dat de overschreven methoden ook gebruikt worden in de ander methoden van de superklasse. Dat betekent dat alle vererfde methoden van de superklasse nog een keer getest moeten worden bij het testen van de afgeleide klasse HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 23/39

De pijltjes bepalen de volgorde Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes Uit het voorgaande vloeit voor onze tests in echte klassenomgevingen, waarin we een vervlechting van vererving en associaties hebben, een duidelijke volgorde voort. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 24/39

Testvolgorde voor methodes Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes 1 constructoren 2 get-methodes 3 boolean methodes, de is...()-testmethodes 4 set-methodes 5 iteratoren 6 complexe berekeningsmethodes of lokale procesbesturing binnen de klasse 7 overige methodes 8 destructoren HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 25/39

Invloed van zichtbaarheid (visibility) Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes 1 private alleen klassen intern zichtbaar 2 protected alleen klassen-intern en in afgeleide klassen zichtbaar 3 public overal zichtbaar 4 Default alleen zichtbaar binnen nhet package Het laatste kunnen we gebruiken om de klassen die niet buiten het package zichtbaar moeten zijn toch te kunnen testen. Hetzelfde geldt voor methoden met default visibility. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 26/39

Modale klasse Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers Niet modaal Er zijn geen beperkingen in de volgorde van het aanroepen van methodes of eventsen. Voorbeeld DateTime-klasse Uni-modaal: Er zijn sequentieafhankelijke beperkingen in de volgorde van het aanroepen van methodes en eventsen. Voorbeeld verkeerslicht-klasse Quasi-modaal: Wij vinden inhoudsafhankelijke beperkingen in de volgorde van het aanroepen van methodes en events. Voorbeeld stack-klasse. Modaal: De echte modale klassen hebben bedrijfsspecifieke beperkingen in de volgorde van het aanroepen van methodes en events alsook binnen parallelle functionele gebieden. Voorbeeld Account-klasse. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 27/39

Aanroepvolgorde en modaliteit. Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers Modaliteit zegt dat er een voorgeschreven aanroepvolgorde is. Beide groepen moeten getest worden. Voor de niet-modale methodes zijn er twee tests die in de praktijk deugdelijk zijn gebleken. Tests met verschillende oproepvolgordes Tests met herhaalde aanroepen van dezelfde methode Modale methodes testen we als volgt: Tests in de vereiste volgorde: Functioneert alles zoals het gespecifieerd is? Worden alleen maar correcte toestanden bereikt? Tests van elke verkeerde volgorde: Wijzen de methodes de aanroep in de verkeerde toestand af? Blijft de klasse in een stabiele, correcte toestand? HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 28/39

Het testpattern Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers geldige aanroepen van methodes die geaccepteerd moeten worden, illegale aanroepen van methodes die afgewezen moeten worden, de resulterende toestand voor het aanroepen van deze beide methodes, De resultaten van iedere aanroep van de methode. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 29/39

Het testpattern Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers Ontbrekende transitie: Een methode wordt afgewezen, hoewel ze bedrijfsspecifiek is toegestaan. Verkeerde actie: Het resultaat voor een bepaalde methode in een bepaalde toestand is verkeerd. Ongeldige resulterende toestand. Corrupte of inconsistente toestand Een geheime zijstraat staat het aanroepen van een methode toe, hoewel die niet toegestaan is. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 30/39

Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers Modale klasse: toestandsmodel van een reservering HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 31/39

Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers Modale klasse: toestandsmodel als boom HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 32/39

Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers Modale klasse: Tabel met toestandsovergangen reserved in use returned cancelled payed reserved in use returned cancelled payed : Geldige overgangen, ongeldige overgangen HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 33/39

Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers Modale hiërarchie: voorbeeld van geometrische klassen HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 34/39

Testcontext Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers Het testpattern voor een subklasse kent de volgende testcontext: De klasse die getest wordt is een concrete subklasse en erft van een modale superklasse, implementeert eigen gedrag en breidt het modale gedrag van de superklasse uit. De klasse moet conform haar eigen toestandsmodel en die van zijn superklasse zijn. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 35/39

Centrale foutenmogelijkheden Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers Een overschrijvende methode in onze subklasse produceert toestanden die een deelverzameling of uitbreidingen van de toestanden van de superklasse zijn, maar zonder de toestanden van de superklasse te kunnen veranderen. De superklasse heeft fouten die echter alleen bij het gebruik in de subklasse optreden. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 36/39

Andere veel voorkomende fouten Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers Alle op toestand gebaseerde fouten van de superklasse worden vererfd. Mogelijke nieuwe, op toestand gebaseerde fouten, die door de uitbreiding in de subklasse kunnen zijn ontstaan. Fouten die ontstaan zijn door de eisen aan de toestanden van de superklasse niet in acht te nemen. Een geldig bericht van de superklasse wordt afgewezen. Een ongeldig bericht van de superklasse wordt geaccepteerd. Naar aanleiding van het bericht van de superklasse vindt er een verkeerde actie plaats. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 37/39

Klassendiagram Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 38/39

Teststrategie Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers Iedere polymorfe methode moet in de omgeving van haar eigen klasse en in alle client-subklassen, die ze erven, getest worden. Client-klassen van de polymorfe server-klasse mogen door hun overschrijvingen geen fouten veroorzaken. Dit wordt gewaarborgd door zich te houden aan het substitutieprincipe. Daarenboven moet de correctheid van alle implementaties van de basisklassen-interface 1 en zijn afspraken getoetst worden. De tests worden dan als reviews of als automatische test-suites resp. test-scripts uitgevoerd. 1 In ons voorbeeld zijn het de abstracte methodes van GeomFigur. HOM/FHTeL Oplossingen voor het testen van objectgeoriënteerde software 14 maart 2013 39/39