Quality assurance a testovací testovac nástroje v praxi Bohumír Zoubek bohumir.zoubek
[email protected] http://www.profinit.cz
Quality Assurance
QA – obsah Kvalita – proč,, co, kde ? DMAIC model Plánování Validace a verifikace Měření ení a historie projektu Komplexní pohled na QA v organizaci Poznatky z praxe Doporučená literatura
Co je cílem ? Ukázat proč je řízení ízení kvality d důležité Ukázat možné způsoby, soby, jak zvýšit kvalitu SW
Pragmaticky Efektivně Nezkresleně
Ukázat, jak funguje projekt ve firmě, firm která si na skutečné né (nikoli papírové) kvalit kvalitě velmi zakládá.
Stručný ný úvod do tématu
Proč kvalita?
Čtvrtá planeta sluneční soustavy Druhá nejmenší Má dva měsíce
Mars Polar Lander
3.1.1999 – Mys Canaveral 3.12.1999 – vstup do atmosféry
Plán přistání istání a „realita“ 40 metrů metr na povrchem vypnuty motory Volný pád Víc se neví…
Pravděpodobná podobná příčina p
Falešný signál od jedné nohy vyhodnocen jako informace o tom, že modul přistál. Chyba identifikována na 1 řádku kódu Cena mise 327,6 mil. USD (celý Mars Surveyor ’98)
Víc? Mars Climate Orbiter (MCO) – metric/imperial (náklady viz MPL) Ariane 5 – 64 floating point -> 16 bit signed integer (7 billion USD/10 let vývoje) Procesor Pentium – chybný algoritmus dělení d …
Obsah Stručný přehled ehled tématu Proč kvalita Jak na kvalitu Kvalita a softwarový proces Poznatky z praxe Goodies – templates, checklists Doporučená literatura
Proč kvalita ? Údaj
Hodnota
Poznámka
Chybovost (počet chyb na 1000 SLOC)
2
průměr v IT odvětví je 7
Produktivita (počet řádků kódu na 1MD)
14-17
průměr v IT odvětví (COCOMO) je 4
Softwarový proces
pragmaticky definovaný a dodržovaný
Rozsah projektů
50-5000 MD
Průměrná velikost týmu
4
Průměrná délka projektů
měsíce
250
70
230
62
obrat (mil. Kč)
200 150
počet změstnanců
60 170 135
100 50
49
50 40
36
30 20 10 0
0 2004
2005 rok
2006
2004
2005 rok
2006
Kde je kvalita ?
Quality Assurance vs. Validace & Verifikace vs. Testing
DMAIC model
Plánování
Plán QA
Je nutné plánovat jednotlivé aspekty QA Definice
procesů Plán testů Plán přezkoumání ezkoumání a revizí …
Je nutné plánovat minimálně minimáln na úrovni Organizace Projektu Jedince
(firmy)
Jak vybrat správný postup ?
Minimální nároky
Pragmatické a efektivní
Základ firemního procesu
Projekt se vůči nim vymezuje
Validace, Verifikace
Verifikace & Validace Am I building the product right ? Am I building the right product ?
V&V je realizováno pomocí Testování
(unit, integrační, integrač …) Review, Inspekce, Walkthroughs, Walkthroughs … …
Přezkoumání ezkoumání
přezkoumání projektu
přezkoumání nabídky
přezkoumání designu
přezkoumání kódu
Testování
Cíle Testování je součástí ástí procesu vývoje vývoje. Testování je snadné. Testování je rychlé. Testování je automatizované. automatizované Testování je důkladné kladné.
Typologie testů test Unit testy Integrační testy Systémové testy
Funkční Výkonové …
Uživatelské akceptační ční testy
Regresní testy
V - model Business case
Product verification
review
Requirements
User acceptance tests
review
Functional design
System, integration tests
review
Design & Coding review
Unit tests, code analysis
Statická analýza kódu Analýza zdrojového kódu SW bez jeho spuštění spušt Dokáže najít velké množství opakujících se problémů
Používání
synchronizačních primitiv Manipulace s I/O resources Problémy v dizajnu Dodržování konvencí v kódu (jména, styl, …) …
Nástroje dostupné pro mnoho platforem
Testy v kontextu projektu Smoke testing, Continuous Integration Vývojová platforma
Integrační platforma
SCM Pravidelný build
Pravidelný commit Lokální vývoj
Povinná sada testů (krátké a rychlé)
Všechny automatické testy
Výkonové a jiné nefunkční testy, manuální testy
Regresní testy (automatické a manuální)
dodávka
Testovací platforma
Měření, ení, historie Sledovat vlastní vývoj Srovnání s předchozími edchozími výsledky Povinnost vytvořit it historii projektu
Pragmatický
cenový model Základní metriky – size, time, effort, quality Pragmatická evidence – Sybis, Bugzilla, SVN/CVS, …
Big picture
Pohled na proces vývoje v organizaci
Poznatky z praxe QA je nutné naplánovat Proces musí být pragmatický Bez měření se nelze zlepšovat O kvalitě je nutné uvažovat na všech úrovních od organizace až po jedince Přezkoumání ezkoumání je efektivní (a mnohdy jediný) způsob ůsob zajišt zajištění kvality
Doporučená ená literatura Little Book of Testing – Volume I, Volume II, II Software Program Managers Network James A. Whittaker, What Is Software Testing? And Why Is It So Hard?, IEEE Software, vol. 17, no. 1, pp. 70-79, 79, Jan/Feb., 2000 ESA SOFTWARE ENGINEERING STANDARDS, STANDARDS ESA PSS-05-0 Issue 2, February 1991. SOFTWARE ASSURANCE GUIDEBOOK, GUIDEBOOK NASA-GB-A201 Overcoming the NAH Syndrome for Inspection Deployment. ICSE 1998 Sanders, J. et al. Software Quality: A Framework for Success in Software Development and Support. Addison-Wesley. Wesley. 1995
Testovací nástroje
Agenda Typologie testů vs. dostupné nástroje Koncept Continuous Integration Udržovatelnost testů Volně dostupné nástroje
TestNG,
… Findbugs, PMD, … Selenium, AutoIt… jMeter, …
Typologie testů test vs. nástroje
Typologie „testů“ „test Unit testy Přezkoumání kódu Statická analýza kódu Integrační testy Systémové testy
Funkční Výkonové
Kde nám pomáhají nástroje ? Příprava íprava testovacího prostředí
Naplánování testů
Vytvoření testovacích scénářů
Testování Exekuce testů
Vyhodnocení testů, reporting
Continuous Integration
Testy v kontextu projektu Smoke testing, Continuous Integration Vývojová platforma
Integrační platforma
SCM Pravidelný build
Pravidelný commit Lokální vývoj
Povinná sada testů (krátké a rychlé)
Všechny automatické testy
Výkonové a jiné nefunkční testy, manuální testy
Regresní testy (automatické a manuální)
dodávka
Testovací platforma
Volně ě dostupné nástroje
Tlustý / tenký klient
Liší se hlavně přii systémových testech Funkční
testy (GUI) Výkonové testy
Bez výrazného rozdílu Unit
a integrační testy Statická analýza kódu …
Nástroje „bez rozdílu“
Unit a integrační testy jUnit,
TestNG, jMock, EasyMock, EasyMock DbUnit, …
Statická analýza kódu Findbugs,
PMD, FxCop,, …
Continuous Integration CruiseControl,
Hudson,, Team Foundation Server, …
Nástroje tenký klient
Funkční testy Selenium,
Výkonové testy JMeter,
jWebUnit, Watij, Watij …
Dieseltest, …
Komplexní řešení HP
Test Suite, Rational Test Suite, …
Nástroje tlustý klient Quick Test Professional Rational Functional Tester AppPerfect Functional Tester GUI Automation White AutoIt …
Příklad č. 1 – TestNG
Ukázka TestNG Framework pro tvorbu (nejen) unit testů test Velmi dobrá podpora pro integrační integra testy Vysoká granularita spouštění spoušt testů
test
methods groups tests suites
Závislosti mezi metodami, skupinami Parametry testů Definice timeout
Ukázka TestNG
Příklad č. 2 – Findbugs, PMD
Ukázka PMD / CPD
Statická analýza kódu Detekce potenciálních problémů problém (PMD) Možné chyby Mrtvý kód (nepoužívané metody, proměnné, prom …) Neoptimální / příliš íliš komplikovaný kód
Velké množství pravidel / kontrol Pouze zdrojové soubory (Java, JSP, JSF), ne JAR Velmi dobrá detekce duplicit v kódu (CPD) Konzolová aplikace, CPD má GUI Integrace s Ant, Maven, …
Ukázka PMD / CPD Seznam pravidel PMD Příklad konfiguračního ního souboru Příklad PMD reportu Příklad CPD
Ukázka Findbugs Konkurence PDM Podobná pravidla / kontroly Bez detekce duplicit Umí bytecode (schopnost kontroly JAR) ☺ Integrace s Ant, Maven, … Konzole, GUI
Ukázka Findbugs Příklad GUI Příklad reportu
Příklad č. 3 – Selenium
Ukázka Selenium
Funkční ní testování web aplikací Testy lze psát v mnoha jazycích (Java, C#, C …) Lze využít Selenium IDE Podpora řady prohlížečů (Firefox Firefox, IE, Opera, …) Integrace s jUnit, TestNG, nUnit, nUnit … Testy jako Javascript v prohlížeči prohlíže Omezeno možnostmi Javascriptu ☺ Opravdu testuje aplikaci v prohlížeči, prohlíže nesimuluje
Ukázka Selenium
Příklad č. 4 – AutoIt
Ukázka AutoIt
AutoIt skripty + data
Test report Aplikace
Příklad č. 5 – jMeter
Ukázka jMeter Výkonové testování (nejen nejen) web aplikací Opensource nástroj Specializované IDE (Swing desktop aplikace) Lze spustit i konzolově Ne moc dobrá podpora pro Ant, lepší pro Maven Velmi široká paleta možností ( ☺ / )
HTTP(S),
SOAP, JDBC, LDAP, JMS, … Pokročilé ilé statistiky, monitoring, vizualizace
Ukázka jMeter
Faktory TCO AT
Podstatné faktory TCO AT Faktor % funkčního pokrytí systému Míra automatizace testů Architektura AT Zakomponování AT do vývoje Vnímání symbiózy aplikace a AT „Built-to-test“ aplikace
TCO
Shrnutí
Různé typy testů, různé ůzné nástroje všechny
jsou nutné, doplňují doplň se
Lze automatizovat (s rozmyslem ☺) OpenSource nástroje dostatečně dostate kvalitní Podstatný je design
podpora
pro testy (na všech úrovních) velmi pomáhá DI a TDD
Diskuse
Diskuse
Komentáře Otázky Připomínky Upřesnění Poznámky …