Hans Schaefer hans.schaefer@ieee.org Prosjekt- og produktrisiko for testeren Prioritering av en første test Prioritering av senere tester Risikoledelse i selve testprosjektet 2009 Hans Schaefer page 1
Målet med testing It shall be the duty of managers to make decisions and the duty of engineers to make them informed ones. Jukka Talvio, Development Manager, F-Secure -> Test = Måling av risiko! 2009 Hans Schaefer page 2
Hvorfor denne presentasjonen Test, spesielt utføring av test, er alltid under tidspress. Testutføring er det siste vi gjør, utsatt for alle forsinkelser før. Mindre viktige ting må kuttes. Bruk optimalt med ressurser for testingen. RISIKO er beste utgangspunkt for styringen! 2009 Hans Schaefer page 3
Hva er risiko? Muligheten at noe skadelig kan skje. Produktet av sannsynligheten, at noe negativt kan skje, og kostnaden, (skaden) hvis det skjer. RISK Damage (cost of failure) Probability of failure Usage frequency Damage / Use Quality (failure rate / defect density) 2009 Hans Schaefer page 4
Risikohåndtering Risiko Gjør noe med det Minimer skaden Ignorer for nå Betal eventuell skade Forebygg Reduser risiko Bekjemp skaden Behold Transfer Unngå QA QM metoder Review Test V&V Reager senere Betal skaden Reparer Reserver Alternativer Underleverandører Forsikring 2009 Hans Schaefer page 5
Details Not all risks are of equal concern. The level of risk is influenced by two factors: the probability of the problem occurring the impact / damage /consequences of the problem should it occur In risk-based testing, testing is conducted in a manner that responds to risk in three ways: Planning and management of the testing work in a way that provides mitigation and contingency responses with each significant, identified project (planning) risk. Allocation of test effort, selection of techniques, sequencing of test activities, and repair of defects (bugs) must be made in a way that is appropriate to the level of risk associated with each significant, identified product (quality) risk. Reporting test results and project status in terms of residual risks; e.g., tests which have not yet been run or have been curtailed. 2009 Hans Schaefer page 6
Risikokategorier Ekstern risiko Strategisk risiko Prosjektrisiko Produktrisiko Naturen, politikk, økonomi, samfunn, markeder Ikke særlig forutsigbar, kan ikke styres Bedriften (økonomi, organisasjon, prioriteter,... Forutsigbar, men ikke styrbar Hva kan være skadelig for testprosjektet? Forutsigbar og styrbar Hva kan være skadelig for kunden eller bruker? Målbar eller styrbar ved å utføre testene 2009 Hans Schaefer page 7
Typer av risiko Risiko FØR Test Risiko UNDER Test Risiko ETTER Test 2009 Hans Schaefer page 8
Risiko FØR Testing Lav kvalitet av spesifikasjon, design og kode Mange feil oversett Blokkerende feil For mange nye versjoner -> Krav til, og oppfølging av kvalitetssikring før test (delta i reviews!) Forsinkelser -> Alternative planer Mangel på kunnskap om systemet -> Test av tidligere versjoner, tidlig testforberedelse, tester involveres i design 2009 Hans Schaefer page 9
Risiko FØR Testing Ressursproblemer For lite folk / feil folk Dårlig testmiljø Testmiljø fungerer ikke Verktøyproblemer -> TIDLIG involvering, alarm, prioritering av test. Kommunikasjonsproblemer Med prosjektet Med bruker / oppdragsgiver Med endringshåndtering Generelt 2009 Hans Schaefer page 10
Risiko ETTER Testing = Produktrisiko De burde ikke være der Kunde / bruker finner feil. Kunde / bruker bruker produktet på en ny måte. Nye kunder, ny type bruk, gjenbruk etc. Analyse av nødvendig pålitelighet! (Hva kan en kunde leve med, hva ikke?) 2009 Hans Schaefer page 11
Risiko i testprosjektet selv Dårlig ledelse Mangel på kvalifikasjon For få eller feil mennesker, for sent Dårlig koordinering Dårlig samarbeid (i testingen og med andre) Problemer med utstyr, verktøy og omgivelse Tid for å implementere simulatorer, hjelpeprogrammer, utilities Medisin: Vanlig god prosjektledelse. 2009 Hans Schaefer page 12
Kan vi gjøre testingen billigere? Bra medarbeidere Prioritering Bli kvitt noe av oppgaven... 2009 Hans Schaefer page 13
Hvordan bli kvitt noe av oppgaven Kutt det ut helt eller få en annen til å betale! Hvem betaler for komponenttest / enhetstest? Startkriterier for test? Automatisk test før den offisielle testen Mindre dokumentasjon Kutte installasjonskostnader for feilrettinger Når installerer en feilrettinger? Regel 1: Reparer bare feil som er viktige (blokkerende for test eller kunde)! Regel 2: Endringer til neste release! Regel 3: Rettinger krever regresjonstest, helst automatisk! Mindre test, la kundene finne feilene???? 2009 Hans Schaefer page 14
Risikobasert test i praksis - tre trinn Identifiser hva som er kritisk 1 Top-10 Test identifiserer områder med mange feil 2 For andre gangs Test: Ekstra Testing: - Ekstra Test i utvalgte områder - Automatisk regresjonstest -... 3 2009 Hans Schaefer page 15
Prioritering for den første testen 2009 Hans Schaefer page 16
Produktrisiko: Skadekostnadsfaktorer å tenke på Hvilke funksjoner og egenskaper er kritiske? (nødvendig for å kjøre forretningen eller prosessen). Hvor synlig er et problem i en funksjon eller egenskap? (for brukere, kunder, kundens kunder, folk utenfor, myndigheter) Hvor ofte blir noe brukt? Går det uten? Hva koster feilene? Juridiske konsekvenser? Den aller første prioriteringen tar BARE hensyn til skade! 2009 Hans Schaefer page 17
Produktrisiko - Sannsynlighet for feil: Hva er trolig verst? Dette vet du først på et sent tidspunkt! Velg de viktigste av disse faktorene! Kompleksitet Tidspress Områder med endringer Områder som måtte optimeres Antall involverte personer Områder med mange feil Gjennomtrekk Geografisk spredning Ny teknologi, løsninger, metoder Kjenner brukerne dette? - Nye verktøy Lokale faktorer - Medarbeidernes egenskaper Spør alltid flere! Spør flere ganger! Dokumenter dine beslutninger! Dette er en kompleks analyse! 2009 Hans Schaefer page 18
Ikke glem Kan vi kutte ut deler av produktet helt? Nye versjoner senere? 2009 Hans Schaefer page 19
Risikomatrix, eksempel High Consequences / Cost Low Low Probability Skalaen med konsekvenser bør helst gå eksponensjelt! High 2009 Hans Schaefer page 20
Hvordan beregne prioriteten? Velg faktorer du vil ta hensyn til (få) Gi dem vekter (1 - lite, 3 - middels, 10 - stort vekt) Gi hvert testområde poeng for hver faktor (1-5, 1 = lite, 5 = mye) Beregn den vektede summen (regneark) Divider eventuelt med en faktor for å jevne ut for ulik kvalitetssikring som utføres utenfor testingen. Regneark Download: http://www.softwaretesting.no/riskcalc.xls 2009 Hans Schaefer page 21
Eksempel Skade Sannsynlighet Area to test Usage frequency Visibility Complexity Geography Turnover SUM Weight 3 10 3 1 3 Function A 5 3 2 4 5 1125 Function A performanc 5 3 5 4 5 1530 e Function B 2 1 2 2 5 368 F B 1 1 4 2 5 377 usability Function C 4 4 3 2 0 572 Function D 5 0 4 1 1 240 2009 Hans Schaefer page 22
Matematikken? Risiko = Skade * Sannsynlighet Skade = (vekt for skade faktor 1 * verdi for denne faktor + vekt for skade faktor 2 * verdi for denne faktor + + + vekt for skade faktor n * verdi for denne faktor ) Sannsynlighet = ((vekt for sannsynlighet faktor 1 * verdi for denne faktor + vekt for sannsynlighet faktor 2 * verdi for denne faktor + + + vekt for sannsynlighet faktor n * verdi for denne faktor )) / (innflytelse av annen kvalitetssikring) 2009 Hans Schaefer page 23
Matematikken Virker bra nok. Egentlig er vi på en logaritmisk skala, da vi bruker subjektive valg. De høyeste tall -> grundig testing Middels tall -> vanlig testing Lave tall -> lite testing Bruk hodet, analyser uvanlige tallverdier! 2009 Hans Schaefer page 24
Hva gjør vi hvis vi ikke vet noe? Kjør en tynn test. Prioriter der du finner feil. Først en test i bredden ( smoke test ), alt litt. Andre gangs test blir prioritert. 2009 Hans Schaefer page 25
Hvordan prioriterer senere testsykluser Adaptiv testing Analyse av feil og testdekning Analyse av feilfinningsprosenten 2009 Hans Schaefer page 26
Adaptiv Testing - neste gangs test Arbeidsomfang symbolisert ved lengde på boksene. Test Area 5 Test Area 5 Test Area 4 Test Area 4 Test Area 3 Test Area 3 Test Area 2 Test Area 2 Test Area 1 Test Area 1 t 1 t 2 Tid 2009 Hans Schaefer page 27
Analyse av testdekning Har alle viktige funksjoner og egenskaper blitt testet? Unntakshåndtering? Tilstander, tilstandsoverganger? Viktige egenskapskrav? Er kodedekningen som planlagt? Ekstra test eller sjekk der kodedekning avviker fra forventet dekning. 2009 Hans Schaefer page 28
Hvordan analysere kodedekning Et område er mer testet enn forventet: Ytelsesproblemer? Flaskehalser? Feil? Et område er mindre testet enn forventet: Spesifikasjon for tynn? Implementasjon for kompleks? Overflødig kode? Review slike områder! 2009 Hans Schaefer page 29
Analyse av feiltetthet Fakta: Testing finner ikke alle feil. Jo flere du finner, jo flere er igjen. Feiltetthet i test er proporsjonalt til feiltetthet etter test. Feil er fordelt etter pareto-prinsippet: 80% av feilene finnes i 20% av systemet. Feil er sosiale, de like nærheten av hverandre! Test mer hvor du finner feil! 2009 Hans Schaefer page 30
Referanser IEEE Standard 1044-2002: Standard Classification for Software Anomalies IEEE Standard 1044.1-2002: Guide to Classification for Software Anomalies Soon to be released: IEEE Std. 16085 Standard for Software Engineering - Software Life Cycle Processes - Risk Management -You find these standards at sales@ieee.org Rex Black, Managing the Testing Process, John Wiley, 2002. (includes CD with a test priority spreadsheet) Leveson, N. G. (1995). Safeware: System Safety and Computers. Reading, Massachusetts: Addison Wesley. Hall, Payson: A Calculated Gamble. In STQE Magazine No 1 +2 / 2003. Stamatis, D.H., Failure Mode and Effect Analysis: FMEA from Theory to Execution, Amer Society for Quality, 1995. Schaefer, Hans: Strategies for Prioritizing Test, STAR WEST 1998. http://home.c2i.net/schaefer/testing/risktest.doc James Bach, Risk Based Testing, STQEMagazine, Vol1, No. 6, www.stqemagazine.com/featured.asp?stamp=1129125440 Felix Redmill in Professional Tester, April 2003. www.professional-tester.com Tom DeMarco and Tim Lister, "Waltzing with Bears: Managing Risk on Software Projects, 2003. Randall Rice; Risky Business, A Safe Approach to Risk-based Testing, Better Software Magazine Oct 2006. FMEA: Failure Mode and Effects Analysis: http://www.fmeainfocentre.com/ 2009 Hans Schaefer page 31