Leiden University. The university to discover. Leiden University. The university to discover....
-
Upload
mathijs-dijkstra -
Category
Documents
-
view
221 -
download
1
Transcript of Leiden University. The university to discover. Leiden University. The university to discover....
Leiden University. The university to discover.
“Software Engineering”
1 | 58
Testen
Leiden University. The university to discover.
“Software Engineering”
2 | 58Testmethoden
TMap Next – SogetiTestFrame – Logica (CMG)smarTEST – ValoriTestGoal – Collis (testfilosofie)
Leiden University. The university to discover.
“Software Engineering”
3 | 58
TestGoal: de tien testprincipes1. Focus op resultaat2. Bouw aan vertrouwen3. Neem verantwoordelijkheid4. Beheers het testvak5. Sla bruggen6. Test gefaseerd7. Faciliteer de gehele IT-lifecycle8. Geef overzicht en inzicht9. Zorg voor herbruikbaarheid10.Bedenk: testen is leuk
Leiden University. The university to discover.
“Software Engineering”
4 | 58TestGoal: de tien testprincipesFocus op resultaat
Test gefaseerd
Faciliteer de gehele IT-lifecycle
Zorg voor herbruikbaarheid
Businessresultaat
Work Breakdown StructureTestsoortenKwaliteitsattributen
Requirements en ontwerp toetsen op testbaarheid
Regressietesten
Leiden University. The university to discover.
“Software Engineering”
5 | 58Faciliteer de gehele IT-lifecycle
Leiden University. The university to discover.
“Software Engineering”
6 | 58Faciliteer de gehele IT-lifecycle
Requirements en ontwerp toetsen op testbaarheidKwaliteit van ontwerp in vroeg stadium vaststellen
Statische testen – toetsenreview, walkthrough, Inspectievoor documenten of code
Dynamisch testencode
Leiden University. The university to discover.
“Software Engineering”
7 | 58Test gefaseerd - testsoorten
Moduletest (unittest)IntegratietestSysteemtestAcceptatietestKetentestRegressietest
Leiden University. The university to discover.
“Software Engineering”
8 | 58Test gefaseerd – testsoorten - V-model
Leiden University. The university to discover.
“Software Engineering”
9 | 58
Test gefaseerd – testsoorten - V-model
Leiden University. The university to discover.
“Software Engineering”
10 | 58Moduletest
Integratietest:Top-down Gebruik stubs
dummy voor nog te ontwikkelenfunctionaliteit
Bottom-up Gebruik drivers
roept de reeds ontwikkelde modules aan
Combinatie top-down en bottom-up
Leiden University. The university to discover.
“Software Engineering”
11 | 58Logisch 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
Leiden University. The university to discover.
“Software Engineering”
12 | 58Stappenplan
OntwerpIntake testbasisOpstellen logische testgevallen (logisch testontwerp)
Op basis van testontwerptechniek
Opstellen fysieke testgevallen (fysiek testontwerp)Definiëren testdata
Leiden University. The university to discover.
“Software Engineering”
13 | 58Stappenplan
InrichtingTestautomatiseringBijvoorbeeld JUnit bij moduletesten
BorgingVaststellen regressietesten
UitvoeringBevindingenbeheerVrijgaveadviesTestrapportage
Leiden University. The university to discover.
“Software Engineering”
14 | 58Ontwerp
Leiden University. The university to discover.
“Software Engineering”
15 | 58Intake testbasis
Testbasis
Totaalverzameling van documenten en systeembeschrijvingen die definiëren waaraan het testobject moet voldoen
Requirements, specificaties
Use case beschrijvingenPSDcodeEnz
Leiden University. The university to discover.
“Software Engineering”
16 | 58Voorbeeld fysieke testgevallenTestbasis:
Specificaties: “Bereken de prijs van een theaterkaartje. 1e rang: 70 euro; 2e rang 50 euro; Onder de 18: 50% korting”
Fysieke testgevallen:Testactie
ID
Testactie Voer in: rang leeftijd
verwacht resultaat
1 1 21 70 2 1 16 35 3 2 21 50 4 2 16 25
Leiden University. The university to discover.
“Software Engineering”
17 | 58Voorbeeld 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): rang leeftijd resultaat
geval 1 rang = 1 lft >= 18 geen korting geval 2 rang = 1 lft < 18 korting geval 3 rang = 2 lft >= 18 geen korting geval 4 rang = 2 lft < 18 korting
Leiden University. The university to discover.
“Software Engineering”
18 | 58Voorbeeld 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): rang leeftijd resultaat
geval 1 rang = 1 lft >= 18 geen korting geval 2 rang = 2 lft < 18 korting
Leiden University. The university to discover.
“Software Engineering”
19 | 58Black/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 testbasisLogische testgevallen (en testacties) worden op grond
van specificaties opgesteld.
Leiden University. The university to discover.
“Software Engineering”
20 | 58White-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;
}
Leiden University. The university to discover.
“Software Engineering”
21 | 58logische testgevallen (white box)
Testbasis:1.Code2.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): rang leeftijd resultaat
geval 1 rang = 1 lft >= 18 geen korting geval 2 rang = 1 lft < 18 korting geval 3 rang ≠ 1 lft >= 18 geen korting geval 4 rang ≠ 1 lft < 18 korting
Leiden University. The university to discover.
“Software Engineering”
22 | 58fysieke testgevallen (white box)
Fysieke testgevallen:
Testactie ID
Testactie Voer in: rang leeftijd
verwacht resultaat
werkelijk resultaat
1 1 21 70 70 2 1 16 35 35 3 2 21 50 30 4 2 16 25 15
Leiden University. The university to discover.
“Software Engineering”
23 | 58fysieke testgevallen (white box)
Fysieke testgevallen - alternatief:
Testactie ID
Testactie Voer in: rang leeftijd
verwacht resultaat
werkelijk resultaat
1 1 21 70 70 2 1 16 35 35 3 3 21 fout? 30 4 3 16 fout? 15
Leiden University. The university to discover.
“Software Engineering”
24 | 58Testscripts
Het uitvoeren van testcases in een bepaalde volgorde noemt men een testscript.Deze wordt uitgevoerd door
De automatische testomgevingDe testerDe opdrachtgever
De volgorde is hierbij soms van belang, soms niet.
Leiden University. The university to discover.
“Software Engineering”
25 | 58Unit test: automatiseren
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); }}
interface Adder { int add(int a, int b);}class AdderImpl implements Adder { int add(int a, int b) { return a + b; }}
Bron: wikipedia
Leiden University. The university to discover.
“Software Engineering”
26 | 58Beslissingstabellentest
Testbasis: bevat conditiesGrondige techniek voor het testen van detailfunctionaliteit
Alle combinaties van de condities worden doorlopen
White box en black box is mogelijk
Leiden University. The university to discover.
“Software Engineering”
27 | 58Beslissingstabellentest
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 kortingCode fragment
Leiden University. The university to discover.
“Software Engineering”
28 | 58Beslissingstabellentest
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;}
Leiden University. The university to discover.
“Software Engineering”
29 | 58Identificatie testsituaties
Bepaal condities in de testbasis:Conditie is altijd enkelvoudig
Opstellen conditielijstBepalen acties/resultaten in de testbasisOpstellen actielijstOpstellen beslissingtabel
Leiden University. The university to discover.
“Software Engineering”
30 | 58Identificatie testsituaties
TestsituatieCondities/acties 1 2 3 4 5 6 7 8
C1: lft > 65 0 0 0 0 1 1 1 1
C2: lft < 18 0 0 1 1 0 0 1 1
C3: gehuwd 0 1 0 1 0 1 0 1
A1/R1:Korting = 0 X
A2/R2: Korting = 5 X X X X
A3/R3: Korting = 10 X X X X X X
Opmerking: kortingen optellen
Leiden University. The university to discover.
“Software Engineering”
31 | 58Opstellen logische testgevallenLogische testgevallen 1 2 3 4 5 6 7 8
C1: lft > 65 0 0 0 0 1 1 1 1
C2: lft < 180 0 1 1 0 0 1 1
C3: gehuwd 0 1 0 1 0 1 0 1
A1/R1:Korting = 0 X
A2/R2: Korting = 5X X X
A3/R3: Korting = 10 X X X X
Niet mogelijk X X
Opmerking: kortingen optellen
Leiden University. The university to discover.
“Software Engineering”
32 | 58Opstellen fysieke testgevallen
Logische testgevallen 1 2 3 4 5 6
Actie: invoeren leeftijd
25 25 16 16 70 70
Actie: invoerengehuwd
false true false true false true
Resultaat:Korting 0 5 10 15 10 15
Leiden University. The university to discover.
“Software Engineering”
33 | 58Opstellen fysieke testgevallen
Logische testgevallen
Actie:Invoeren leeftijd
Actie:Invoeren gehuwd
Resultaat:korting
Geval 1 25 false 0
Geval 2 25 true 5
Geval 3 16 false 10
Geval 4 16 true 15
Geval 5 70 false 10
Geval 6 70 true 15
Leiden University. The university to discover.
“Software Engineering”
34 | 58Opstellen testscript
De volgorde van de tests maakt hier niets uit.Geef b.v. aan dat de tests in de gegeven volgorde uitgevoerd moeten worden.
Leiden University. The university to discover.
“Software Engineering”
35 | 58beslissingstabellentestnaam 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.
Leiden University. The university to discover.
“Software Engineering”
36 | 58Identificatie testsituatiesTestsituatieCondities/acties 1 2 3 4 5 6 7 8
C1: sport = ‘H’ 0 0 0 0 1 1 1 1
C2: sport = ‘V’ 0 0 1 1 0 0 1 1
C3: lft > 45 0 1 0 1 0 1 0 1
A1/R1:contributie = 150 X X
A2/R2: contributie = 100 X X
A3/R3: Korting = 50% X X X
Foutmelding sport X X
Niet mogelijk X X
Leiden University. The university to discover.
“Software Engineering”
37 | 58Opstellen logische testgevallen
TestsituatieCondities/acties 1 2 3 4 5 6
C1: sport = ‘H’ 0 0 0 0 1 1
C2: sport = ‘V’ 0 0 1 1 0 0
C3: lft > 45 0 1 0 1 0 1
A1/R1:contributie = 150 X X
A2/R2: contributie = 100 X X
A3/R3: Korting = 50% X X X
Foutmelding sport X X
Leiden University. The university to discover.
“Software Engineering”
38 | 58Opstellen fysieke testgevallen
Logische testgevallen
Actie:Invoeren sport
Actie:Invoeren leeftijd
Resultaat:contributie
Geval 1 “P” 40 foutmelding
Geval 2 “P” 50 foutmelding
Geval 3 “V” 40 100
Geval 4 “V” 50 50
Geval 5 “H” 40 150
Geval 6 “H” 50 75
Leiden University. The university to discover.
“Software Engineering”
39 | 58AlgoritmetestGrondige 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
Leiden University. The university to discover.
“Software Engineering”
40 | 58Algoritmetest - 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
Leiden University. The university to discover.
“Software Engineering”
41 | 58Algoritmetest
Leiden University. The university to discover.
“Software Engineering”
42 | 58Identificatie testsituaties
1. Opstellen stroomschemaVaststellen acties/statementsVaststellen padenVaststellen beslispunten
2. Vaststellen beslispunten en in en uitgaande paden
3. Vaststellen van de feitelijke testsituaties:Bij testmaat 1: padenBij testmaat 2: padcombinaties
Leiden University. The university to discover.
“Software Engineering”
43 | 58Identificatie testsituaties
start
actie a
A
actie b actie c
actie d
eind
actie ben c
1
2 3
4
1. Opstellen stroomschema
Leiden University. The university to discover.
“Software Engineering”
44 | 58Identificatie testsituaties
2. Vaststellen beslispunten en in en uitgaande paden
Beslispunt A:
IN: 1,2,3
UIT: 2,3,4
3. 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;
Leiden University. The university to discover.
“Software Engineering”
45 | 58Opstellen logische testgevallen
Alle testsituaties moeten tenminste één keer doorlopen worden.
Testmaat 1: Elk pad wordt 1 keer doorlopenTestmaat 2: Alle combinaties van 2 opeenvolgende paden zijn afgedekt
Herhalingen moeten bij testmaat 1: 0 én 1 of meer keer doorlopen wordenHerhalingen moeten bij testmaat 2: 0 én 1 én 2 of meer keer doorlopen wordenHet hele algoritme moet doorlopen worden (elk logisch testgeval begint dus bij pad 1 en eindigt bij pad 4).
Leiden University. The university to discover.
“Software Engineering”
46 | 58Opstellen logische testgevallen
Testmaat 1
testgeval paden1 1-4 0 herhalingen2 1-2-3-4 2 herhalingen
Testmaat 2
testgeval paden1 1-4 0 herhalingen2 1-2-4 1 herhalingen3 1-3-2-2-3-3-4 5 herhalingen
Leiden University. The university to discover.
“Software Engineering”
47 | 58Opstellen fysieke testgevallen
Testmaat 1logischetestgevallen
Actie:Invoeren getal
Verwacht resultaat
Werkelijk resultaat
Geval 1 0
Geval 2 4 8 0 4 1 8 1
Testmaat 2logischetestgevallen
Actie:Invoeren getal
Verwacht resultaat
Werkelijk resultaat
Geval 1 0
Geval 2 4 0 4 1
Geval 3 onmogelijk
Leiden University. The university to discover.
“Software Engineering”
48 | 58Opstellen fysieke testgevallenAanpassen logische testgevallen
Testmaat 2 Fysieke testgevallen
logischetestgevallen
Actie:Invoeren getal
Verwacht resultaat
Werkelijk resultaat
Geval 1 0
Geval 2 4 0 4 1
Geval 3 4 8 6 6 6 2 0 4 1 8 1 6 3 2 1
Testmaat 2 Logische testgevallen
testgeval paden1 1-4 0 herhalingen2 1-2-4 1 herhalingen3 1-2-3-3-2-2-3-
46 herhalingen
Leiden University. The university to discover.
“Software Engineering”
49 | 58Test coverages
Testen hebben verschillende dekkingsgradenTester bepaalt welke dekkingsgraad vereist is.
Leiden University. The university to discover.
“Software Engineering”
50 | 58Path coverage
Elk pad en elke combinatie van paden worden doorlopen.
Voorbeeld: algoritmetest
Leiden University. The university to discover.
“Software Engineering”
51 | 58Statement coverage
Elk statement wordt tenminste 1 keer uitgevoerdZwakker dan padendekking met testmaat 1;Voorbeeld:
x = 0;if a > b x = 1;a = b/x;
start
x = 0
a > b
x = 1
a = b/x
eind
1
2 3
Leiden University. The university to discover.
“Software Engineering”
52 | 58
Dekkingsvormen m.b.t. beslispuntenEen 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
Leiden University. The university to discover.
“Software Engineering”
53 | 58
Dekkingsvormen m.b.t. beslispuntenCondition coverage:De mogelijke uitkomsten (true, false) van elke
conditie worden minimaal 1 keer getest
aantal boeken< 5 and uitstaande boete < 25Logische testgevallen
aantal < 5 boete < 25 resultaat
Geval 1 1 0 0 (niet uitlenen)
Geval 2 0 1 0 (niet uitlenen)Fysieke testgevallen aantal boete resultaat
Geval 1 4 30 niet uitlenen
Geval 2 6 20 niet uitlenen
Leiden University. The university to discover.
“Software Engineering”
54 | 58
Dekkingsvormen m.b.t. beslispuntenDecision coverage:De mogelijke uitkomsten (true, false) van de
beslissing worden minimaal 1 keer getest
aantal boeken< 5 and uitstaande boete < 25Logische testgevallen
aantal < 5 boete < 25 resultaat
Geval 1 1 1 1(uitlenen)
Geval 2 0 1 0 (niet uitlenen)
Fysieke testgevallen
aantal boete resultaat
Geval 1 4 30 uitlenen
Geval 2 6 30 niet uitlenen
Leiden University. The university to discover.
“Software Engineering”
55 | 58
Dekkingsvormen m.b.t. beslispuntenCondition/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 < 25Logische testgevallen aantal < 5 boete < 25 resultaat
Geval 1 1 1 1(uitlenen)
Geval 2 0 0 0 (niet uitlenen)
Fysieke testgevallen aantal boete resultaat
Geval 1 4 20 uitlenen
Geval 2 6 30 niet uitlenen
Leiden University. The university to discover.
“Software Engineering”
56 | 58Dekkingsvormen m.b.t. beslispuntenModified 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 0 1 0 (niet uitlenen)
Geval 2 1 0 0 (niet uitlenen
Geval 3 1 1 1 (uitlenen)
Leiden University. The university to discover.
“Software Engineering”
57 | 58Dekkingsvormen m.b.t. beslispuntenMultiple 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 0 0 (niet uitlenen
Geval 2 0 1 0 (niet uitlenen)
Geval 3 1 0 0 (niet uitlenen
Geval 4 1 1 1 (uitlenen)
Leiden University. The university to discover.
“Software Engineering”
58 | 58Opdracht in practicum
Lever voor jullie applicatie testscripts die kunnen dienen als acceptatietest.Lever indien wenselijk (lastige algoritmes) ook testscripts voor whitebox testingVergeet niet de integratietesten! Deze zijn ook onderdeel van de acceptatie.
Werk dus samen met de collegagroepJe hoeft geen systeemtest te leveren.
Leiden University. The university to discover.
“Software Engineering”
59 | 58Bronvermelding
Sheets zijn gebaseerd op:TestGoalT-MapSheets van De Haagse Hogeschool
Blokken I-2 & D