14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
Oplossingen voor het testen van objectgeori¨enteerde software Pieter van den Hombergh Fontys Hogeschool voor Techniek en Logistiek Software Engineering
14 maart 2013
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
14 maart 2013
1/39
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
1
2 3
4
Vererving, een mes dat aan twee kanten snijdt Principes van objectgeori¨enteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hi¨erarchie¨en van vererving Volgorde in de ontwikkeling Testvolgorde in objectgeori¨enteerde programma’s Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes Testpattern: Tips voor de praktijk Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
2/39
Principes van objectgeori¨ enteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hi¨ erarchie¨ en van vererving
Een vierkant in een. . .
Soms is compositie een betere oplossing. Maar het is nog steeds oppassen geblazen.
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
14 maart 2013
1
3/39
14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
Principes van objectgeori¨ enteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hi¨ erarchie¨ en 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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
4/39
Principes van objectgeori¨ enteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hi¨ erarchie¨ en van vererving
Het substitutieprincipe volgens Liskov Substitueerbaar betekent: Exemplaren van een subklasse moeten onder alle omstandigheden in de plaats van exemplaren van elke superklasse inzetbaar zijn De pr´e-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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
5/39
Principes van objectgeori¨ enteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hi¨ erarchie¨ en 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¨ enteerde software
14 maart 2013
2
6/39
14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
Principes van objectgeori¨ enteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hi¨ erarchie¨ en van vererving
A deflated world Flattening schematisch: We laten de lucht uit de verervingshi¨ararchie en zien welke vererfde methodes in de subklasses opnieuw getest moeten worden.
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
7/39
Principes van objectgeori¨ enteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hi¨ erarchie¨ en van vererving
Drie regels voor de 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¨eren 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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
8/39
Principes van objectgeori¨ enteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hi¨ erarchie¨ en van vererving
Toevallige correctheid door vererving p u b l i c c l a s s Acc ou nt { p r o t e c t e d Date l a s t T x D a t e , t o d a y ; i n t newRequestsPerDay ( i n t n r R e q u e s t s ){ return ( nrRequests / daysSinceLastTransaction () ) ; } int daysSinceLastTransaction (){ r e t u r n ( t o d a y . day ( ) − l a s t T x D a t e . t x D a t e ( ) + 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 e x t e n d s Acco u nt { int daysSinceLastTransaction (){ r e t u r n ( t o d a y . day ( ) − l a s t T x D a t e . t x D a t e ( ) ) ; // n e w l y d e f i n e d } }
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
14 maart 2013
3
9/39
14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
Principes van objectgeori¨ enteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hi¨ erarchie¨ en 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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
10/39
Principes van objectgeori¨ enteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hi¨ erarchie¨ en van vererving
en de klasieke fout in java.util:
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
11/39
Principes van objectgeori¨ enteerde vererving Flattening: Welke methodes moeten getest worden? Typische fouten in hi¨ erarchie¨ en van vererving
Teststrategie bij vererving Anti extentionaliteit: Een testsuite resp. de testcases voor ´e´en 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¨entatie is dus een Denken in verantwoordelijkheden HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
14 maart 2013
4
12/39
14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
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¨ enteerde software
14 maart 2013
13/39
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
Structurele richtingen Daar komt nog de samenhang tussen klassen, dus structurele samenhang bij. top-down langs de verervingshi¨erarchie langs de associaties resp. de associatieketen
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
14 maart 2013
14/39
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
De orthogonale testeisen voor een klassentest
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
14 maart 2013
5
15/39
14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
De twee integratierichtingen architectuur-test: Op basis van de klassendiagrammen wordt langs de klassenhi¨erarchie 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¨enteerde programma’s plaatsvinden? Hoe dienen objectgeori¨enteerde programma’s gestructureerd te worden zodat deze tests kans op succes hebben? HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
16/39
Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes
Associaties Voorbeelden voor multipliciteitsbeperkingen bij associaties.
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
17/39
Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes
Multipliciteiten kunnen tot anomali¨en 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¨ enteerde software
14 maart 2013
6
18/39
14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
19/39
Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes
Vererving uit testers perspectief 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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
20/39
Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes
Strikte vererving
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
14 maart 2013
7
21/39
14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes
Problemen bij niet-strikte vererving
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
22/39
Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes
Extra tests bij niet strikte vererving 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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
23/39
Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes
De pijltjes bepalen de volgorde 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¨ enteerde software
14 maart 2013
8
24/39
14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes
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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
25/39
Associaties Vererving Testvolgorde bij vervlechting van associaties en vererving Testvolgorde voor methodes
Invloed van zichtbaarheid (visibility) 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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
26/39
Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers
Modale klasse 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¨ enteerde software
14 maart 2013
9
27/39
14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers
Aanroepvolgorde en modaliteit. 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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
28/39
Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers
Het testpattern 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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
29/39
Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers
Het testpattern 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¨ enteerde software
14 maart 2013
10
30/39
14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
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
reserved • in use × returned × cancelled × payed × •: Geldige overgangen, ×ongeldige
HOM/FHTeL
returned
• × × × × overgangen
× • × × ×
Oplossingen voor het testen van objectgeori¨ enteerde software
cancelled
payed
• × × × ×
× × • • ×
14 maart 2013
11
33/39
14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers
Modale hi¨erarchie: voorbeeld van geometrische klassen
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
34/39
Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers
Testcontext 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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
35/39
Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers
Centrale foutenmogelijkheden 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¨ enteerde software
14 maart 2013
12
36/39
14 maart 2013
Oplossingen voor het testen van objectgeori¨enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers
Andere veel voorkomende fouten 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¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
37/39
Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers
Klassendiagram
HOM/FHTeL
Oplossingen voor het testen van objectgeori¨ enteerde software
Overzicht Vererving, een mes dat aan twee kanten snijdt Volgorde in de ontwikkeling Testvolgorde in objectgeori¨ enteerde programma’s Testpattern: Tips voor de praktijk
14 maart 2013
38/39
Modale klasse Het testpattern Het testpattern voor modale klassen Niet-modale, polymorfe servers
Teststrategie 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-interface1 en zijn afspraken getoetst worden.
De tests worden dan als reviews of als automatische test-suites resp. test-scripts uitgevoerd.
1 HOM/FHTeL
In ons voorbeeld zijn het de abstracte methodes van GeomFigur. Oplossingen voor het testen van objectgeori¨ enteerde software
14 maart 2013
13
39/39