Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Hasonló dokumentumok
Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Specifikáció alapú teszttervezési módszerek

Specifikáció alapú teszttervezési módszerek

Struktúra alapú teszttervezési módszerek

Struktúra alapú teszttervezési módszerek

Szoftver modul/unit tesztelés

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Szoftverminőségbiztosítás

A szoftver tesztelés alapjai

Szoftverminőségbiztosítás

Modell alapú tesztelés: célok és lehetőségek

Szoftverminőségbiztosítás

SZOFTVER-MINŐSÉGBIZTOSÍTÁS SZOFTVER-TESZTELÉSI MÓDSZEREK. Széchenyi István Egyetem. Alapfogalmak

Szoftver karbantartási lépések ellenőrzése

Automatikus tesztgenerálás modell ellenőrző segítségével

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK A TESZT FEJLESZTÉSI FOLYAMATA A TESZTTERVEZÉSI TECHNIKÁK KATEGÓRIÁI

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK STRUKTÚRA ALAPÚ, VAGY FEHÉRDOBOZ TECHNIKÁK TAPASZTALAT ALAPÚ TECHNIKÁK

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK TESZTELÉSI TECHNIKÁK KIVÁLASZTÁSA

R3-COP. Resilient Reasoning Robotic Co-operating Systems. Autonóm rendszerek tesztelése egy EU-s projektben

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

Szoftverminőségbiztosítás

A modellellenőrzés érdekes alkalmazása: Tesztgenerálás modellellenőrzővel

Modellek ellenőrzése és tesztelése

Szkriptelési feladat megoldása

Algoritmizálás, adatmodellezés tanítása 6. előadás

TESZTMENEDZSMENT TESZTELŐ SZERVEZET TESZTTERVEZÉS ÉS BECSLÉS

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

1. Melyik szabvány foglalkozik dokumentumok tulajdonságainak megfogalmazásával? a. RDFS b. FOAF c. Dublin Core d. DBPedia

Szerző. Varga Péter ETR azonosító: VAPQAAI.ELTE cím: Név: Kurzuskód:

Utolsó módosítás:

Modell alapú tesztelés mobil környezetben

Gyakorlat és házi feladat tájékoztató

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Programozási technológia II 7. előadás. Verifikáció és validáció Giachetta Roberto

Kompetens szoftvertesztelés a gyakorlatban II. zárthelyi dolgozat

Szoftver-mérés. Szoftver metrikák. Szoftver mérés

MŰSZAKI TESZTTERVEZÉSI TECHNIKÁK SPECIFIKÁCIÓ ALAPÚ, VAGY FEKETEDOBOZ TECHNIKÁK

Objektumorientált tesztelés

Szoftver értékelés és karbantartás

Szoftverminőségbiztosítás

Programozási nyelvek II. JAVA

Mesterséges intelligencia alapú regressziós tesztelés

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Komputeralgebra Rendszerek

Szoftvertechnológia 10. előadás. Verifikáció és validáció. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Szoftver karbantartás

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

OO rendszerek jellemzői

MIÉRT KELL TESZTELNI?

Verifikáció és validáció Általános bevezető

Szoftver tesztelés a gyakorlatban 2

Tesztelési szintek Tesztautomatizálás

Fordítás Kódoptimalizálás

Mintavételes szabályozás mikrovezérlő segítségével

4. gyakorlat: Teszttervezés és integráció

Funkciópont elemzés: elmélet és gyakorlat

Budapes( Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék. Tesztelés és profiling

Rendszermodellezés. Modellellenőrzés. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

Utolsó módosítás:

A Feldspar fordító, illetve Feldspar programok tesztelése

Bánsághi Anna Bánsághi Anna 1 of 62

Tesztelési feladatok és kihívások a FALCON projektben

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Szoftvertervezés és -fejlesztés I.

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

S01-9 Szoftverfejlesztés minőségi aspektusai

Eseményvezérelt alkalmazások fejlesztése I 11. előadás. Szoftverek tesztelése

Szoftver-modellellenőrzés absztrakciós módszerekkel

TESZTELÉS A SZOFTVER ÉLETCIKLUSÁN ÁT SZOFTVERFEJLESZTÉSI MODELLEK

Programozási nyelvek II. JAVA

WebService tesztelés. SOAPui Pro, GreenPepper és Confluence használatával. Verhás & Verhás Szoftver Manufaktúra KNOW-HOW

Digitális eszközök típusai

Java II. I A Java programozási nyelv alapelemei

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Dinamikus modellek szerkezete, SDG modellek

Robusztusság tesztelés

Programozási nyelvek (ADA)

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

Méréselmélet MI BSc 1

Alapok. tisztán funkcionális nyelv, minden függvény (a konstansok is) nincsenek hagyományos változók, az első értékadás után nem módosíthatók

Szoftvertesztelés - Bevezető

5. gyakorlat Modellek ellenőrzése és tesztelése Megoldások

Tulajdonságalapú tesztelés

Webprogramozás szakkör

8. Komponens elvű programfejlesztés. Ágens, akció, cél, kontraktus.

Java II. I A Java programozási nyelv alapelemei

Dokumentáció az 1. feladatsorhoz (egyszerű, rövidített kivitelben)

Gyártórendszerek Dinamikája. Irányítástechnikai alapfogalmak

V & V Feladatok. V & V Feladatok

Mérés és modellezés 1

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Bevezetés az informatikába

Élő webes alkalmazások rendszerfelügyelete cím- és tartalomteszteléssel

Szkriptnyelvek. 1. UNIX shell

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Programozási alapismeretek 1. előadás

ELTE, Informatikai Kar december 12.

A legalacsonyabb szintű tesztelés. A programot felépítő egységek tesztelése Unit: egy rendszer legkisebb önálló egységként tesztlehető része.

Átírás:

Integrációs és ellenőrzési technikák (VIMIA04) Teszttervezés Majzik István, Micskei Zoltán Méréstechnika és Információs Rendszerek Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék 1

Áttekintés 2

Miért fontos a teszttervezés? More than the act of testing, the act of designing tests is one of the best bug preventers known. Boris Beizer 3

Tesztelési alapfogalmak (ismétlés) Specification, requirements Test cases Test execution Verdicts SUT: system under test Teszteset (test case) o bemeneti értékek, végrehajtási feltételek és elvárt eredmények halmaza, amelyeket egy konkrét célért fejlesztettek Tesztkészlet (test suite) Teszt-orákulum (test oracle) o Olyan elv vagy módszer, ami segít eldönteni a tesztelőnek, hogy sikeres volt-e a teszt Eredmény (verdict): pass / fail /error / inconclusive 4

Megoldandó feladatok Tesztkiválasztás (test selection) o Milyen bemeneti értékeket és adatok használjunk? Orákulum problémája o Honnan lesz megbízható orákulum? Kilépési feltétel (exit criteria) o Meddig folytassuk a tesztelést? 5

Teszttervezési technikák Cél: tesztesetek kiválasztása tesztcél alapján Specifikáció alapú SUT: black box Csak a specifikáció ismert Előirt funkcionalitás vizsgálata Struktúra alapú SUT: white box Belső felépítés ismert Felépítés és működés alapján bejárás 6

Lefedettségi metrikák Tesztelhető elemek mekkora %-a volt tesztelve Tesztelhető elemek o Specifikáció: követelmény, funkció o Struktúra: utasítás, döntés Lefedettségi feltétel (coverage criterion) o X % az Y metrikánál Ez nem hibafedés! 7

Mire jók a lefedettségi metrikák? Kiértékelés (mérés) Kiválasztás (cél) Meglévő tesztek kiértékelése Hiányzó tesztek azonosítása Teszt tervezése metrika mentén Cél adott % elérése 8

SPECIFIKÁCIÓ ALAPÚ TESZTELÉS 9

Teszttervezési technikák Cél: tesztesetek kiválasztása tesztcél alapján Specifikáció alapú SUT: black box Csak a specifikáció ismert Előirt funkcionalitás vizsgálata Struktúra alapú SUT: white box Belső felépítés ismert Felépítés és működés alapján bejárás 10

Specifikáció alapú technikák Ekvivalencia partícionálás Határértékanalízis Use case / user story Kombinatorikus módszerek Döntési táblák 11

Ekvivalencia partícionálás Bemenet és kimenet ekvivalencia osztályai: o Olyan adatok, amelyek várhatóan ugyanazt a hibát fedik le (ugyanazt a programrészt járják be) o Cél: Egy-egy ekvivalencia osztályból egy-egy teszt adat kiválasztása (többire elvileg hasonló) Nagyon környezetfüggő (context-dependent) o Ismerni kell a környezetet és a SUT-ot! o Tesztelő tudásán múlik a módszer hatékonysága 12

Ekvivalencia osztályok meghatározása Meghatározás heurisztikus folyamat: o Kezdés: érvényes és érvénytelen bemeneti adatok o Partíciók tovább finomítása Tipikus heurisztikák: o Tartomány (pl. 1-1000) < min, min-max, >max o Halmaz (pl. RED, GREEN, BLUE) érvényes elem, érvénytelen o Specifikus (pl. @ az elején) feltétel teljesül, feltétel nem teljesül o Egyéni (pl. február hónap) 13

Tesztesetek származtatása ekv. osztályból Több bemenet ekv. osztályainak összekapcsolása Érvényes (normál) ekv. osztályok esetén: o egy teszt minél több osztályt fedjen le Érvénytelen ekv. osztályok esetén: o először minden érvénytelen osztályhoz külön teszt legyen o egymás hatását ne oltsák ki o majd több osztály kombinációja is 14

FELADAT Ekvivalencia partícionálás Leírás: Online italboltunkban kedvezményrendszert vezetünk be. A 30 évesnél idősebb vásárlók 3%, az 50 évnél idősebbek 5% kedvezményt kapnak. A kiválasztott ital kosárba rakása után meg kell adni a megvásárolni kívánt mennyiséget, majd a születési dátumukat, és a kedvezmény levonásra kerül az árból. Bemeneti paraméterek? Ekvivalencia osztályok? Van kérdésünk a leírással kapcsolatban? 15

Specifikáció alapú technikák Ekvivalencia partícionálás Határértékanalízis Use case / user story Kombinatorikus módszerek Döntési táblák 17

Határérték-analízis Adattartományok határait vizsgálja o Egy-egy ekvivalencia osztály határaira koncentrál o Bemeneti és kimeneti tartományokra is Tipikus megtalált hibák: o relációs operátorok o ciklusok be- és kilépési feltételei o adatstruktúrák mérete o 18

Tipikus teszt adatok határértékeknél Egy határérték 3 tesztet jelent: határérték Egy tartomány 5-7 tesztet jelent: határérték 1 határérték 2 19

FELADAT Határérték-analízis Leírás: Online italboltunkban kedvezményrendszert vezetünk be. A 30 évesnél idősebb vásárlók 3%, az 50 évnél idősebbek 5% kedvezményt kapnak. A kiválasztott ital kosárba rakása után meg kell adni a megvásárolni kívánt mennyiséget, majd a születési dátumukat, és a kedvezmény levonásra kerül az árból. Határértékek? Milyen értékeket használjunk a tesztekben? 20

Specifikáció alapú technikák Ekvivalencia partícionálás Határértékanalízis Use case / user story Kombinatorikus módszerek Döntési táblák 22

Tesztek származtatása használati esetekből Tipikus tesztesetek: o 1 teszt: fő ág ( happy path, mainstream ) Ellenőrzés: utófeltételek vizsgálata o Alternatív lefutások: mindegyikhez külön teszteset o Előfeltételek (nem)teljesülése Jobbára magasabb szintek (rendszer, elfogadási ) 23

FELADAT Használati esetek (use case) 24

STRUKTÚRA ALAPÚ TESZTELÉS 25

Teszttervezési technikák Cél: tesztesetek kiválasztása tesztcél alapján Specifikáció alapú SUT: black box Csak a specifikáció ismert Előirt funkcionalitás vizsgálata Struktúra alapú SUT: white box Belső felépítés ismert Felépítés és működés alapján bejárás 26

Mi a belső felépítés? Kód esetén: forráskód struktúrája Forráskód: int a = read(); while(a < 16) { if(a < 10) { a += 2; } else { a++; } } a = a * 2; Control-flow graph (CFG): control flow Megjegyzés: CFG pontos definíciójával most nem foglalkozunk! 27

Alapfogalmak int t = 1; Speed s = SLOW; Utasítás Blokk if (! started){ } start(); if (t > 10 && s == FAST){ brake(); } else { accelerate(); } 28 Feltétel Döntés Döntési ág

Utasítás (statement) Blokk (block) Alapfogalmak o Utasítások egybefüggő sorozata, amik között nincs elágazás vagy függvényhívás Feltétel (condition) o Egyszerű vizsgálat, amiben nincs logikai (Boole) operátor Döntés (decision) o Nulla vagy több logikai operátorral összekötött feltételből álló kifejezés Döntési ág (branch) o Egy döntés lehetséges kimenetele Út (path) o Utasítások sorozata, tipikusan a modul be és kilépési pontja között 29

1. Utasítás lefedettség Tesztelés során végrehajtott utasítások száma Összes utasítás szám A1 A2 A4 A3 A5 Utasítás lefedettség: 4/5 = 80% 30

Utasítás lefedettség értékelése Minden utasítást legalább egyszer végrehajtunk k=0 [a>0] k=1 [a<=0] m=1/k Utasítás lefedettség: 100% DE: hiányzik a [a<=0] ág Üres ágak lefedését nem garantálja 31

2. Döntési lefedettség Tesztelés során előfordult döntési eredmények száma Döntési eredmények lehetséges száma A2 Döntési lefedettség: 50% A4 A3 Hány eredménye lehet egy döntésnek? 32

Döntési lefedettség értékelése Minden utasítást legalább egyszer végrehajtunk Minden ágat lefedünk (üres ágakat is) # safe(c) safe(b) [safe(c) safe(b)] A2 [else] 1 T F 2 F F A4 A3 100% döntési lefedettség DE: safe(b) = true eset hiányzik! Feltételek kombinációjára nem figyel 33

További lefedettségi metrikák (lásd MSc) Condition Coverage Condition/Decision Coverage (C/DC) Modified Condition/Decision Coverage (MC/DC) Multiple Condition Coverage (MCC) Loop Coverage All-Defs Coverage All-Uses Coverage 34

FELADAT Struktúra alapú tesztelés 1 int pow(int n, int k) { 2 if (n < 0 k < 0) { 3 return -1; 4 } 5 int p = 1; 6 for (int i = 0; i < k; i++) { 7 p *= n; 8 } 9 return p; } Rajzold fel a kód CFG-jét! Tervezz teszteket: 100% utasítás lefedettség 100% döntési lefedettség 35

Kód lefedettség számolása a gyakorlatban Mindegyik eszköznél más definíciók Megvalósítás o Forrás/bináris kód instrumentálása o Lefedettséget számoló utasítások hozzáadása if (a > 10){ CoveredBranch(1, true); b = 3; } else { CoveredBranch(1, false); b = 5; } send(b); Lásd például: Is bytecode instrumentation as good as source code instrumentation, 2013. 37

Kód lefedettség használata Mire használható: o Egyáltalán nem tesztelt kódrészlet azonosítása o Tesztkészlet teljességének értékelése o Kilépési feltételekben Mire nem használható: o Hiányzó/hiányos követelmények azonosítása o Kód/teszt minőségével csak indirekt kapcsolat 38

Kód lefedettség használata a gyakorlatban Microsoft tapasztalata: o Test suite with high code coverage and high assertion density is a good indicator for code quality. o Code coverage alone is generally not enough to ensure a good quality of unit tests and should be used with care. o The lack of code coverage to the contrary clearly indicates a risk, as many behaviors are untested. (Forrás: Parameterized Unit Testing with Microsoft Pex ) Kapcsolódó cikkek: o Coverage Is Not Strongly Correlated with Test Suite Effectiveness, 2014. DOI: 10.1145/2568225.2568271 o The Risks of Coverage-Directed Test Case Generation, 2015. DOI: 10.1109/TSE.2015.2421011 39

Teszttervezési technikák összefoglalása Specifikáció és struktúra alapú technikák o Több, egymást kiegészítő módszer o Mindegyik módszert gyakorolni kell Technikák kombinációja hasznos Példa (Microsoft): specifikáció alapú: 83% kód lefedettség + felderítő tesztelés: 86% kód lefedettség + struktúra alapú: 91% kód lefedettség 40 40

Összefoglalás 41