Fehérdoboz-tesztelés¶
Kód lefedettségek¶
Elméletben¶
1. feladat
Tekintsük az alábbi kódrészletet:
1 2 3 4 5 6 7 8 |
|
- Határozzuk meg a 100%-os utasítás és elágazás lefedettséghez szükséges tesztesetek számát!
- Adjunk meg egy minimális teszteset halmazt, ami ilyen lefedettségeket produkál!
Lehetséges megoldás
Készítsünk folyamatábrát!
Utasítás lefedettséghez egyetlen teszteset elegendő: - START -> (1,2,3) -> (4) -> (5) -> (6) -> END - P+Q > 100 és P > 50 - P = 75, Q = 75
Elágazás lefedettséghez legalább kettő teszteset kell, pl: - START -> (1,2,3) -> (4) -> (5) -> (6) -> END - P+Q > 100 és P > 50 - P = 75, Q = 75 - START -> (1,2,3) -> (5) -> END - P+Q <= 100 és P <= 50 - P = 25, Q = 25
2. feladat
Tekintsük az alábbi programot:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
- Határozzuk meg a 100%-os utasítás és elágazás lefedettséghez szükséges tesztesetek számát!
- Adjunk meg egy minimális teszteset halmazt, ami ilyen lefedettségeket produkál!
Lehetséges megoldás
Készítsünk folyamatábrát!
Az utasítás lefedettséghez egyetlen teszteset elegendő.
Az elágazás lefedettséghez 5 teszteset szükséges:
- 1:false
- 1:true, 2:true
- 1:true, 2:false, 5:true
- 1:true, 2:false, 5:false, 7:true
- 1:true, 2:false, 5:false, 7:false
Ez az 5 teszteset 2 teszt eljárással megvalósítható.
3. feladat
Tekintsük az alábbi kódrészletet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
- Határozzuk meg a 100%-os utasítás- és branch-lefedettséghez szükséges tesztesetek számát!
- Adjunk meg egy minimális teszteset halmazt, ami ilyen lefedettségeket produkál!
Lehetséges megoldás
Készítsünk folyamatábrát!
A 8-10 sorok elérhetetlenek.
Bár a CFG szerint ezeket is le lehet/kell fedni, a 3. sorban található feltétel else
ága miatt a 7. sor feltétele soha nem teljesül.
Gyakorlatban¶
- Töltsd le az Eclipse projektet és csomagold ki
- Töltsd be Eclipse-be
- File -> Open Projects from file system
- File -> Import ... -> General -> Existing project into workspace
4. feladat
Mérj lefedettséget a Ship
projekten Eclipse környezetben (jUnit tesztek lefedettsége)!
- Jobb gomb a projekten -> Coverage As -> JUnit Test
- Készíts teszteseteket, amelyek minél nagyobb lefedettséget biztosítanak a ShipCollisionWarningSystem
osztályra!
- Töltsd le a C forrásokat és csomagold ki
- A
main.c
-ből fordított program paraméterezése:./prog INPUT FORMAT OUTPUT [ OP [ OP [ OP ... ] ] ]
- A
main.c
forrásban a 476-481 sorokban van a táblázat aFORMAT
lehetséges értékeivel. - A
main.c
forrásban a 446-468 sorokban lévő táblázat tartalmazza azOP
-okat.
- A
5. feladat
Mérj függvény szintű lefedettséget a main.c
programra a gcc
program -finstrument-functions
kapcsolója segítségével!
make traced
: A futtatható program, ami azstderr
-re írja a meghívott/elhagyott függvények címeit.make addresslist
: Atraced
programból kiszedi az összes függvény címét. Érdemes szűrni az eredményt.
6. feladat
Mérj lefedettséget a main.c
programra a gcov
segítségével!
make prog
: A futtatható program, ami gcov-os formátumban menti a lefedettséget.make main.c.gcov
: Az aktuális lefedettséggel annotált forráskód (és mellesleg összegző statisztikát is csinál).
Készíts teszteseteket a main.c
programhoz, hogy minél nagyobb utasítás-lefedettséget érj el!