Szoftver tesztelés a gyakorlatban 3 Speciális tesztelési helyzetek A tesztelési folyamat
3 Tevékenységek! El!készítés! tervezés! tesztkörnyezet kialakítása! teszteset tervezés! Tesztelés lezárás! tesztelési folyamat nyomonkövetése! tesztelés értékelése! dokumentálás 4 Általános tesztelési elvek! Tesztelési nehézségek! Kimerít! tesztelés lehetlen! Korai tesztelés kívánatos! Hibák eloszlása nem egyenletes a szoftverben! Pareto-elv! Immunissá válás a tesztesetekre! folytonos teszt eset fejlesztés! A tesztelési gyakorlat kontextus függ!! pl. beágyazott bizt. krit. sw, web-alk. stb.
5 A folyamat! 1. Teszt tervezés! célok, stratégia, kiterjedés, technika, személyzet! 2. Teszt analízis! tesztesetek el!állítása, teszt környezet létrehozása! 3. Teszt implementálás, végrehajtás! 4. Lezárási kritérium értékelése! 5. Teszt lezárás 6 Független tesztelés! A kód írója! Más személy a fejleszt! csapatból! Más személy másik szervezeti egységb!l! Küls! szervezet
7 Tesztel! személyzet! Nem szorosan a teszteléshez kapcsolódó! projekt menedzser! min!ségbiztosítási menedzser! fejleszt!k! egyéb specialisták! felhasználók! Tesztel! csapat! tesztelés vezet!! teszter 8 Tesztelési megközelítések! Kockázat alapú! Sztochasztikus! Szabvány alapú! Heurisztikus! Stratégia! kockázat! tesztel!k képzettsége! szabályozási háttér! a termék jellege
9 UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Teszt követés Department of Software Engineering! Visszacsatolás a tesztelési folyamatról! manuális vagy automatikus adatgy"jtés! Magas szint" teszt metrikák Visualization! tervezett és elvégzett tesztek Dashboard! teszteset állapotok! hiba everything statisztikák on one page More important metrics and other information visualized on one page! lefedési metrikák! határid!k! Graphical költségekvisualization Easily comprehensible 10 ISTQB CTFL Department of Software Engineering, Univ. Szeged 188 UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Teszt követés (folyt.) Department of Software Engineering Visualization! vizualizálás Number 70 60 50 40 30 20 10 0 14th May 21st May 28th May 4th July 11th July 18th July New 5 15 62 In test 2 13 20 Failed 1 5 6 Planned executions 2 20 50 60 80 100 Actual executions 5 20 82 120 100 80 60 40 20 0 New In test Failed Planned executions Actual executions ISTQB CTFL Department of Software Engineering, Univ. Szeged 189
Rendszer tesztelés 12 Rendszer tesztelés! Magas szint" tesztelés! cél -> követelmény spec. transzformáció hibáinak felderítése! elvárásoknak való megfelelés (validáció)! teljesítmény demonstrálás (!?)! funkcionális néz!pont! nehéz a tesztesetek származtatása! célok elemzése! felhasználói dokumentáció
13 Magas szint" tesztek! Szolgáltatás tesztelés! Mennyiségi tesztelés! Löket terheléses tesztelés (Stressztesztelés! Használhatósági tesztelés! Biztonsági tesztelés! Teljesítménytesztelés! Konfigurációtesztelés! Dokumentációtesztelés Komponens interakció tesztelés 14! Különféle komponensek közötti interakciók! pl. web alkalmazás! böngész!k! operációs rendszerek! hálózati összeköttetések! printer konfigurációk! Kombinatórikai megközelítés! túl sok teszt helyzet! teljes n-way interakció út tesztelés! interakció páronkénti tesztelés
Alacsony szint" interakció tesztelés 15! Követelmény spec. alap konstrukciók! adatok! tevékenységek, akciók Adat input! I/O eszközök (portok)! események input output Tevékenység! szálak Esemény végrehajtás output fellépés Szál Eszköz Alacsony szint" interakció tesztelés (folyt.) 16! Modellezés az alap konstrukciókkal Adat szerkezeti modell Esemény Tevékenység viselkedési modell kontextus modell Szál Eszköz
Alacsony szint" interakció tesztelés (folyt.)! Modellezési eszközök! állapotgépek (FSM)! menu és esemény vezérelt rendszerek! Petri hálók! konkurrens rendszerek! M"ködési szálak azonosítása! Tesztelés FSM szálak mentén! viselkedési megközelítés! Tesztelés port, esemény, vagy adat szálak mentén! funkcionális megközelítés 17 Alacsony szint" interakció tesztelés (folyt.)! Interakció típusok! Statikus egy processzoros! adatok! propozíciós logika! Statikus több processzoros! statikus elosztott interakció! Dinamikus egy processzoros! adatok, események, szálak! temporális logika! Event Driven Petri Net! Dinamikus több processzoros! konkurrencia 18
Automatizált tesztelés 20 Automatizált tesztelés hatásai! Általában több különböz! eszköz szükséges! Tesztelési ráfordítás nem feltétlenül csökken! Tesztelési id! nem csökken! Egy mini fejlesztési folyamat jelenik meg! Nem minden teszt automatizálható! Képzés szükséges
Automatizált tesztelés hatásai (folyt.) 21 Költségek Manuális Automatizált Tesztelés mennyisége 22 Eszközök bevezetése! Szempontok! tesztelési folyamat érettsége! eszköz alternatívák! az eszköz szolgáltatásai! az eszköz szállítója, támogatási háttere! Költségek! ár, licensz díjak, támogatás! bevezetési költségek " implementáció, testreszabás " képzés
Modell alapú tesztautomatizálás 23! Célok! költségcsökkentés! követelmény hiányosságok felderítése! átfogóbb tesztelés! Gyakorlati megoldás! interfész vezérelt elemzés, teszt készítés Modell alapú tesztautomatizálás 24 Követelmények Rendszer Követelmény mérnök Tervez!/ Programozó Komponens interfészek Teszt végrehajtás Teszt mérnök (modellez!) Interfész + Viselkedés modellek Teszt szkript Tesztvektor generátor Teszt szkript generátor Teszt eredm. Teszt mérnök (automatizálás) Teszt szkript leképezések
Modell alapú tesztautomatizálás! Modellezési perspektívák! Követelmény specifikáció! rendszer <-> környezet interfészek! Funkció specifikáció! rendszeren belüli interfészek! Tervezési specifikáció! komponens definíciók 25 Modell alapú tesztautomatizálás! Nehézségek! Modell elemek vs. szoftver-komponensek! Nem nyílvános interfészek! Komponens csatolások! Alkalmazhatóság! világos fejlesztési helyzet! gyorsan stabilizálódó interfészek! modellek iteratív fejlesztése! biztonság kritikus rendszerek 26
27 Automatikus tesztel! eszközök! Tesztel! eszköz ismerete! kompatibilitás a fejlesztési környezettel! Automatizálható tesztek! Kereskedelmi termékek! szükséges funkcionalitás vs. túl sok funkció! Speciálisan fejlesztett megoldások! létrehozási költségek 28 Eszköz típusok! Teszt-eset generátor! Lefedettség elemz! és kód bem"szerez!! Memória szivárgás detektorok! Használhatósági vizsgálati eszközök! Teszt management eszközök! Hálózati tesztel! eszközök! GUI teszt eszközök! Teljesítmény, stressz tesztel! eszközök
Speciálisan fejlesztett eszközök 29! Fejlesztési okok! Operációs rendszer inkompatibilitás! Alkalmazás inkompatibilitás! Speciális tesztelési igény! A fejlesztés menete! Er!forrásigény, fejlesztési korlátok meghatározása! Teszteszköz fejlesztése része a rendszer fejlesztési folyamatnak,! de önnálló célként kezelend! 30 Technológiák automatikus teszt eszközök fejlesztésére! shell scriptek! script nyelvek: Perl, Python! magas szint" programozási nyelvek! COTS integrálás! adatbázis kezel!k! sorkezel!k! XML editorok, parszerek! makro rögzít!k! verzió management eszközök! összehasonlító eszközök
Spec. fejlesztés" tesztkörnyezet példa struktúra 31 Control PC Analysis Module Test Result DB Web Tier Test Management Module Queue Manager Equipment Adapter Control PC Test Automation Framework Test Case Version Management Module Test Case DB Equipment Under Test 32 Tesztel! eszközök kiválasztása! Meghatározó szempontok! szoftver technológiai, fejlesztési környezet! alkalmazott tesztelési módszertan! támogatandó tesztelési tevékenység! alkalmazott szoftver architektúra! adatbázisok, middleware, GUI, OR! egy vagy több eszköz?! szoftver által kezelt adatok verifikálhatósága! teszt típusok
33 Tesztkörnyezetek (pl.)! sgi Tester! teszt paraméterek beállítása 34 Tesztkörnyezetek (pl.)! lefedettségi adatok
35 Tesztkörnyezetek (pl.)! WDTest Major Features! Unit and Integration Testing: on both host and target platforms! Integrated Coverage Analysis! Full support for: ANSI C, ISO C++ and EC++! GUI: Graphical results analysis and Wizard-driven test preparation! Object Oriented: OO-aware testing and coverage analysis! Stubbing and Wrapping: to simulate and control external interfaces Tesztkörnyezetek (pl.)! Static analysis: code complexity and size metrics! IPL Cantata++ Studio T# 512# 860# 753# 47843# "Saj tgèp-cabinetwclass-717-653-0-0-" T# 512# 861# 753# 47869# "Saj tgèp-cabinetwclass-718-653-0-0-" T# 512# 863# 753# 47964# "Saj tgèp-cabinetwclass-720-653-0-0-" T# 512# 864# 753# 47990# "Saj tgèp-cabinetwclass-721-653-0-0-" T# 512# 864# 752# 48016# "Saj tgèp-cabinetwclass-721-652-0-0-" T# 512# 866# 752# 48065# "Saj tgèp-cabinetwclass-723-652-0-0-" T# 512# 867# 752# 48114# "Saj tgèp-cabinetwclass-724-652-0-0-" T# 516# 867# 752# 48277# "-Shell_TrayWnd-865-8-0-0--TrayNotifyWnd-8-7-0-0-" T#!! 517# 867# 752# 48371# "-Shell_TrayWnd-865-8-0-0--TrayNotifyWnd-8-7-0-0-" T# 512# 867# 752# 48471# "WinVNC Tray Icon-WinVNC Tray Icon-819-685-0-0-" T# 512# 867# 752# 48573# "WinVNC Tray Icon-WinVNC Tray Icon-819-685-0-0-" T# 512# 869# 750# 48878# "WinVNC Tray Icon-WinVNC Tray Icon-821-683-0-0-" T# 512# 885# 742# 48904# "WinVNC Tray Icon-WinVNC Tray Icon-837-675-0-0-" T# 512# 897# 740# 48936# "WinVNC Tray Icon-WinVNC Tray Icon-849-673-0-0-" T# 512# 903# 739# 48976# "WinVNC Tray Icon-WinVNC Tray Icon-855-672-0-0-" 36 Tech Cantata++ has been designed around the requirements of the C/C++ language a tool which allows developers to efficiently perform unit and integration testing Teszt script (macro) részlet offers high productivity and a unique set of testing, coverage analysis and static features. Unit and Integration Testing! Wizard-driven Test Script generation step-by-step facilities for creating a complete test driver environment.! Flexible Test Build/Run from inside Cantata++ or via developer s compiler IDE.! Cross-Platform Execution of tests from development environment to target.! Intuitive Test Directives for quickly developing structured repeatable tests yielding clear and unambiguous results.! Checks for all standard and user-defined data types. T W a te p! Exception verificatio expected and unexpe exceptions.! White Box and Black techniques are fully su! Stubbing - programm of external software, w sequence validation.! Automated Wrappin control over external i allowing use of real ex in integration testing.! Test Case Re-use for classes and template Test and Coverage results in! Studio Developed under the control of IPL s Quality Management System which is certified to ISO! Project Level Tree View of test pass/fail results with drill-down for easy navigation to individual tests.! Detailed Test Diagnostics for all
37 Web teszt környezetek Webböngész! Teszteszköz (proxy) Webszerver Teszt rögzítés Teszteszköz (script editor) Script Teszt szerkesztés Teszteszköz (proxy) Webszerver Teszt visszajátszás 38 Web teszt környezetek (pl.) web2test
39 Statikus kód elemz! eszközök! Alkalmazás! szintaktikai hibák! kódólási szabványtól való eltérések! elérhetetlen kód! nem inicializált / nem használt változók! hordozhatósági problémák! kód metrika gy"jtés! méret! komplexitás! függ!ségek 40 Statikus kód elemzés (pl.)
Tesztelés grafikus felhasználói felületeken keresztül 42 Probléma! események (tér és id!beli) képezik a bemenetet! eseményvezérelt rendszerek! nagy és komplex eseménytér! felhasználói beavatkozások lehetséges száma nagy! tetsz!leges id!zítés és esemény sorozatok! nagy kódkomplexitás! a kimenet fogalmának értelmezése nem egyszer"
43 Következmények! Kézzel végrehajtott tesztelés problémás! nem dokumentált! nehezen reprodukálható! de hatékony!! Tesztautomatizálás költséges! rögzített (capture tool) tesztek nem alkalmasak automatizálásra -> teszt fejlesztés! Gyakran csak könnyen végrehajtható teszteket automatizálnak! Nehéz a tesztesetek karbantartása! komponensek helye, mérete változik! felület nyelve változik! rögzit! eszköz nehezen módosítható scriptet készit 44 Rögzít!/visszajátszó eszközök! Fix (rögzített) adatértékek! input értékek! képerny! koordináták! ablak címkék! id!k!! Nem moduláris scriptek! Nincsenek szabványok
45 Helyes megközelítés! Tudatosítani a tesztfejlesztés költségeit! tervezés! fejlesztés! Adatvezérelt teszt architektúra használata! teszt végrehajtó kódtól elkülönített paraméter állományok! komplex tesztesetek szétbontása résztesztekre! Keretrendszer jelleg" tesztkörnyezet használata! tesztelt felülett!l elválasztott tesztfüggvénykönyvtár (teszt script független )! custom control vezérlés! elemi és komplex függvények létrehozása! struktúrált rögzít!-visszajátszó környezet 46 Helyes megközelítés (folyt.)! Struktúrált, moduláris UI navigáció! navigációs függvények külön modulba! UI componensek elérése! billenty" használat szimulálása! objektum nevek, egyedi ID-k! esetleg címkék, x,y koordináták! GUI map adatbázis! Különböz! ablakkezel!khöz tesztelési függvény könyvtárak! pl. WinRunner
47 Test harness rendszerek! Magas szint" programozási nyelven fejlesztve! Illeszt! tervezési minta alkalmazása! többféle rendszer tesztelhet!! Felhasználói felület megkerülése! gyorsabb tesztelés! MVC!! Tesztesetek leírása! Kiinduló pont beállítás 48 GUI test harness pl.! Mercury WinRunner
49 Véletlen tesztgenerálás! Palm OS Emulator Gremlins Tesztelés standard script interfészen keresztül 50! Perl, VB + COM! AppleScript Teszt script GUI Script interfész Program kód
Tesztelés virtuális perifériákon keresztül! Eggplant! + VNC 51 Image Capture Technology Drives the Remote Application image capturing + scripting Scripts are ge in Capture M Menu, tab, tex other UI eleme selected The command executed The image is s Line of script i for you 52 AppleScript és tesztelés! System Events 3. The SenseTalk code for the command is added t! Mac OS X accessibility interface! UI Element inspector Teszt script! AppleScript Studio GUI Script interfész Program kód