Testen
Testmethoden TMap Next – Sogeti TestFrame – Logica (CMG) smarTEST – Valori TestGoal – Collis (testfilosofie)
TestGoal: de tien testprincipes Focus op resultaat Bouw aan vertrouwen Neem verantwoordelijkheid Beheers het testvak Sla bruggen Test gefaseerd Faciliteer de gehele IT-lifecycle Geef overzicht en inzicht Zorg voor herbruikbaarheid Bedenk: testen is leuk
TestGoal: de tien testprincipes Focus op resultaat Test gefaseerd Faciliteer de gehele IT-lifecycle Zorg voor herbruikbaarheid Businessresultaat Work Breakdown Structure Testsoorten Kwaliteitsattributen Requirements en ontwerp toetsen op testbaarheid Regressietesten
Faciliteer de gehele IT-lifecycle 3-4-2017 Faciliteer de gehele IT-lifecycle Ton Biegstraaten
Faciliteer de gehele IT-lifecycle Requirements en ontwerp toetsen op testbaarheid Kwaliteit van ontwerp in vroeg stadium vaststellen Statische testen – toetsen review, walkthrough, Inspectie voor documenten of code Dynamisch testen code
Test gefaseerd - testsoorten Moduletest (unittest) Integratietest Systeemtest Acceptatietest Ketentest Regressietest
Test gefaseerd – testsoorten - V-model Systeem acceatatietest: op grond van requirements Gebruikers acceptatietest: validerende test: is gebouwd wat bedoeld is
Test gefaseerd – testsoorten - V-model 3-4-2017 Test gefaseerd – testsoorten - V-model Oorspronkelijk gebaseerd op het waterval model. Ook bruikbaar bij iteratieve methoden. Dynamische testen zijn op te stellen in een zeer vroeg stadium. Een opgestelde acceptatietest draagt ook bij aan de kwaliteit van requirements. Ton Biegstraaten
Integratietest: Moduletest Top-down Gebruik stubs dummy voor nog te ontwikkelen functionaliteit Bottom-up Gebruik drivers roept de reeds ontwikkelde modules aan Combinatie top-down en bottom-up
Logisch versus fysiek testontwerp 3-4-2017 Logisch versus fysiek testontwerp Logisch testontwerp (logische testgevallen): Beschrijft WAT er getest moet worden Fysiek testontwerp (fysieke testgevallen): Beschrijft HOE er getest moet worden © Haagse Hogeschool Academie voor ICT & Media Ton Biegstraaten
Ontwerp Stappenplan Intake testbasis Opstellen logische testgevallen (logisch testontwerp) Op basis van testontwerptechniek Opstellen fysieke testgevallen (fysiek testontwerp) Definiëren testdata
Inrichting Uitvoering Borging Stappenplan Testautomatisering Bijvoorbeeld JUnit bij moduletesten Uitvoering Bevindingenbeheer Vrijgaveadvies Testrapportage Borging Vaststellen regressietesten
Ontwerp
Testbasis Intake testbasis Totaalverzameling van documenten en 3-4-2017 Intake testbasis Testbasis Totaalverzameling van documenten en systeembeschrijvingen die definiëren waaraan het testobject moet voldoen Requirements, specificaties Use case beschrijvingen PSD code Enz Ton Biegstraaten
Voorbeeld fysieke testgevallen 3-4-2017 Voorbeeld fysieke testgevallen Testbasis: Specificaties: “Bereken de prijs van een theaterkaartje. 1e rang: 70 euro; 2e rang 50 euro; Onder de 18: 50% korting” Fysieke testgevallen: Ton Biegstraaten
Voorbeeld logische testgevallen 3-4-2017 Voorbeeld logische testgevallen Testbasis: Specificaties: “Bereken de prijs van een theaterkaartje. 1e rang: 70 euro; 2e rang 50 euro; Onder de 18: 50% korting” Logische testgevallen (beslissingstabellentest): Ton Biegstraaten
Voorbeeld logische testgevallen 3-4-2017 Voorbeeld logische testgevallen Testbasis: Specificaties: “Bereken de prijs van een theaterkaartje. 1e rang: 70 euro; 2e rang 50 euro; Onder de 18: 50% korting” Logische testgevallen (equivalentieklassen): Ton Biegstraaten
Black/White-box test White-box: 3-4-2017 Black/White-box test White-box: PSD of code is onderdeel van de testbasis. Logische testgevallen (en testacties) worden op grond van PSD of code opgesteld. Verwacht resultaat altijd op grond van specificaties Black-box: Structuur van de code is geen onderdeel van de testbasis Logische testgevallen (en testacties) worden op grond van specificaties opgesteld. Overgang vaak gradueel door gebruik van pseudo code. Hierdoor technieken soms zowel voor black als white-box benadering bruikbaar. Het hangt van de wijze van specificatie af. Black-box vaak op basis van de uiteindelijke versie van een programma, white-box op gedeelten van een programma, door ontwikkelaar/programmeur/integrator. Dit alles maakt gebruik van het draaien van code. Dit is traditioneel de enige methode. Testen kan meer omvatten. Ton Biegstraaten
Code is onderdeel van de testbasis: 3-4-2017 White-box test Code is onderdeel van de testbasis: double berekenPrijs ( int leeftijd, int rang) { double prijs = 0 ; if (rang == 1) prijs = 70; else prijs = 30; if (leeftijd < 18) prijs = prijs / 2; return prijs; } Ton Biegstraaten
logische testgevallen (white box) 3-4-2017 logische testgevallen (white box) Testbasis: Code Specificaties: “Bereken de prijs van een theaterkaartje. 1e rang: 70 euro; 2e rang 50 euro; Onder de 18: 50% korting” Logische testgevallen op grond van code (white box): Code: rang =1; rang<>1 Specificaties: rang = 1; rang = 2 (zie eerder op sheet) Ton Biegstraaten
fysieke testgevallen (white box) 3-4-2017 fysieke testgevallen (white box) Fysieke testgevallen: Ton Biegstraaten
fysieke testgevallen (white box) 3-4-2017 fysieke testgevallen (white box) Fysieke testgevallen - alternatief: Ton Biegstraaten
Testscripts Het uitvoeren van testcases in een bepaalde volgorde noemt men een testscript. Deze wordt uitgevoerd door De automatische testomgeving De tester De opdrachtgever De volgorde is hierbij soms van belang, soms niet.
Unit test: automatiseren interface Adder { int add(int a, int b); } class AdderImpl implements Adder { int add(int a, int b) { return a + b; public class TestAdder { public void testSum() { Adder adder = new AdderImpl(); // can it add positive numbers? assert(adder.add(1, 1) == 2); assert(adder.add(1, 2) == 3); assert(adder.add(2, 2) == 4); // is zero neutral? assert(adder.add(0, 0) == 0); // can it add negative numbers? assert(adder.add(-1, -2) == -3); // can it add a positive and a negative? assert(adder.add(-1, 1) == 0); // how about larger numbers? assert(adder.add(1234, 988) == 2222); } Bron: wikipedia
Beslissingstabellentest 3-4-2017 Beslissingstabellentest Testbasis: bevat condities Grondige techniek voor het testen van detailfunctionaliteit Alle combinaties van de condities worden doorlopen White box en black box is mogelijk Ton Biegstraaten
Beslissingstabellentest 3-4-2017 Beslissingstabellentest Testbasis: Specificaties: Berekening korting bij een pretpark is als volgt: 65 plussers en jeugd onder de 18 krijgen 10 euro korting. Een gehuwd persoon krijgt 5 euro korting Code fragment Ton Biegstraaten
Beslissingstabellentest 3-4-2017 Beslissingstabellentest Te testen code (onderdeel testbasis): int berekenkorting (int leeftijd, boolean gehuwd) { int korting = 0; if (leeftijd > 65 || leeftijd < 18) korting = korting + 10; if (gehuwd) korting = korting + 7; //foutje dus return korting; } Ton Biegstraaten
Identificatie testsituaties 3-4-2017 Identificatie testsituaties Bepaal condities in de testbasis: Conditie is altijd enkelvoudig Opstellen conditielijst Bepalen acties/resultaten in de testbasis Opstellen actielijst Opstellen beslissingtabel Ton Biegstraaten
Identificatie testsituaties 3-4-2017 Identificatie testsituaties Testsituatie Condities/acties 1 2 3 4 5 6 7 8 C1: lft > 65 C2: lft < 18 C3: gehuwd A1/R1:Korting = 0 X A2/R2: Korting = 5 A3/R3: Korting = 10 Opmerking: kortingen optellen Ton Biegstraaten
Opstellen logische testgevallen 3-4-2017 Opstellen logische testgevallen Logische testgevallen 1 2 3 4 5 6 7 8 C1: lft > 65 C2: lft < 18 C3: gehuwd A1/R1:Korting = 0 X A2/R2: Korting = 5 A3/R3: Korting = 10 Niet mogelijk Opmerking: kortingen optellen Ton Biegstraaten
Opstellen fysieke testgevallen 3-4-2017 Opstellen fysieke testgevallen Logische testgevallen 1 2 3 4 5 6 Actie: invoeren leeftijd 25 16 70 Actie: invoeren gehuwd false true Resultaat: Korting 10 15 Ton Biegstraaten
Opstellen fysieke testgevallen 3-4-2017 Opstellen fysieke testgevallen Logische testgevallen Actie: Invoeren leeftijd Invoeren gehuwd Resultaat: korting Geval 1 25 false Geval 2 true 5 Geval 3 16 10 Geval 4 15 Geval 5 70 Geval 6 Ton Biegstraaten
Opstellen testscript De volgorde van de tests maakt hier niets uit. 3-4-2017 Opstellen testscript De volgorde van de tests maakt hier niets uit. Geef b.v. aan dat de tests in de gegeven volgorde uitgevoerd moeten worden. Ton Biegstraaten
beslissingstabellentest naam Bereken contributie per jaar samenvatting Berekent de contributie voor een lid van de sportvereniging. De contributie is afhankelijk van de beoefende sport en de leeftijd van het lid. actoren penningmeester aannamen De penningmeester kent de sport die het lid beoefent en is ook op de hoogte van zijn leeftijd beschrijving [1] De penningmeester voert een 'H' of een 'V' in afhankelijk van of de beoefende sport handbal of voetbal is. [2] De penningmeester voert de leeftijd in. [3] De penningmeester drukt op de knop 'OK' [4] Het systeem berekent de contributie en toont dit op het scherm. uitzondering [onbestaande sport] Als geen sport wordt opgegeven of er een verkeerde invoer gegeven wordt verschijnt de melding "Sport moet 'H' of 'V' zijn“. resultaat De contributie is berekend volgens onderstaande regels, en is op het scherm getoond. Contributieregels: - Handballers betalen 150 euro - Voetballers betalen 100 euro - Bovendien krijgen leden ouder dan 45 jaar 50% korting.
Identificatie testsituaties 3-4-2017 Identificatie testsituaties Testsituatie Condities/acties 1 2 3 4 5 6 7 8 C1: sport = ‘H’ C2: sport = ‘V’ C3: lft > 45 A1/R1:contributie = 150 X A2/R2: contributie = 100 A3/R3: Korting = 50% Foutmelding sport Niet mogelijk Ton Biegstraaten
Opstellen logische testgevallen 3-4-2017 Opstellen logische testgevallen Testsituatie Condities/acties 1 2 3 4 5 6 C1: sport = ‘H’ C2: sport = ‘V’ C3: lft > 45 A1/R1:contributie = 150 X A2/R2: contributie = 100 A3/R3: Korting = 50% Foutmelding sport Ton Biegstraaten
Opstellen fysieke testgevallen 3-4-2017 Opstellen fysieke testgevallen Logische testgevallen Actie: Invoeren sport Invoeren leeftijd Resultaat: contributie Geval 1 “P” 40 foutmelding Geval 2 50 Geval 3 “V” 100 Geval 4 Geval 5 “H” 150 Geval 6 75 Ton Biegstraaten
3-4-2017 Algoritmetest Grondige techniek voor het testen van detailfunctionaliteit; kwaliteitstattribuut: functionality Testbasis: bevat code of PSD (verwerkingslogica met beslispunten en paden); Het gedrag van het systeem is dus beschreven m.b.v. beslispunten en paden. Formele white box testontwerptechniek Ton Biegstraaten
Algoritmetest - voorbeeld 3-4-2017 Algoritmetest - voorbeeld Testbasis: Specificaties: Lees een aantal getallen in, afgesloten door een 0 (nul). Druk dezelfde getallen eenmaal af en daarachter hoe vaak dit getal voorkomt. PSD - verwerkingslogica met beslispunten en paden Ton Biegstraaten
Algoritmetest
Identificatie testsituaties 3-4-2017 Identificatie testsituaties Opstellen stroomschema Vaststellen acties/statements Vaststellen paden Vaststellen beslispunten Vaststellen beslispunten en in en uitgaande paden Vaststellen van de feitelijke testsituaties: Bij testmaat 1: paden Bij testmaat 2: padcombinaties Ton Biegstraaten
Identificatie testsituaties 3-4-2017 Identificatie testsituaties Opstellen stroomschema Ton Biegstraaten
Identificatie testsituaties 3-4-2017 Identificatie testsituaties Vaststellen beslispunten en in en uitgaande paden Beslispunt A: IN: 1,2,3 UIT: 2,3,4 Vaststellen van de feitelijke testsituaties: Bij testmaat 1: paden 1;2;3;4; Bij testmaat 2: padcombinaties: 1-2; 1-3; 1-4; 2-2; 2-3; 2-4; 3-2; 3-3; 3-4; Ton Biegstraaten
Opstellen logische testgevallen 3-4-2017 Opstellen logische testgevallen Alle testsituaties moeten tenminste één keer doorlopen worden. Testmaat 1: Elk pad wordt 1 keer doorlopen Testmaat 2: Alle combinaties van 2 opeenvolgende paden zijn afgedekt Herhalingen moeten bij testmaat 1: 0 én 1 of meer keer doorlopen worden Herhalingen moeten bij testmaat 2: 0 én 1 én 2 of meer keer doorlopen worden Het hele algoritme moet doorlopen worden (elk logisch testgeval begint dus bij pad 1 en eindigt bij pad 4). Ton Biegstraaten
Opstellen logische testgevallen 3-4-2017 Opstellen logische testgevallen Testmaat 1 testgeval paden 1 1-4 0 herhalingen 2 1-2-3-4 2 herhalingen Testmaat 2 testgeval paden 1 1-4 0 herhalingen 2 1-2-4 1 herhalingen 3 1-3-2-2-3-3-4 5 herhalingen Ton Biegstraaten
Opstellen fysieke testgevallen 3-4-2017 Opstellen fysieke testgevallen Testmaat 1 logische testgevallen Actie: Invoeren getal Verwacht resultaat Werkelijk resultaat Geval 1 Geval 2 4 8 0 4 1 8 1 Testmaat 2 logische testgevallen Actie: Invoeren getal Verwacht resultaat Werkelijk resultaat Geval 1 Geval 2 4 0 4 1 Geval 3 onmogelijk Ton Biegstraaten
Opstellen fysieke testgevallen Aanpassen logische testgevallen 3-4-2017 Opstellen fysieke testgevallen Aanpassen logische testgevallen Testmaat 2 Logische testgevallen testgeval paden 1 1-4 0 herhalingen 2 1-2-4 1 herhalingen 3 1-2-3-3-2-2-3-4 6 herhalingen Testmaat 2 Fysieke testgevallen logische testgevallen Actie: Invoeren getal Verwacht resultaat Werkelijk resultaat Geval 1 Geval 2 4 0 4 1 Geval 3 4 8 6 6 6 2 0 4 1 8 1 6 3 2 1 Ton Biegstraaten
Test coverages Testen hebben verschillende dekkingsgraden Tester bepaalt welke dekkingsgraad vereist is.
Path coverage Elk pad en elke combinatie van paden worden doorlopen. 3-4-2017 Path coverage Elk pad en elke combinatie van paden worden doorlopen. Voorbeeld: algoritmetest Ton Biegstraaten
Statement coverage Elk statement wordt tenminste 1 keer uitgevoerd 3-4-2017 Statement coverage Elk statement wordt tenminste 1 keer uitgevoerd Zwakker dan padendekking met testmaat 1; Voorbeeld: x = 0; if a > b x = 1; a = b/x; Ton Biegstraaten
Dekkingsvormen m.b.t. beslispunten Een beslispunt is een samenstelling van een of meer condities, die de voorwaarden definieert voor de verschillende mogelijkheden in het systeemgedrag. Testbasis: bevat in ieder geval een formele beschrijving van het beslispunt, waarbij de afzonderlijke condities verbonden zijn met and, or, not Dekkingsvormen gaan altijd over precies één beslispunt Black box en white box Voorbeeld: aantal boeken< 5 and uitstaande boete < 25
Dekkingsvormen m.b.t. beslispunten Condition coverage: De mogelijke uitkomsten (true, false) van elke conditie worden minimaal 1 keer getest aantal boeken< 5 and uitstaande boete < 25 Logische testgevallen aantal < 5 boete < 25 resultaat Geval 1 1 0 (niet uitlenen) Geval 2 Fysieke testgevallen aantal boete resultaat Geval 1 4 30 niet uitlenen Geval 2 6 20
Dekkingsvormen m.b.t. beslispunten Decision coverage: De mogelijke uitkomsten (true, false) van de beslissing worden minimaal 1 keer getest aantal boeken< 5 and uitstaande boete < 25 Logische testgevallen aantal < 5 boete < 25 resultaat Geval 1 1 1(uitlenen) Geval 2 0 (niet uitlenen) Fysieke testgevallen aantal boete resultaat Geval 1 4 30 uitlenen Geval 2 6 niet uitlenen
Dekkingsvormen m.b.t. beslispunten Condition/Decision coverage: De mogelijke uitkomsten (true, false) van elke conditie én van de beslissing worden minimaal 1 keer getest. Dit impliceert zowel condition coverage als decision coverage aantal boeken< 5 and uitstaande boete < 25 Logische testgevallen aantal < 5 boete < 25 resultaat Geval 1 1 1(uitlenen) Geval 2 0 (niet uitlenen) Fysieke testgevallen aantal boete resultaat Geval 1 4 20 uitlenen Geval 2 6 30 niet uitlenen
Dekkingsvormen m.b.t. beslispunten Modified Condition/Decision coverage: Elke mogelijke uitkomst (true, false) van een conditie is minimaal één keer bepalend voor de uitkomst van de beslissing Dit impliceert condition/decision coverage aantal boeken< 5 and uitstaande boete < 25 Logische testgevallen aantal < 5 boete < 25 resultaat Geval 1 1 0 (niet uitlenen) Geval 2 0 (niet uitlenen Geval 3 1 (uitlenen)
Dekkingsvormen m.b.t. beslispunten Multiple Condition coverage: De mogelijke combinaties van uitkomsten (true, false) van elke conditie in een beslissing worden minimaal 1 keer getest (volledige beslissingstabel) Dit impliceert modified condition/decision coverage aantal boeken< 5 and uitstaande boete < 25 Logische testgevallen aantal < 5 boete < 25 resultaat Geval 1 0 (niet uitlenen Geval 2 1 0 (niet uitlenen) Geval 3 Geval 4 1 (uitlenen)
Opdracht in practicum Lever voor jullie applicatie testscripts die kunnen dienen als acceptatietest. Lever indien wenselijk (lastige algoritmes) ook testscripts voor whitebox testing Vergeet niet de integratietesten! Deze zijn ook onderdeel van de acceptatie. Werk dus samen met de collegagroep Je hoeft geen systeemtest te leveren.
Bronvermelding Sheets zijn gebaseerd op: TestGoal T-Map Sheets van De Haagse Hogeschool Blokken I-2 & D