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 !
!
!
Immunissá válás a tesztesetekre !
!
Pareto-elv 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. !
! 2. !
Teszt tervezés célok, stratégia, kiterjedés, technika, személyzet
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
Teszt követés ! Visszacsatolás !
a tesztelési folyamatról
manuális vagy automatikus adatgy"jtés
Department of Software Engineering
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS
! Magas
szint" teszt metrikák Visualization
tervezett és elvégzett tesztek !Dashboard ! teszteset állapotok “everything on one page” !■hiba statisztikák – More important metrics and other information ! lefedési metrikák visualized on one page ! határid!k ! költségek !Graphical visualization !
■ Easily comprehensible
10 ISTQB CTFL – © Department of Software Engineering, Univ. Szeged
188
Department of Software Engineering
Teszt követés (folyt.) Visualization
120
70
60
100
50 80 New 40
Number
UNIVERSITAS SCIENTIARUM SZEGEDIENSIS
! vizualizálás
In test 60
Failed Planned executions
30
Actual executions 40 20 20
10
0
14th May
21st May
28th May
New
5
15
62
In test
2
13
20
Failed
1
5
6
Planned executions
2
20
50
Actual executions
5
20
82
4th July
11th July
18th July
60
80
100
ISTQB CTFL – © Department of Software Engineering, Univ. Szeged
0
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 ! 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
14
15
Alacsony szint" interakció tesztelés ! Követelmény
spec. alap konstrukciók
adatok ! tevékenységek, akciók ! I/O eszközök (portok) ! események ! szálak !
Adat
input
output Tevékenység input
végrehajtás output
Esemény
fellépés
Szál
Eszköz
Alacsony szint" interakció tesztelés (folyt.) ! Modellezés
az alap konstrukciókkal Adat
szerkezeti modell
Esemény
Tevékenység
kontextus modell
Szál
Eszköz
viselkedési modell
16
Alacsony szint" interakció tesztelés (folyt.) ! Modellezési !
eszközök
állapotgépek (FSM) !
!
17
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
Alacsony szint" interakció tesztelés (folyt.) ! Interakció !
Statikus egy processzoros ! !
!
statikus elosztott interakció
Dinamikus egy processzoros ! ! !
!
adatok propozíciós logika
Statikus több processzoros !
!
típusok
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
Költségek
Automatizált tesztelés hatásai (folyt.)
21
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
23
Modell alapú tesztautomatizálás ! 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
24
Modell alapú tesztautomatizálás Követelmények
Rendszer Tervez!/ Programozó
Követelmény mérnök
Teszt végrehajtás
Komponens interfészek
Teszt mérnök (modellez!)
Interfész + Viselkedés modellek
Teszt szkript
Teszt szkript generátor
Tesztvektor generátor
Teszt mérnök (automatizálás)
Teszt szkript leképezések
Teszt eredm.
Modell alapú tesztautomatizálás ! Modellezési !
rendszer <-> környezet interfészek
Funkció specifikáció !
!
perspektívák
Követelmény specifikáció !
!
rendszeren belüli interfészek
Tervezési specifikáció !
komponens definíciók
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 !
25
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 ! Fejlesztési
29
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! !
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 !
30
Spec. fejlesztés" tesztkörnyezet példa struktúra Analysis Module
Test Result DB
Test Management Module
Queue Manager
Test Case Version Management Module
Test Case DB
31
Control PC
Web Tier
Equipment Adapter
Equipment Under Test
Control PC Test Automation Framework
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
T# T# T# T# T# T# T# T# T# T# T# T# T# T# T#
512# 512# 512# 512# 512# 512# 512# 516# 517# 512# 512# 512# 512# 512# 512#
860# 861# 863# 864# 864# 866# 867# 867# 867# 867# 867# 869# 885# 897# 903#
753# 753# 753# 753# 752# 752# 752# 752# 752# 752# 752# 750# 742# 740# 739#
47843# 47869# 47964# 47990# 48016# 48065# 48114# 48277# 48371# 48471# 48573# 48878# 48904# 48936# 48976#
"Saj·tgÈp-CabinetWClass-717-653-0-0-" "Saj·tgÈp-CabinetWClass-718-653-0-0-" "Saj·tgÈp-CabinetWClass-720-653-0-0-" "Saj·tgÈp-CabinetWClass-721-653-0-0-" "Saj·tgÈp-CabinetWClass-721-652-0-0-" ! "Saj·tgÈp-CabinetWClass-723-652-0-0-" "Saj·tgÈp-CabinetWClass-724-652-0-0-" "-Shell_TrayWnd-865-8-0-0--TrayNotifyWnd-8-7-0-0-" "-Shell_TrayWnd-865-8-0-0--TrayNotifyWnd-8-7-0-0-" "WinVNC Tray Icon-WinVNC Tray Icon-819-685-0-0-" "WinVNC Tray Icon-WinVNC Tray Icon-819-685-0-0-" "WinVNC Tray Icon-WinVNC Tray Icon-821-683-0-0-" "WinVNC Tray Icon-WinVNC Tray Icon-837-675-0-0-" "WinVNC Tray Icon-WinVNC Tray Icon-849-673-0-0-" "WinVNC Tray Icon-WinVNC Tray Icon-855-672-0-0-"
Tech
!
Major Features !
Unit and Integration Testing: on both host and target platforms
!
Integrated Coverage Analysis
!
Full support for: ANSI C, ISO C++ and EC++
!
!
!
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.
GUI: Graphical results analysis and Wizard-driven test preparation
!
Object Oriented: OO-aware testing and coverage analysis
Flexible Test Build/Run from inside Cantata++ or via developer’s compiler IDE.
!
Cross-Platform Execution of tests from development environment to target.
Stubbing and Wrapping: to simulate and control external interfaces
!
Intuitive Test Directives for quickly developing structured repeatable tests yielding clear and unambiguous results.
36
T W a te p
Tesztkörnyezetek (pl.) !
! IPL
Static analysis: code complexity and size metrics
!
Cantata++ Studio
Checks for all standard and user-defined data types.
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
!
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
37
Web teszt környezetek Webböngész!
Teszteszköz (proxy)
Teszteszköz (script editor)
Script
Teszteszköz (proxy)
Webszerver
Teszt rögzítés
Teszt szerkesztés
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 ! Perl,
VB + COM ! AppleScript Teszt script
GUI
Script interfész
Program kód
50
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