Software Engineering

Download Report

Transcript Software Engineering

1 | 58
Testen
“Software Engineering”
Leiden University. The university to discover.
Testmethoden
2 | 58
TMap Next – Sogeti
TestFrame – Logica (CMG)
smarTEST – Valori
TestGoal – Collis (testfilosofie)
“Software Engineering”
Leiden University. The university to discover.
TestGoal: de tien testprincipes
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
3 | 58
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
“Software Engineering”
Leiden University. The university to discover.
TestGoal: de tien testprincipes
4 | 58
Focus op resultaat

Businessresultaat
Test gefaseerd
Work Breakdown Structure
Testsoorten
Kwaliteitsattributen
Faciliteer de gehele IT-lifecycle
Requirements en ontwerp toetsen op testbaarheid
Zorg voor herbruikbaarheid
Regressietesten
“Software Engineering”
Leiden University. The university to discover.
Faciliteer de gehele IT-lifecycle
“Software Engineering”
5 | 58
Leiden University. The university to discover.
Faciliteer de gehele IT-lifecycle
6 | 58
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
“Software Engineering”
Leiden University. The university to discover.
Test gefaseerd - testsoorten
7 | 58
Moduletest (unittest)
Integratietest
Systeemtest
Acceptatietest
Ketentest
Regressietest
“Software Engineering”
Leiden University. The university to discover.
Test gefaseerd – testsoorten - V-model
“Software Engineering”
8 | 58
Leiden University. The university to discover.
Test gefaseerd – testsoorten - V-model
“Software Engineering”
9 | 58
Leiden University. The university to discover.
Moduletest
10 | 58
Integratietest:
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
“Software Engineering”
Leiden University. The university to discover.
Logisch versus fysiek testontwerp
11 | 58
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
“Software Engineering”
Leiden University. The university to discover.
Stappenplan
12 | 58
Ontwerp
Intake testbasis
Opstellen logische testgevallen (logisch testontwerp)
Op basis van testontwerptechniek
Opstellen fysieke testgevallen (fysiek testontwerp)
Definiëren testdata
“Software Engineering”
Leiden University. The university to discover.
Stappenplan
13 | 58
Inrichting
Testautomatisering
Bijvoorbeeld JUnit bij moduletesten
Uitvoering
 Bevindingenbeheer
 Vrijgaveadvies
 Testrapportage
Borging
 Vaststellen regressietesten
“Software Engineering”
Leiden University. The university to discover.
Ontwerp
“Software Engineering”
14 | 58
Leiden University. The university to discover.
Intake testbasis
15 | 58
Testbasis
Totaalverzameling van documenten en
systeembeschrijvingen die definiëren
waaraan het testobject moet voldoen
 Requirements, specificaties
 Use case beschrijvingen
 PSD
 code
 Enz
“Software Engineering”
Leiden University. The university to discover.
Voorbeeld fysieke testgevallen
16 | 58
Testbasis:
Specificaties: “Bereken de prijs van een
theaterkaartje.
1e rang: 70 euro; 2e rang 50 euro;
Onder de 18: 50% korting”
Fysieke testgevallen:
Testactie
verwacht resultaat
Testactie
Voer in:
ID
rang leeftijd
1
1
21
70
2
1
16
35
3
2
21
50
4
2
16
25
“Software Engineering”
Leiden University. The university to discover.
Voorbeeld logische testgevallen
17 | 58
Testbasis:
Specificaties: “Bereken de prijs van een
theaterkaartje.
1e rang: 70 euro; 2e rang 50 euro;
Onder de 18: 50% korting”
Logische testgevallen (beslissingstabellentest):
geval 1
geval 2
geval 3
geval 4
“Software Engineering”
rang
rang = 1
rang = 1
rang = 2
rang = 2
leeftijd
lft >= 18
lft < 18
lft >= 18
lft < 18
resultaat
geen korting
korting
geen korting
korting
Leiden University. The university to discover.
Voorbeeld logische testgevallen
18 | 58
Testbasis:
Specificaties: “Bereken de prijs van een
theaterkaartje.
1e rang: 70 euro; 2e rang 50 euro;
Onder de 18: 50% korting”
Logische testgevallen (equivalentieklassen):
geval 1
geval 2
“Software Engineering”
rang
rang = 1
rang = 2
leeftijd resultaat
lft >= 18 geen korting
lft < 18 korting
Leiden University. The university to discover.
Black/White-box test
19 | 58
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.
“Software Engineering”
Leiden University. The university to discover.
White-box test
20 | 58
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;
}
“Software Engineering”
Leiden University. The university to discover.
logische testgevallen (white box)
21 | 58
Testbasis:
1. Code
2. 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):
geval 1
geval 2
geval 3
geval 4
“Software Engineering”
rang
rang = 1
rang = 1
rang ≠ 1
rang ≠ 1
leeftijd
lft >= 18
lft < 18
lft >= 18
lft < 18
resultaat
geen korting
korting
geen korting
korting
Leiden University. The university to discover.
fysieke testgevallen (white box)
22 | 58
Fysieke testgevallen:
Testactie
verwacht
Testactie
Voer in:
resultaat
ID
rang leeftijd
1
1
21
70
2
1
16
35
3
2
21
50
4
2
16
25
“Software Engineering”
werkelijk
resultaat
70
35
30
15
Leiden University. The university to discover.
fysieke testgevallen (white box)
23 | 58
Fysieke testgevallen - alternatief:
Testactie
verwacht
Testactie
Voer in:
resultaat
ID
rang leeftijd
1
1
21
70
2
1
16
35
3
3
21
fout?
4
3
16
fout?
“Software Engineering”
werkelijk
resultaat
70
35
30
15
Leiden University. The university to discover.
Testscripts
24 | 58
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.
“Software Engineering”
Leiden University. The university to discover.
Unit 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);
}
}
25 | 58
interface Adder {
int add(int a, int b);
}
class AdderImpl
implements Adder {
int add(int a, int b) {
return a + b;
}
}
Bron: wikipedia
“Software Engineering”
Leiden University. The university to discover.
Beslissingstabellentest
26 | 58
Testbasis: bevat condities
Grondige techniek voor het testen van
detailfunctionaliteit
Alle combinaties van de condities worden doorlopen
White box en black box is mogelijk
“Software Engineering”
Leiden University. The university to discover.
Beslissingstabellentest
27 | 58
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
“Software Engineering”
Leiden University. The university to discover.
Beslissingstabellentest
28 | 58
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;
}
“Software Engineering”
Leiden University. The university to discover.
Identificatie testsituaties
29 | 58
Bepaal condities in de testbasis:
Conditie is altijd enkelvoudig
Opstellen conditielijst
Bepalen acties/resultaten in de testbasis
Opstellen actielijst
Opstellen beslissingtabel
“Software Engineering”
Leiden University. The university to discover.
Identificatie testsituaties
30 | 58
Testsituatie
Condities/acties
1
2
3
4
5
6
7
8
C1: lft > 65
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
C3: gehuwd
0
1
0
1
0
1
0
1
A1/R1:Korting = 0
X
C2: lft < 18
A2/R2: Korting = 5
A3/R3: Korting = 10
X
X
X
X
X
X
X
X
X
X
Opmerking: kortingen
optellen
“Software Engineering”
Leiden University. The university to discover.
Opstellen logische testgevallen
31 | 58
Logische
testgevallen
1
2
3
4
5
6
7
8
C1: lft > 65
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
C3: gehuwd
0
1
0
1
0
1
0
1
A1/R1:Korting = 0
X
X
X
C2: lft < 18
A2/R2: Korting = 5
A3/R3: Korting = 10
Niet mogelijk
X
X
X
X
X
X
X
Opmerking: kortingen
optellen
“Software Engineering”
Leiden University. The university to discover.
Opstellen fysieke testgevallen
32 | 58
Logische
testgevallen
1
2
3
4
5
6
Actie: invoeren
leeftijd
25
25
16
16
70
70
Actie: invoeren
gehuwd
false
true
false
true
false
true
0
5
10
15
10
15
Resultaat:
Korting
“Software Engineering”
Leiden University. The university to discover.
Opstellen fysieke testgevallen
33 | 58
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
“Software Engineering”
Leiden University. The university to discover.
Opstellen testscript
34 | 58
De volgorde van de tests maakt hier niets uit.
Geef b.v. aan dat de tests in de gegeven
volgorde uitgevoerd moeten worden.
“Software Engineering”
Leiden University. The university to discover.
beslissingstabellentest
naam
Bereken contributie per jaar
35 | 58
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
danUniversity.
45 jaar 50%
korting.
Leiden
The
university to discover.
“Software Engineering”
Identificatie testsituaties
36 | 58
Testsituatie
Condities/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
X
X
X
X
A1/R1:contributie = 150
A2/R2: contributie = 100
X
A3/R3: Korting = 50%
Foutmelding sport
Niet mogelijk
“Software Engineering”
X
X
X
X
X
X
Leiden University. The university to discover.
Opstellen logische testgevallen
37 | 58
Testsituatie
Condities/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
X
X
A1/R1:contributie = 150
A2/R2: contributie = 100
X
A3/R3: Korting = 50%
Foutmelding sport
“Software Engineering”
X
X
X
X
X
X
Leiden University. The university to discover.
Opstellen fysieke testgevallen
38 | 58
Logische
testgevallen
Actie:
Actie:
Invoeren sport 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
“Software Engineering”
Leiden University. The university to discover.
Algoritmetest
39 | 58
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
“Software Engineering”
Leiden University. The university to discover.
Algoritmetest - voorbeeld
40 | 58
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
“Software Engineering”
Leiden University. The university to discover.
Algoritmetest
“Software Engineering”
41 | 58
Leiden University. The university to discover.
Identificatie testsituaties
42 | 58
1. Opstellen stroomschema
Vaststellen acties/statements
Vaststellen paden
Vaststellen beslispunten
2. Vaststellen beslispunten en in en uitgaande
paden
3. Vaststellen van de feitelijke testsituaties:
Bij testmaat 1: paden
Bij testmaat 2: padcombinaties
“Software Engineering”
Leiden University. The university to discover.
Identificatie testsituaties
43 | 58
start
1. Opstellen stroomschema
1
actie a
A
3
2
actie b
actie c
4
actie b
en c
actie d
eind
“Software Engineering”
Leiden University. The university to discover.
Identificatie testsituaties
44 | 58
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;
“Software Engineering”
Leiden University. The university to discover.
Opstellen logische testgevallen
45 | 58
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).
“Software Engineering”
Leiden University. The university to discover.
Opstellen logische testgevallen
46 | 58
Testmaat 1
testgeval
1
2
paden
1-4
1-2-3-4
0 herhalingen
2 herhalingen
paden
1-4
1-2-4
1-3-2-2-3-3-4
0 herhalingen
1 herhalingen
5 herhalingen
Testmaat 2
testgeval
1
2
3
“Software Engineering”
Leiden University. The university to discover.
Opstellen fysieke testgevallen
Testmaat 1
logische
testgevallen
Actie:
Invoeren getal
Geval 1
0
Geval 2
480
4181
Testmaat 2
logische
testgevallen
Actie:
Invoeren getal
Verwacht
resultaat
Geval 1
0
Geval 2
40
Geval 3
onmogelijk
“Software Engineering”
Verwacht
resultaat
47 | 58
Werkelijk
resultaat
Werkelijk
resultaat
41
Leiden University. The university to discover.
Opstellen fysieke testgevallen
Aanpassen logische testgevallen
Testmaat 2
Logische testgevallen
testgeval
1
2
3
paden
1-4
1-2-4
1-2-3-3-2-2-3-4
0 herhalingen
1 herhalingen
6 herhalingen
Testmaat 2
Fysieke testgevallen
logische
testgevallen
Actie:
Invoeren getal
Geval 1
0
Geval 2
40
41
Geval 3
4866620
41816321
“Software Engineering”
48 | 58
Verwacht
resultaat
Werkelijk
resultaat
Leiden University. The university to discover.
Test coverages
49 | 58
Testen hebben verschillende dekkingsgraden
Tester bepaalt welke dekkingsgraad vereist is.
“Software Engineering”
Leiden University. The university to discover.
Path coverage
50 | 58
Elk pad en elke combinatie van paden worden
doorlopen.
Voorbeeld: algoritmetest
“Software Engineering”
Leiden University. The university to discover.
Statement coverage
51 | 58
Elk statement wordt tenminste 1 keer uitgevoerd
start
Zwakker dan padendekking met testmaat 1; 1
Voorbeeld:
x=0
x = 0;
if a > b
x = 1;
a = b/x;
a>b
3
2
x=1
a = b/x
eind
“Software Engineering”
Leiden University. The university to discover.
Dekkingsvormen m.b.t. beslispunten
52 | 58
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
“Software Engineering”
Leiden University. The university to discover.
Dekkingsvormen m.b.t. beslispunten
53 | 58
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
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
“Software Engineering”
Leiden University. The university to discover.
Dekkingsvormen m.b.t. beslispunten
54 | 58
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
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
“Software Engineering”
Leiden University. The university to discover.
Dekkingsvormen m.b.t. beslispunten
55 | 58
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
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
“Software Engineering”
Leiden University. The university to discover.
Dekkingsvormen m.b.t. beslispunten
56 | 58
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
0
1
0 (niet uitlenen)
Geval 2
1
0
0 (niet uitlenen
Geval 3
1
1
1 (uitlenen)
“Software Engineering”
Leiden University. The university to discover.
Dekkingsvormen m.b.t. beslispunten
57 | 58
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
Logische testgevallen
aantal < 5
boete < 25
resultaat
Geval 2
0
1
0 (niet uitlenen)
Geval 3
1
0
0 (niet uitlenen
Geval 4
1
1
1 (uitlenen)
aantal
boeken< 5 and
uitstaande
boete < 25
Geval 1
0
0
0 (niet uitlenen
“Software Engineering”
Leiden University. The university to discover.
Opdracht in practicum
58 | 58
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.
“Software Engineering”
Leiden University. The university to discover.
Bronvermelding
59 | 58
Sheets zijn gebaseerd op:
TestGoal
T-Map
Sheets van De Haagse Hogeschool
Blokken I-2 & D
“Software Engineering”
Leiden University. The university to discover.