SZOFTVERTECHNOLÓGIA Bánsághi Anna anna.bansaghi@mamikon.net 10. ELŐADÁS - TESZTELÉS Bánsághi Anna 1 of 62
TEMATIKA I. SZOFTVERTECHNOLÓGIA ALTERÜLETEI II. KÖVETELMÉNY MENEDZSMENT III. RENDSZERMODELLEK IV. RENDSZERARCHITEKTÚRÁK V. RENDSZERTERVEZÉS VI. VERIFIKÁCIÓ ÉS VALIDÁCIÓ VII. MINŐSÉGBIZTOSÍTÁS VIII. TESZTELÉS Bánsághi Anna 2 of 62
VIII. TESZTELÉS 1. A tesztelés céljai 2. A tesztelési folyamat 3. Tesztelési szintek egységteszt integrációs teszt rendszer teszt elfogadási teszt 4. objektumorientált tesztelés 5. teszteszközök Bánsághi Anna 3 of 62
1. A TESZTELÉS CÉLJAI bizonyosságot szerezni a rendszer minőségi állapotáról információ a döntéshozáshoz (új verzió kibocsátása avagy sem) hibák keresése hibák megakadályozása Bánsághi Anna 4 of 62
MOTTÓK Dijkstra A tesztelés a hibák jelenlétét, és nem a hibamentességet tudja kimutatni Hoare A tesztelés egy induktív bizonyítás része: Ha a program jól működik egy adott tesztadatra, akkor várhatóan hasonló adatokra is jól működik majd Bánsághi Anna 5 of 62
A TESZTELÉS 7 ALAPELVE 1. csak a hibák meglétét tudja kimutatni 2. a kimerítő tesztelés legtöbbször lehetetlen (Hány teszt kellene egy 3 integer paraméterű függvényhez?) 3. tesztelés már a korai fázisokban szükséges 4. 5. hibák csomósodása (Pareto elv), azaz a komponensek 20%-ban bukkan elő a hibák 80%-a rovarirtó paradoxon, azaz a teszt újra és újra futtatva egyre kevésbé hatékony, illetve minden módszer után marad még valami más típusú hiba 6. a tesztelés (eredményessége) kontextus függő 7. a hibák hiányából fakadó tévedés, azaz a hibamentes tesztlefutás még nem jelent jó rendszert Bánsághi Anna 6 of 62
MI A TESZTELÉS? nem hibakeresés (debugging), mert a hibakeresés a hibák okainak felderítési és javítási folyamata, míg a tesztelés a szoftver hibáinak szisztematikus felderítése kétféle típusa van statikus, amikor a kód nem fut dinamikus, amikor a kód tesztadatokkal fut a tesztelés egy folyamat, hasonlóan a fejlesztési folyamathoz a tesztelés technikák gyűjteménye Bánsághi Anna 7 of 62
ALAPFOGALMAK test case (teszteset) bemeneti értékek és végrehajtási előfeltételek halmaza várt eredmények és végrehajtási utófeltételek halmaza test suite (tesztkészlet) együtt végrehajtandó tesztesetek gyűjteménye Software Under Test (SUT) a tesztelendő szoftver egység test oracle (orákulum) várt eredmények származtatása, összehasonlítása a teszt kimenetével (automatizált) verdict (eredmény) sikeres (pass), sikertelen (fail), nem meggyőző (inconclusive), hiba (error) Bánsághi Anna 8 of 62
teszt kiválasztás tesztadat kiválasztás ALAPVETŐ PROBLÉMÁK Milyen teszteseteket használjunk? Milyen tesztadatokat használjunk? kilépési feltétel Meddig teszteljünk? Amíg a specifikációt, a kódot, a hibákat lefedtük? jó orákulum Hogyan építsünk jó orákulumot? prioritás Mely kódrészeket teszteljük? (szembetűnő helyeket, legvalószínűbb hibaforrásokat, leggyakrabban változó komponenseket, a múltban problémás részeket) Bánsághi Anna 9 of 62
2. A TESZTELÉSI FOLYAMAT stratégiai terv (planning) és kontroll elemzés és tervezés (design) implementáció és végrehajtás kiértékelés, kilépési feltétel, riportolás tesztlezáró tevékenységek Bánsághi Anna 10 of 62
Milyen metodológiát? STRATÉGIAI TERV (PLANNING) ÉS KONTROLL test-driven development Milyen típusú teszteket? Milyen teszteszközöket? Ki fogja használni? Milyen kilépési feltétellel? modul, rendszer JUnit, GUI Tester fejlesztő és teszt csapat 90% utasítás lefedettség, minden használati eset Milyen dokumentáció kell? Bánsághi Anna 11 of 62
TESZTTERV (TEST PLAN) teszt stratégia leképezése az aktuális projektre tesztelési célok, irányelvek, szervezeti környezet feladatok projekt szerepekhez rendelése tesztelési fázisok definiálása fázisok hossza kilépési feltétel tesztelés minőségét hogyan fogjuk mérni Bánsághi Anna 12 of 62
ELEMZÉS ÉS TERVEZÉS (DESIGN) még mielőtt elkezdenénk tesztkódot írni, szisztematikusan feltérképezzük, hogy mit tesztelünk, megtervezzük és specifikáljuk a teszteseteket TESZTESET FELÉPÍTÉSE teszteset célja kiindulási környezet teszteset lépései, teszt adatok elvárt kimenet Bánsághi Anna 13 of 62
IMPLEMENTÁCIÓ ÉS VÉGREHAJTÁS manuális vagy automatikus, mert van, amit nem éri meg automatizálni automatikus esetben a teszt a build folyamat része kimenetek naplózása (idő, teszt környezet, komponensek verziói, rendszer kimenet) Bánsághi Anna 14 of 62
KIÉRTÉKELÉS, KILÉPÉSI FELTÉTEL, RIPORTOLÁS incidensek rögzítése döntés a tesztelés folytatásáról TESZTLEZÁRÓ TEVÉKENYSÉGEK tipikusan mérföldkövenként tapasztalat összegyűjtése teszt eszközök, automatikus tesztek lezárása Bánsághi Anna 15 of 62
3. TESZTELÉSI SZINTEK egységteszt (unit test) modul (integrációs) teszt (integration test) rendszerteszt (system test) elfogadási teszt (acceptance test) Bánsághi Anna 16 of 62
A TESZTELÉS SZINTJEI 1. egységteszt a fejlesztés alatt álló alkalmazás egységeinek tesztelése könnyen automatizálható általában a fejlesztő készíti a teszteket a kódolás előtt a korai tesztelés alapelve szerint integrációs teszt a modullá integrált egységek tesztelése a modulok együttműködésének (interfészek) tesztelése a tesztelő saját kódjával teszteli a GUI nélküli modulokat könnyen automatizálható Bánsághi Anna 17 of 62
A TESZTELÉS SZINTJEI 2. rendszerteszt a GUI elérhető funkcióinak tesztelése a specifikációnak megfelelő működés vizsgálata biztonsági, terheléses és stressztesztelés a tesztelő végzi elfogadási teszt optimális esetben közös, megrendelői és fejlesztői feladat cél, hogy a végfelhasználót támogassa az új szoftver elfogadásában az éles vagy ahhoz nagyon hasonló környezetben zajlik Bánsághi Anna 18 of 62
EGYSÉGTESZT specifikáció alapú (fekete doboz) technikák struktúra alapú (fehér doboz) technikák tapasztalat alapú technikák hibatípus alapú technikák valószínűségen alapuló technikák Bánsághi Anna 19 of 62
TESZTESETEK SZÁRMAZTATÁSA specifikáció alapú (fekete doboz) a rendszer vagy a komponens specifikációjának elemzésével struktúra alapú (fehér doboz) belső szerkezetének elemzésével a rendszer vagy a komponens tapasztalat alapú hasonló rendszerek vagy általános tesztelési tapasztalattal bíró emberek készítik hibatípus alapú az adott hibatípus szabja meg a teszteseteket valószínűségen alapuló a teszteseteket valószínűségi (véletlenszerű vagy statisztikai) módon származtatjuk Bánsághi Anna 20 of 62
SPECIFIKÁCIÓ ALAPÚ (FEKETE DOBOZ) TECHNIKÁK a programot fekete doboznak tekintjük, a tesztesetek a programspecifikáció alapján készülnek nem foglalkozik a program implementációjával a tesztek tervezése a szoftverfolyamat korai szakaszában megkezdődhet (egyes agilis módszereknél előbb, mint a program tervezése!) az előreláthatóan hibát okozó tesztesetek tervezéséhez szakterületi ismeretekre van szükség Bánsághi Anna 21 of 62
Bánsághi Anna 22 of 62
SPECIFIKÁCIÓ ALAPÚ (FEKETE DOBOZ) TECHNIKÁK ekvivalencia partícionálás a hasonló tesztfeltételek csoportosítása és hasonló módon való kezelése határérték elemzés tesztelése döntési tábla a beazonosított partíciók határértékeinek különféle feltétel kombinációk tesztelése Bánsághi Anna 23 of 62
ERŐS NORMÁL EKVIVALENCIA PARTÍCIONÁLÁS a valid input halmazt valamely szempont alapján ekvivalens partíciókra osztjuk, és ezen partíciókból egy-egy reprezentáns adattal tesztelünk Bánsághi Anna 24 of 62
GYENGE ROBUSZTUS EKVIVALENCIA PARTÍCIONÁLÁS mind a valid, mind az invalid input halmazt partícionáljuk, és néhány partícióbeli reprezentással tesztelünk Bánsághi Anna 25 of 62
ERŐS ROBUSZTUS EKVIVALENCIA PARTÍCIONÁLÁS mind a valid, mind az invalid input halmazt partícionáljuk, és az összes partícióbeli reprezentással tesztelünk Bánsághi Anna 26 of 62
HATÁRÉRTÉK ELEMZÉS a programozói hibák a határértékek körül csomósodnak Bánsághi Anna 27 of 62
ROBUSZTUS HATÁRÉRTÉK EL EMZÉS LEGROSSAZBB ESET HATÁRÉRTÉK ELEMZÉS Bánsághi Anna 28 of 62
ROBUSZTUS LEGROSSZABB ESET HATÁRÉRTÉK ELEMZÉS Bánsághi Anna 29 of 62
Bánsághi Anna 30 of 62
DÖNTÉSI TÁBLA logikai kifejezéseket tesztelünk megadva, hogy adott esetben milyen tevékenység következhet be Bánsághi Anna 31 of 62
DÖNTÉSI TÁBLA PÉLDA Bánsághi Anna 32 of 62
STRUKTÚRA ALAPÚ (FEHÉR DOBOZ) TECHNIKÁK a tesztek a program struktúrájának, implementációjának ismeretében készülnek a struktúra és a kód ismeretében újabb ekvivalencia osztályok definiálhatók a tesztelő a tesztesetek készítésekor elemzi a kódot, hogy biztosítsa minden utasítás legalább egyszeri végrehajtását (az összes lehetséges út-kombináció tesztelésére nincs reális lehetőség) a kód lefedettség azt méri, hogy milyen mértékben vannak tesztelve az utasítások, elágazások, ciklusok Bánsághi Anna 33 of 62
STRUKTÚRA ALAPÚ (FEHÉR DOBOZ) TECHNIKÁK utasítás tesztelés a program vezérlési gráfját tekintve az összes futtatható utasítást teszteljük döntési ág tesztelés minden döntési ágat tesztelünk útvonal tesztelés minden független útvonalat tesztelünk, így legalább egyszer biztosan sor kerül minden utasítás végrehajtására, és minden feltételes utasítás igaz és hamis ágának végrahajtására Bánsághi Anna 34 of 62
UTASÍTÁS TESZTELÉS 100%-os utasítás lefedettséghez 1 teszteset szükséges Bánsághi Anna 35 of 62
DÖNTÉSI ÁG TESZTELÉS 100%-os döntési ág lefedettséghez 3 teszteset szükséges Bánsághi Anna 36 of 62
ÚTVONAL TESZTELÉS két út független, ha legalább egy élben vagy egy csomópontban különböznek hány független út van egy kódban? McCabe ciklomatikus komplexitás megmondja: CC = élek száma - csomópontok száma +2 a CC megmutatja, hogy hány tesztet kellene végrehajtani az összes független út végrehajtásához, vagyis minden vezérlő utasítás legalább egyszeri végrehajtásához lehetetlen a független utak összes kombinációját végrehajtani Bánsághi Anna 37 of 62
ÚTVONAL TESZTELÉS 100%-os útvonal lefedettséghez 7-6 + 2 teszteset szükséges Bánsághi Anna 38 of 62
INTEGRÁCIÓS TESZT teljes rendszerek vagy alrendszerek tesztelése, amelyek előzőleg már tesztelt komponensekből állnak a komponensek együttműködéséből származó hibák feltárására szolgál az integrációs teszt fekete doboz tesztelés, a tesztek a specifikációból származnak komplex rendszerben az észlelt hibás eredményből nehéz a hiba helyére következtetni az inkrementális integrációs tesztelés némileg segít Bánsághi Anna 39 of 62
AZ INTEGRÁCIÓS TESZTELÉS STRATÉGIÁI fentről lefelé tesztelés a rendszer lépcsőzetesen épül fel, kezdve azon kompenensekkel, melyek más komponenseket hívnak. A még el nem készült komponenseket azonos interfésszel készült csonkok (stubs) helyettesítik. Ezeket fokozatosan lecserélik a kész elemekkel. lentről felfelé tesztelés A hierarchia alsó szintjein lévő komponensek integrálásával és tesztelésével kezdik, ahol a magasabb szinteket tesztgenerátorok (drivers) helyettesítik Bánsághi Anna 40 of 62
FENTRŐL LEFELÉ STRATÉGIA Bánsághi Anna 41 of 62
LENTRŐL FELFELÉ STRATÉGIA Bánsághi Anna 42 of 62
A KÉT STRATÉGIA ÖSSZEHASONLÍTÁSA szerkezeti validáció a fentről lefelé teszteléssel még a folyamat korai szakaszában felfedhetők a hibák a rendszerarchitektúrában és a magas szintű tervekben rendszerdemonstráció a fentről lefelé integráció korán lehetővé teszi a demonstrációt (újrafelhasználható komponensek alkalmazásával a lentről felfelé stratégiával is lehetséges) tesztimplementáció a fentről lefelé stratégia programcsonkjait nehéz implementálni, a lentről felfelé tesztelés tesztmeghajtóit valamivel egyszerűbb tesztmegfigyelés a tesztek eredményét mindkét módszernél nehéz megfigyelni, mesterséges környezetre, extra kódra van szükség Bánsághi Anna 43 of 62
INTERFÉSZTESZTELÉS interfésztesztelésre akkor van szükség, amikor egy nagyobb rendszer összeépítésekor modulokat vagy alrendszereket integrálunk célja az interfészek specifikációs (félreértések, ellentmondások) vagy implementációs hibáinak felfedése az interfésztesztelés az objektumorientált fejlesztésnél fontos (különösen objektumok és osztályok újrafelhasználásakor), mert az objektumokat az interfészeikkel definiáljuk egyedi objektum tesztelésével az interfészhibákat nem lehet felfedni, mert a hibák az objektumok közti interakciókban jelentkeznek, nem egy egyedi objektum sajátosságaiként Bánsághi Anna 44 of 62
INTERFÉSZ TÍPUSOK paraméter interfészek adatok továbbítása az egyik alrendszertől a másik felé osztott memória interfészek az alrendszerek közös memóriablokkon keresztül cserélnek adatot egymással procedurális interfészek egy alrendszer más alrendszerek által hívható eljárásokat tartalmaz üzenet alapú interfészek egy alrendszer úgy kér szolgáltatást egy másik alrendszertől, hogy üzenetet juttat el hozzá. A szolgáltatás eredményeit egy válaszüzenetben kapja meg Bánsághi Anna 45 of 62
TIPIKUS INTERFÉSZHIBÁK interfész hibás alkalmazása egy hívó komponens hibája lehet: rossz típusú vagy sorrendű paraméterek, hibás számú paraméter interfész félreértése a hívó komponens hibásan értelmezi az interfészt vagy a hívott komponens válaszait időzítési hibák a hívó és a hívott komponens különböző sebességgel működik (osztott memória vagy üzenettovábbító interfész esetén), és a hívott nem aktuális információt kap Bánsághi Anna 46 of 62
AZ INTERFÉSZTESZTELÉS IRÁNYELVEI a teszteket úgy kell tervezni, hogy a paraméterek értékei a határértékek közelében legyenek a pointer jellegű paramétereket null értékkel is teszteljük olyan tesztesetre is szükség van, amely a hívott komponens hibáját okozza (a specifikációs hibák többsége a hibák félreértelmezéséből fakad) üzenettovábbító vagy interaktív rendszereknél terheléses (stressz) tesztet is szükséges osztott memóriájú interfészeket a komponensek aktiválódása sorrendjének megváltoztatásával is teszteljünk (szinkronizációs hibák) Bánsághi Anna 47 of 62
RENDSZERTESZT élő környezetben a teljes rendszer viselkedését és működését vizsgálja a teszt KÉT FAJTÁJA funkcionális tesztek nemfunkcionális tesztek Bánsághi Anna 48 of 62
FUNKCIONÁLIS TESZTEK 1. installációs teszt a rendszer telepítésének tesztelése különböző eshetőségek (különböző hardver és szoftver konfigurációk, eltérő feltételek) esetén általános funkcionális teszt a rendszer működésének vizsgálata normál működés esetén. A teszt során ellenőrizzük, hogy a rendszer funkciói az elvártnak megfelelően működnek-e, a teszt során a kívánt eredményeket kapjuk-e. szélsőérték funkcionális teszt a rendszer működésének vizsgálata szélső bemeneti / kimeneti értékek esetén. A teszt során ellenőrizzük, hogy a rendszer funkciói az elvártnak megfelelően működnek-e, a teszt során az elvárt eredményeket kapjuk-e. Bánsághi Anna 49 of 62
FUNKCIONÁLIS TESZTEK 2. konfigurációs teszt a rendszer funkcionalitásának tesztelése eltérő hardver / szoftver feltételek mellett mennyiségi teszt a rendszer funkcionalitásának tesztelése nagy mennyiségű bemenő, kimenő, illetve adatbázisbeli adat esetén biztonsági teszt a szoftver jogosultsági rendszerének tesztelése azt ellenőrzi, hogy a rendszer adataihoz csak a megfelelő jogosultsággal bíró felhasználók férnek-e hozzá Bánsághi Anna 50 of 62
NEMFUNKCIONÁLIS TESZTEK 1. általános teljesítményteszt a rendszer számszerűsíthető működési paramétereit (sebesség, memóriahasználat, hálózati forgalom) összevetjük az elvárt értékekkel. A teszt segítségével fényt deríthetünk a rendszernek ezen paraméterek szempontjából kritikus pontjaira, szűk keresztmetszeteire referencia teljesítményteszt a rendszer működési paramétereit egy másik, a tesztelt rendszerhez hasonló funkcionalitású rendszer paramétereivel vetjük össze terheléses teljesítményteszt a rendszer működési paramétereinek vizsgálata különböző munkaterhelések esetén. A teszt során rögzítjük a terhelés mértékét (pl. felhasználók, tranzakciók száma), valamint a rendszer működési paramétereit az adott terhelés alatt Bánsághi Anna 51 of 62
NEMFUNKCIONÁLIS TESZTEK 2. konkurencia teljesítményteszt a rendszer teljesítményének vizsgálata abban az esetben, ha a rendszernek többszörösen kell ugyanahhoz az erőforráshoz (pl. ugyanahhoz az adatrekordhoz) hozzáférnie sokk teljesítményteszt a rendszer működésének vizsgálata extrém körülmények között. Ezek az extrém körülmények lehetnek a tervezettnél nagyobb terhelések, kevés memória/erőforrások, hardver problémák, áramszünet helyreállási teljesítményteszt a rendszer automatikus helyreállási képességének vizsgálata különféle okokból bekövetkezett összeomlások után Bánsághi Anna 52 of 62
ELFOGADÁSI TESZT élő környezetben a teljes rendszer viselkedését és működését próbálja ki az ügyfél alfa teszt az alkalmazás még nincs teljesen kidolgozva, a tesztelést a tesztelő csapat és a felhasználók egy speciális csoportja végzi. A felhasználók a szoftver kipróbálása közben / után jelzik a fejlesztőknek a próbaüzem közben előforduló problémáikat. béta teszt az alkalmazás éles környezetben fut, a tesztelést tetszőleges (önkéntes) felhasználók végzik. Vizsgálják az ügyfél elégedettséget, és azt, hogy a rendszer mennyire teljesíti az üzleti célokat. Bánsághi Anna 53 of 62
ELFOGADÁSI TESZT 2. elfogadási teszt célja annak megállapítása, hogy a szoftverrendszer a körülményeknek megfelelően működik-e. A rendszer működésének ellenőrzése nem szimulált tesztadatokkal történik, hanem valós környezetben tényleges adatokkal. A teszttel feltárhatók azok a működésbeli rendellenességek, melyeket az informatikai szakemberek a rendszer szakterületében való jártatlanságuk miatt nem fedeztek fel Bánsághi Anna 54 of 62
4. OBJEKTUMORIENTÁLT TESZTELÉS a komponens- és integrációs tesztelés az objektumorientált rendszereknél is alkalmazható KÜLÖNBSÉGEK a tesztelendő objektumok komponensként gyakran nagyobbak, mint az egyszerű függvények (a fehér doboz tesztelés nehezebben alkalmazható) az objektumok lazán kötődnek, és a tesztelt komponensnek vagy a rendszernek nincs egyértelmű teteje (top-down, bottom-up) az újrafelhasznált komponensek kódjához nem mindig lehet hozzájutni, elemezni Bánsághi Anna 55 of 62
AZ OBJEKTUMORIENTÁLT TESZTELÉS SZINTJEI az objektumokhoz kapcsolódó műveletek tesztelése tagfüggvények és az események fekete vagy fehér doboz technikával tesztelhetők osztályok tesztelése a fekete doboz technika alkalmazható, de az ekvivalencia partícionálást a műveletsorozatokra is ki kell terjeszteni együttműködő objektumcsoportok tesztelése alapján kijelölhető az objektumok csoportja a forgatókönyv objektumorientált rendszer tesztelése a követelmények verifikációja és validációja más rendszerekhez hasonlóan történhet Bánsághi Anna 56 of 62
OSZTÁLYOK TESZTELÉSE a teljes (minden utasítás és minden független útvonal) teszt lefedettséghez szükség van: az objektumhoz kapcsolódó összes művelet tesztelésére az összes attribútum beállítására és tesztelésére az objektum összes lehetséges állapotának végrehajtására az öröklődés nehezíti az objektumosztályok tesztelését, mert az összes örökölt műveletet is tesztelni kell Bánsághi Anna 57 of 62
OBJEKTUMINTEGRÁCIÓ az objektumorientált rendszerekben az integráció szintjét nehéz meghatározni a modultesztnek nincs megfelelője, de alkalmazható az együttműködő objektumosztályok csoporttesztje a csoportok az objektumok működésének és a rendszer tulajdonságainak ismeretében jelölhetők ki Bánsághi Anna 58 of 62
CSOPORTTESZTELÉS használati eset vagy forgatókönyv alapján a tesztek a felhasználói interakciókon alapulnak. Előnye, hogy a felhasználók által leggyakrabban használt részeket teszteli száltesztelés a rendszernek egy eseményre adott válaszát vizsgálja, amint az a rendszeren keresztülhalad objektum együttműködési teszt az objektumok együttműködésének egy sorozatát vizsgálja, amely akkor ér véget, ha egy objektumművelet nem hív meg más objektumszolgáltatást Bánsághi Anna 59 of 62
FORGATÓKÖNYV ALAPÚ TESZTELÉS a használati eset diagram alapján meghatározott forgatókönyvet kiegészíti egy olyan szekvencia diagrammal, amely az érintett objektumokat is megmutatja olyan forgatókönyveket kell választani, amelyek végül biztosítják, hogy minden objektum minden művelete legalább egyszer tesztelve legyen a szekvencia diagram arra is alkalmas, hogy meghatározzuk a teszt input és output adatait a forgatókönyvben ki kell térni a kivételekre (hibaesetekre) is Bánsághi Anna 60 of 62
5. TESZTELŐ ESZKÖZÖK a tesztelés drága és időigényes folyamat a tesztelő eszközök automatizálják, amit lehet, így csökkentik a tesztelés idő- és erőforrásigényét, a költségeket nagy rendszerek esetén a tesztelő eszközöket a rendszer funkcióihoz és felelősségéhez szabják a tesztelő eszközöket nem könnyű integrálni a tervező, fejlesztő CASE eszközökkel Bánsághi Anna 61 of 62
ÖSSZEFOGLALÁS legfontosabb a rendszer gyakran használt részeit tesztelni az ekvivalencia partícionálás egy lehetőség a tesztadatok előállítására. Az osztály határára eső értékek fedik fel a hibákat a legnagyobb valószínűséggel. az egységtesztelés a program vezérlési gráfjának tesztelésén alapul az integrációs tesztek a komponensek és az interfészeik közti interakciót vizsgálják az interfészhibák a specifikáció hibás értelmezéséből és hibás időzítésből származhatnak az objektumosztályokat úgy kell tesztelni, hogy minden műveletet kipróbálunk, minden attribútumnak értéket adunk, minden állapotot tesztelünk az OO rendszereket a használati esetek alapján összegyűjtött objektumcsoportokban lehet tesztelni Bánsághi Anna 62 of 62