Vývojový proces NetBeans IDE Ing. Martin Balín Quality Assurance Manager Sun Microsystems
Program 1. Představení Sun Microsystems & NetBeans 2. Vývojový proces NetBeans IDE 3. Zajištění kvality NetBeans 4. Závěr
Sun Microsystems ● Založeno 1982 ● Výrobce prac. stanic SPARC, Solaris ● Java – rozmach od 1997 ● Transformace společnosti přes výrobce serverů na dodavatele kompletních systémů ● NetBeans koupeno Sun v říjnu 1999 ● NetBeans IDE – open source 2000 ● Základ pro další Sun IDE
NetBeans IDE
NetBeans IDE 2. ● ● Open source projekt pod CDDL licencí ● Vývojáři: Sun ~80 ● Význam – podpora Java vývojářů, tvorba Java komunity ● Konkurenti: – Eclipse (IBM) – IntelliJ IDEA
Struktura organizace
Projektová struktura
Životní cyklus jedné verze
Slovníček pojmů ● Feature Freeze – ukončení přidávání funkčnosti ● High Resistance – konec nekontrolovaných oprav ● Code Freeze – ukončení veškerých oprav ● RC – Release Candidate ● FCS – First Customer Ship ● Stopper – chyba, která se musí opravit ● Code line – jedna verze kódu ● Integrace, integrační testování
Uživatel ● Kdo a proč používá NetBeans IDE? ● Jak nejlépe naplnit požadavky našich uživatelů? ● Jak získat nové uživatele? (a současné neztratit) ● Kdo? Java vývojář - začátečník až pokročilý Java EE guru. ● Proč? Funkcionalita, rychlost,... ● Kde potkáváme naše uživatele? – Internet – Konference ● Voice Of the Customer – VOC – marketing, mailing listy, Issuezilla
Podpora uživatelů
Fáze sběru požadavků 1. Začíná před ukončením stávající verze. 2. Třídění všech požadavků z různých zdrojů 1. Průzkumy trhu 2. Nové technologie 3. Odezva na mailing listech 4. Databáze chyb 3. Seskupování požadavků podle oblastí - technologie, části produktu, Vypracování Product Requirements Document
Definice kritérií produktu ● Ve fázi požadavků a plánování ● Zahrnuje: 1. Hlavní témata verze 2. Vedlejší témata – vlastnosti, opravy 3. Kvality kritéria - performance, počty chyb, splnění standartů
Fáze plánování
Fáze implementace
Běžné úlohy vývojáře ● Tvorba specifikace ● Review specifikace ● Implementace funkcionality ● Stabilizace ● API review ● Psaní unit testů a jejich ladění ● Opravy chyb ● Komunikace s uživateli ● Opravy chyb ● Review dokumentace
Vývojářské standarty ● Jednotné vývojové prostředí – CVS, ant, Issuezilla,... ● User specifikace ● API review – “DevRev” a ARC ● JUnit testy ● Usability study ● Performance testy
Změny během jedné verze ● Je možné něco přidat/předělat během stabilizace? ● Ano, když to pomůže uživatelům ● Jak se změna dělá? – Návrh a popis rizik a dopadů – Vyjádření všech dotčených skupin – Implementace a průběžné testování – Integrace do hlavní code line – Integrační test
Vývoj “na branch”
Sun Quality Assurance ● QA exituje v Sun přibližně 12 let ● Různé zaměření podle produktu ● Hlavní rysy různých QA: – Solaris – zpětná kompatibilita, robustnost, API – Java – pokrytí OS, performance, automatické testy, Test Compatibility Kit – Developer Tools – funkčnost, uživatelské scénáře ● Quality design – Architecture review committee – Development reviews
Zaměření a typy testování ● Quality engineering vs. test execution ● Typy testování: – Funkční – základní úroveň – Uživatelské scénáře – Kompatibility – databáze, SCM,... – Standards compliance (JSR) – Performance – Accessibility (A11Y) – Internationalization vs. Globalization vs. Localization – Vývoj automatických testů –... ● Unit testy - Development!
NetBeans Quality Assurance ● Kvalita produktu od návrhu po uvolnění uživatelům ● Testování podle koncového uživatele -> Java vývojář ● 24 QA inženýrů a ~55 NB vývojářů ● Přímý kontakt s uživateli – NetBeans open source komunita ● 80% funkční manuální testy ● Automatické funkční a performance testy. ● A11Y a I18N ●
Činnosti NetBeans QA
Chyba - bug ● Co je to chyba? ● Jak ji najdeme? ● Co s chybou?
Definice chyby ● Odchylka od zadaného, nebo očekávaného chování programu.
Hledání chyb ● Hlavní způsob zlepšení kvality produktu ● Ve všech oblastech: – Design – Funkčnost – Performance – Accessibility ● Různými způsoby: – Review specifikací – Manuálně podle scénářů – Automaticky – regression – Spoluprací s komunitou
Život jedné chyby
Dobrý vs. špatný bug report ● Development build # of NetBeans 5.5 Solaris 10 with build #20 of JDK ClearCase profile from 03/02/20 ● Description: "Versioning Explorer" popup menu does not retrieve revisions of a file but throws NPE through request processor instead. This is very significant bug in the profile and should be resolved immediately. ● Steps to reproduce: 1. Mount ClearCase VOB tag as VCS filesystem. 2. Invoke "Versioning Explorer" on some ClearCase file element. 3. Below attached exception is thrown and its node says "Please wait..." forever. ● java.lang.IllegalArgumentException: URI has an authority component ●... Dynamic classpath = C:\netbeans- 4.1beta\platform5\core\core.jar;C:\netbeans- 4.1beta\platform5\core\openide- loaders.jar;C:\netbeans- 4.1beta\platform5\core\openide.jar;C:\netbe ans-4.1beta\platform5\core\org-netbeans- swing-plaf.jar;C:\netbeans- 4.1beta\platform5\core\updater.jar;C:\netbea ns-4.1beta\nb4.1\core\org-netbeans- upgrade.jar;C:\netbeans- 4.1beta\nb4.1\core\locale\core_nb.jar;C:\net beans-4.1beta\ide5\core\org-netbeans- modules-utilities-cli.jar *********** Exception occurred ************ at 10:03 AM on Apr 14, 2005 [catch]java.lang.IllegalArgumentException: URI has an authority component [file://Sgt_costa/ESISLA/web/WEB- INF/lib/antlr jar] at org.netbeans.modules.masterfs.MasterURL Mapper.getFile...
Sledování kvality – Graf ukazuje skutečný a očekávaný počet P3 chyb
Sledování kvality 2. ● Graf ukazuje zda stihneme vyřešit více chyb než zadají uživatelé
Sledování kvality 3. ● Bug dashboard – přehled o chybách na nejvyšší úrovni
Release End Game
Bug waiver ● Co je to? ● Proč bug waiver používáme?
Můžeme TO opravdu vypustit? ● Diskuse na závěr: “Je produkt v release kvalitě?” – Dříve, co člověk to názor => zavedení release kriterií ● Release kritéria usnadňují rozhodnutí – Splňujeme počet chyb, performance, požadované funkce? ● Důležité je konečné slovo Quality Assurance – Ano, můžeme releasovat
Zajímavé odkazy ● Quality experti: – James Bach, Satisfice, Inc. – Cem Kaner – Brian Marick, Testing Foundations ● NetBeans QA –
Závěr ● Q & A ●