Testing for Nybegynnere Hva må alle testere vite? Kort intro i basis test design metoder Hans Schaefer hans.schaefer@ieee.org http://www.softwaretesting.no/ 2005-2008, Hans Schaefer Slide 1
Hvem er jeg? Dataingeniør (informatikk, jernbanesignalsystemer, Teknisk universitet Braunschweig, Tyskland, 1979 Fraunhofer Institutt Karlsruhe: Utvikling av styringssystemer, til 1981 Senter for Industriforskning, Oslo, utvikling av IDE, testverktøy, kvalitetssikring, til 1987 Forelesninger i testing på universiteter i Norden (1984 til i dag) Konsulent innen testing siden 1987 Kurs og opplæring innen testing siden 1984, i alle skandinaviske land, Tyskland, India, USA, Canada, Polen Kunder i det siste: AOL, Banverket, Helse Vest + Øst, Lucent, Skandiabanken, Visma Del av programkomiteen i internasjonale konferanser om testing og advisory board til Better Software Magazine. I fritiden: Turleder for Bergen Turlag, aktiv på Gamle Vossebanen med museumstog. 2005-2008, Hans Schaefer Slide 2
Målet med testing Informasjon Hvor stor risiko er det å sette dette i drift? Destruksjon Finne flest mulig feil Læring Hva kan egentlig systemet? Hvordan virker det? Hva kan det ikke? 2005-2008, Hans Schaefer Slide 3
Er Du en god tester? Kritisk sans? Spør heller enn å anta ting? Vil lære mer? Tenker på tvers? Liker åfåting til åfeile? Systematisk? 2005-2008, Hans Schaefer Slide 4
Grunnlag for testen Spesifikasjon / endringsoppdrag Bruksanvisning Online hjelp Standarder for grensesnitt Forretningsgang, regler Datamodell, databruksbeskrivelse o.l. Selve systemet / koden (det vi vet om, det vi ser under test) Heuristikk / Erfaring 2005-2008, Hans Schaefer Slide 5
Første muligheter - Heuristikk H - Historie (vår) I - Image http://www.istqb.org/index.php?id=5 vs. Id=6 F - Forventninger til brukerne http://www.nsb.no tog til Stockholm eller Narvik, Excel: summer arbeidstid F - Forskrifter, regler og standarder P - Produktet selv WORD: bullet lists, Excel: tekst blir til dato P - Produktets mål og mening P - Påstander (om vårt system) S - Sammenlignbare produkter http://177nordland.no/modules/freecontent/index.php?id=2 -> Sjekk mot andre 177-websider! Sjekk mot dette UNDER TESTINGEN! 2005-2008, Hans Schaefer Slide 6
Metoder (ikke fullstendig) 1 - Sjekk av forretningsganger (use cases, scenarier) 2 - Sjekk av dataverdier (rette, feile) 3 - Sjekk av forretningslogikk (beslutningstabeller) 2005-2008, Hans Schaefer Slide 7
Metoder (ikke fullstendig) 1 - Sjekk av forretningsganger (use cases, scenarier) Vanlig flyt (alt går riktig) Alternative flyt (brukerfeil, utstyrsfeil,...) Avbrudd, gjentakelser evtl. Misbruk 2 - Sjekk av dataverdier (rette, feile) 3 - Sjekk av forretningslogikk (beslutningstabeller) 2005-2008, Hans Schaefer Slide 8
Metoder (ikke fullstendig) 1 - Sjekk av forretningsganger (use cases, scenarier) 2 - Sjekk av dataverdier (rette, feile) Input (rett, feil, ekstrem, spesielt, tilstede, ikke, default) Output (ulik format, verdi, relasjoner, ekstrem, feilmeldinger) Mellomverdier (normal, ekstrem, plassproblem) 3 - Sjekk av forretningslogikk (beslutningstabeller) 2005-2008, Hans Schaefer Slide 9
Metoder (ikke fullstendig) 1 - Sjekk av forretningsganger (use cases, scenarier) 2 - Sjekk av dataverdier (rette, feile) 3 - Sjekk av forretningslogikk (beslutningstabeller) Betingelser enkeltvis Kombinasjoner Sjekk alle output 2005-2008, Hans Schaefer Slide 10
Grunnmetode - Coverage For hver type grafikk: - (C0) Alle bokser - (C1) Alle forbindelser - (Cn) Kombinasjon av forbindelser (Kontroll)Flytdiagram Datastruktur Dataflyt Arkitektur Use case Tilstandsdiagram Forretningsgang... 2005-2008, Hans Schaefer Slide 11
Et typisk testfall - KKK K - klargjør Sett opp testmiljø. Sjekk at system er i rett tilstand. K - kjør Utfør testen. K - kontrollér Sjekk resultat. Sjekk andre ting (som ligger utenfor og er ikke direkte synlige). evtl: Bring systemet i neste tilstand som behøves. 2005-2008, Hans Schaefer Slide 12
Hvordan finne Testbetingelser? Nr Hva Forretningsgang Data Logikk 1 Funksjoner x x x 2 Tilstander og overganger x x 3 Datakanaler x 4 Data x 5 Relasjoner x x 6 Annet x x x 2005-2008, Hans Schaefer Slide 13
1. Finne funksjoner En funksjon er noe programmet skal gjøre. USE CASE Feilreaksjoner, alarmer, og display av online-hjelp er også med her (underpunkter under en funksjon). USE CASE - ALTERNATIVE FLYT Risikofaktorer i algoritmer en skal bruke. Hva hvis input ikke tilstede? Hva med divisjon med null? Unntak? Brukerfeil Oppsettparametre? 2005-2008, Hans Schaefer Slide 14
2. Tilstander og tilstandsoverganger Endrer programmet sin virkningsmåte basert på historien til input? Er der rekkefølger av handlinger som er viktige? Som en mobiltelefon (er det en telefon, kamera eller en SMS maskin?) I så fall Finn hver tilstand Finn hver overgang Også ikke lovlige inputs til tilstandene Lag et tilstandsdiagram! Test alle overganger 2005-2008, Hans Schaefer Slide 15
Tilstandsdiagrammer Tistand Hendelse Aksjon Off evpoweron / InitPhone Overgang On Guard evmenuphonebook [SIM Card Is in phone ] / StartPhonebook Phone book Overgang med Guard evcbutton / beep Overgang til samme tilstand 2005-2008, Hans Schaefer Slide 16
Tilstander inne i hverandre (state charts) Off On Etter denne overgang blir begge to parallelle tilstandsmaskiner startet Phone Display Light Camera Dark 2005-2008, Hans Schaefer Slide 17
Aksjoner (output/effekter) forbundet med tilstander State A Entry / action a1 Exit / action a2 Event x / action a3 Ved inngang og utgang skjer output State B 2005-2008, Hans Schaefer Slide 18
Eksempel Vis klokkeslett Hvordan din digitale klokke virker V. øvre knapp V. øvre knapp Klokketid med lys på V. nedre knapp V. øvre knapp Vis vekketid V. nedre knapp Vis stoppeklokke V. nedre knapp V. øvre knapp Timesetting V. øvre knapp Min.setting V. nedre knapp klokkesetting 2005-2008, Hans Schaefer Slide 19
Feil i modellen og implementasjonen Feil i modellen --------------------------- REVIEW Startilstand ikke definert Guard koblet til tilstand istedenfor overgang Guards overlapper, feil, mangler, ekstra Tilstander mangler, feil, ekstra Overganger mangler, feil, ekstra Overganger fra samme tilstand med samme aktivering Feil i implementasjonen -------------TEST Extra / manglende / korrupt / feil tilstand Manglende / feil aksjon Sneak paths (som ikke burde finnes) Trap doors 2005-2008, Hans Schaefer Slide 20
Test Case Design Definer et sett av inputsekvenser som starter og går tilbake til start-tilstanden (hvis mulig). Testca se no. Input + Guards 1 Betal 100 kr, saldo > 100 2 OK, forfallsregister Tilstand Logget inn Sjekk av transaksjon v/ bruker Forventet neste tilstand Sjekk av transaksjon v/ bruker Forfallsreg display Forventet output Kopi av transaksjon, Spørsmål om bekreftelse HELE FFR + ny trans... Start med tester som tester det som forekommer mest i praksis (bra for regressionstest), legg til mer komplekse tilfeller. Ikke glem ugyldige / umulige overganger! 2005-2008, Hans Schaefer Slide 21
Test Case Design Metoder I forhold til tilstandsdiagram: Branch cover State-event cover Switch cover For guards: Vanlige kriterier som ekvivalensklasser, grenseverdier, kombinasjoner se senere 2005-2008, Hans Schaefer Slide 22
Branch Cover Hver tilstandsovergang testes minst en gang. En vil garantert finne at output mangler eller en helt annen output genereres. 2005-2008, Hans Schaefer Slide 23
Generering av en branch cover test Start i start-tilstanden. Velg overganger og heng de etter hverandre til hver overgang har forekommet minst en gang. Vi antar at tilstandsmaskinen henger sammen. 2005-2008, Hans Schaefer Slide 24
State-event Cover Utfør hver hendelse i hver tilstand. Dette er det samme som branch cover hvis tilstandsmaskinen er fullstendig definert.(dvs det er definert for hver hendelse i hver tilstand, hva som skal skje). Typisk glemmer en hendelser som skal ignoreres. 2005-2008, Hans Schaefer Slide 25
Switch Cover En switch (or 1-switch) er et par med etter hverandre følgende overganger. Utfør hver mulig switch. Her kan en finne at feil overgang blir valgt av programmet. 2005-2008, Hans Schaefer Slide 26
Extra: Process cycle test A test of the combined working of automated and manual procedures. Check that the users can do their job with the information given by the automated system. Check that the users have the information the automated system requires. Check if users have sufficient authorization. Normal workflow and exceptions. No check of the system, just of the manual work /automated work interface. Need for representative real users. 2005-2008, Hans Schaefer Slide 27
Oppsummering for test av tilstandsoverganger Kjør historier for objekter i systemet Eksempel: Livet til en vare, transaksjon, kunde Hvert testfall tilbake til start (f.eks. Startskjerm) Unntak, feil, angre, avbrutt! Lange historier med (såpeopera) 2005-2008, Hans Schaefer Slide 28
Neste testmetode: Mer analyse for data i enkeltfunksjoner: Trinn 3 til 6 Enkeltfunksjoner må testes med ulike input-data. Riktig - feil Stor - liten De neste sidene skal identifisere betingelser som er viktige pr. enkeltfunksjon 2005-2008, Hans Schaefer Slide 29
3. Finn datakanaler Hvor kommer input fra, hvor går output hen? Input: Tastatur, mus, filer, databaser, interne globale data, nettverk, apparater, operativsystem, parametere... Output: Skjerm, printer, høyttaler, filer, databaser, interne globale data, nettverk, apparater, operativsystem, parametere... Ikke glem interne data (lagring!) Ikke glem det du ikke ser på et enkelt vis! 2005-2008, Hans Schaefer Slide 30
4. Finn datastrukturer og elementer (felter) i hver kanal En datastruktur er alt som består av mer enn ett element / felt. Notér for hele strukturen og dens deler: Format / layout - restriksjoner Antall Betingelser som gjelder Datatype Verdiområde Må eller kan forekomme 2005-2008, Hans Schaefer Slide 31
5. Finn relasjoner Kombinasjoner Rekkefølge Syntaks Betingelser på tvers av de enkelte feltene Sjekk alle dataelementer / felter mot hverandre! 2005-2008, Hans Schaefer Slide 32
6. Finn annet Tingenes iboende... Betingelser som ligger implisitt i sakens natur Det du vet om problemet Det du vet om restriksjoner i løsningen 2005-2008, Hans Schaefer Slide 33
Eksempel på en testtabell Funksjon 1 Inputkanal 1 Datastruktur 1 Dataelement 1 Dataelement 2 Betingelse Dataelement 3 Verdiområde, format,... Datastruktur 2 Inputkanal 2 Outputkanal 1 2005-2008, Hans Schaefer Slide 34
Noen generelle punkter ved skjermbilder TK1:Er bildet i virkeligheten slik det ser ut i spesifikasjonen? Er arvede dataverdier korrekt? TK2:Korrekt lengde, type, farge, format, posisjon på alle felt? Grenseverdier, feilmeldinger, hjelpetekster etc. TK3: Skjermbilde- og dialogstandard fulgt? Standardverdier riktig? TK4:Mulighet til å gå ut eller gjenta registrering. Editering av felt. TK5: Opsjonelle felter kan virkelig hoppes over. Obligatoriske felt MÅ fylles ut. TK6: Feil input provoserer ikke sammenbrudd. Feilhåndtering. Ny sjanse for input. TK7: Cursorstyring i felt og fra felt til felt TK8: Blir databasen riktig behandlet og oppdatert? 2005-2008, Hans Schaefer Slide 35
Teknikker for valg av TESTDATA Ekvivalensklasser Grenseverdier Spesialverdier Randomtest 2005-2008, Hans Schaefer Slide 36
Ekvivalensklasseinndeling Definisjon: En ekvivalensklasse er en samling verdier der DU TROR at alle behandles likt av programmet. Tre hovedkonsepter: Dekk ALLE MULIGE inputs eller/og outputs Anta: Hver verdi i en klasse håndteres på samme måte av programmet Ingen overlapp mellom klassene 2005-2008, Hans Schaefer Slide 37
Hvordan finne klasser Numeriske data med verdiområde: tre klasser (1) for små verdier, (2) alt som er tillatt, (3) alt som er for stort. 2005-2008, Hans Schaefer Slide 38
Hvordan finne klasser Tidsdata: fire klasser (1) for tidlig, (før) (2) innen forventet tidsrom, (samtidig med) (3) for sent (etter). (4) umulige verdier (f.eks. ikke eksisterende datoer) 2005-2008, Hans Schaefer Slide 39
Hvordan finne klasser Diskrete verdier: mange klasser (1)...(n) En klasse for hver tillatt verdi, og (n+1) En for "noe annet" (noe ikke tillatt). Betingelse: to klasser. (1) Betingelse oppfylt (2) Betingelse ikke oppfylt. 2005-2008, Hans Schaefer Slide 40
Hvordan finne klasser Listeprosessering: mange klasser (1) Null i listen (2) En i listen (3) Flere i listen. (4) Maksimal listelengde (5) For mange i listen. Eventuelt: (6),... Posisjon for funn: Start, innimellom, slutt, funn, ikke funn 2005-2008, Hans Schaefer Slide 41
Hvordan finne klasser Mengde: to klasser (1) tilhører (2) tilhører ikke (komplement av mengden) Eksistens av en input: to klasser (1) input finnes (2) input finnes ikke Format / datatype av hver input: To eller flere klasser (1) riktig format og datatype (2) ikke riktig 2005-2008, Hans Schaefer Slide 42
Hvordan finne klasser Sortering (1) Oppstigende (2) Nedstigende (3) Ikke ordnet Eventuelt: (4) Duplikater (5) Ikke duplikater 2005-2008, Hans Schaefer Slide 43
Noen flere regler Hvis du tror at en klasse må deles opp mer, gjør det! (Pessimistregelen) Gjør dette med alle inputs og outputs. Avmerk alle klasser som fører til feil / avbrutt som "feil" klasser. Hvis data er sjekket før, kan det evtl. bli ingen feil -klasser. Det er en fordel å gjøre inndelingen hierarkisk: Hvis noe bare er interessant under forutsetning av at andre klasser opptrer, før klassifiseringen inn som sub-klasser under den klassen som gir forutsetningen.(classification Tree Method) 2005-2008, Hans Schaefer Slide 44
Eksempel på en testtabell Funksjon 1 Inputkanal 1 Datastruktur 1 Dataelement 1 Dataelement 2 Dataelement 3 Datastruktur 2 Klasse 1 OK Klasse 2 Feil Klasse 3 OK Inputkanal 2 Outputkanal 1 2005-2008, Hans Schaefer Slide 45
Datavalg ut fra Klasseinndeling Arbeidstrinn: (1) For hver parameter og betingelse, del opp i klasser (gjort under Testbetingels-analyse). (2) Velg testdata og dekk alle inputklasser. (3) Se hvilke outputklasser er dekket. Prøv å dekke resten. (4) Velg eventuelt kombinasjoner av klasser 2005-2008, Hans Schaefer Slide 46
Detaljer for steg 2 Start med globale input. (Fil, database, tabeller,...) Velg global input slik at alle andre klasser har sjanse til å bli dekket. For OK" input klasser: - kombiner Velg data slik at de dekker flest mulig OK" klasser på en gang (tilfeldig valgt, alle inputdata OK). For "feil" input klasser: - ikke kombiner Velg data slik at de til enhver tid bare dekker en "feil" klasse, og alt annet er "OK" (tilfeldige OK" klasser så langt som mulig) 2005-2008, Hans Schaefer Slide 47
Sjekkliste for test av feilhåndtering Har vi: Feildeteksjon Recovery Ryddig utgang (dersom recovery ikke mulig) Feilhåndtering lett å teste???? Mulige feil: 1. Feilmeldingen gir ikke nok info til bruker. 2. Feilmeldingen gir feil feilårsak. 3. Systemet finner ikke feilen fordi annen feilhåndtering maskerer den. 4. Feilhåndteringen selv er feil. 5. Feilhåndteringen finnes ikke. 2005-2008, Hans Schaefer Slide 48
Grenseverdianalyse Grenseverdier avdekker ofte feil. (<, <=, >, >=, off-by-one) (1) Velg grensene til alle inputs og outputs. (2) Bruk testdata på og rundt øvre og nedre grense. Grenser Klasse A Klasse B Test Tilfelle 2005-2008, Hans Schaefer Slide 49
Detaljer for grenseverdianalyse Minimum for hardware Like under tillatt minimum tillatt minimum like over tillatt minimum like under tillatt maksimum maksimum like over tillatt maksimum Ved åpne grenser Bare to verdier pr. grense! PÅ, UTENFOR Maksimum for hardware Første, siste, andre, nestsiste element i en liste, buffer eller fil. Mye input, ingen input (tomme filer) Grenseverdier ved flere dimensjoner. 2005-2008, Hans Schaefer Slide 50
Spesialverditest Lag testdata for verdier der de brukte funksjoner virker spesielt. Null og en for aritmetiske funksjoner Maksimale og minimale verdier tillatt i hardwaren Tom streng, spesielle karakterer (&, $, #, /,., ", ~, ', \, Æ, Ø, Å... ) for tekstfunksjoner Tomt dataområde for bufferhåndtering magiske verdier (misbrukte verdier) Defaultverdier Funksjoner med bare ett argument: Test dem med verdier der output er forskjellig fra input og der output er forskjellig fra output av andre liknende funksjoner som kunne (feilaktig) ha vært brukt her. Forsøk å legge inn kode... ( Cross site scripting ) 2005-2008, Hans Schaefer Slide 51
Example from James Whittaker using a default value For example, in Word 2000 the following dialog has an options menu that, when left unchanged, actually makes controls disappear when the dialog is redisplayed. Note the missing heading level controls. Moreover, it changes the display from 3 headings to 9 heading without the user entering any values! Try this: 1) Invoke MS Word 2000, Rev 9.0.2720 or WORD 98 or later on Macintosh 2) ->File->New->Blank Document 3) ->Insert->Index and Tables 4) -> Table of Contents tab. 5) -> Options 6) -> OK (Changing nothing) 7) Note that everything is normal. There are 3 levels selected and three levels displayed. 8) Repeat steps 5 and 6. 9) Now note that there are 9 levels selected! You see them in the preview display field. 10) Repeat steps 5 and 6. 11) Now note that the levels control has disappeared! (On Mac with WORD 98 this does NOT happen, it remains with 9 levels) The default settings change without warning, forcing the user to reset the values. This odd behavior nicely demonstrates the second attack: force software to display the value of internal data and then change some (but not all) or none of the values. This requires defaults to be set; if no defaults have been coded, then the software may very well fail. 2005-2008, Hans Schaefer Slide 52
Random test Verdier blir plukket tilfeldig. Helst ved bruk av random-generator. Problem: Testorakel. Finner feil som ikke de andre metodene finner. Spesielle kombinasjoner. Feil for bare noen få verdier. Det en ikke hadde tenkt på. 2005-2008, Hans Schaefer Slide 53
Feilgjetting Usystematisk metode som brukes etter de systematiske. Lag testdata som vil vise antatte typer feil, basert på skepsis. Misbruk, misforståelser. Vi må vite hvilke feil er vanlige. Derfor: Skriv opp feil som finnes av brukerne! Vi trenger "destruktiv" tenkning. 2005-2008, Hans Schaefer Slide 54
Detaljer for feilgjetting Spesielle ideer: Generelle ideer: Tomme inputlister Gå rett ut av modulen igjen etter start Database full eller ikke tilgjengelig Input mangler For mye input (repetert for mange ganger) Feil korrelasjon mellom inputs Forbudte situasjoner Umulige situasjoner Reset av timer Norske bokstaver Tall med ledende pluss, null, eller blanke eller punkter imellom Uklarheter Motsigelser Misforståelser Hva hvis... Ønskelige forhold Ikke gjennomtenkt 2005-2008, Hans Schaefer Slide 55
Test av forretningslogikk Hver betingelse enkeltvis Ja og Nei Alle kombinasjoner Parvis kombinasjoner Bruk av beslutningstabell Mer om det hvis vi har tid. 2005-2008, Hans Schaefer Slide 56
Litteratur Glenford Myers, The Art of Software Testing, 1979 på dansk i Borgen forlag, København, 1984: "Kunsten at teste edb-programmer". Boris Beizer, Software Testing Techniques, Van Nostrand Reinhold, 1990. En meget detaljert bok om testdatavalgmetoder. For spesialister i testing. Boris Beizer, Black Box Testing, 1995 Introduksjon, noe formell James Whittaker, How to Break Software, Addison-Wesley, 2002. Meget praktisk. Linz, Schaefer, Spillner, Software Testing Foundations, 2nd ed. Rocky Nook 2007 Omhandler pensum i internasjonal tester sertifiserings-eksamen (ISTQB) Paul C. Jørgensen, Software Testing - A Craftman s Approach, 3rd ed., CRC Press 2008 2005-2008, Hans Schaefer Slide 57