Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Utforskande och
Riskbaserad Test
Image courtesy of SweetCrisis at FreeDigitalPhotos.net
Claesson.Guru
20 år22:a Oktober 2015
1(18)
Inledning - Teknisk skuld
- Kontinuerliga leveranser
- Kvalitet
Huvudnummer - Risker
- Utforskande test
- Buggtaxonomi
Avslut - Arbetssätt
- Rapportering
2(18)
Teknisk skuld
Kostnad att åtgärda strukturella kvalitetsproblem
Kan orsaka allvarliga störningar i utvecklingsarbetet
PositivtVärde
NegativtVärde
Synligt
Feature
Bugg
Arkitektur
Tekniskskuld
Osynligt
Återstående arbete som måste göras innan det kan anses vara klart.
Testramverk och miljö
Underhåll av testskript
Test-infrastruktur
- Technical Debt - From metaphor to theory and practice - Philippe Kruchten
3(18)
Att sänka den tekniska skulden
1. Använd väl etablerade konstruktionsregler
2. Gör statisk analys på all kod
3. Ha regelbundna kodgranskningar
4. Gör inkrementell omarbetning (refactoring) av koden
5. 100 % beslutstäckning i modul-testerna
6. Analysera grundorsaker till alla allvarliga fel som hittas
- List of tools for static code analysis – Wikipedia- Static Analysis in Continuous Delivery for Java- Success Factors for Continuous Integration and Static Analysis 4(18)
Test i kontinuerliga leveranser
Commit
Enhets-test
Integrations-test
Acceptans-test
Manuell test
Leverera
Test av olika användar-scenarios,prestanda, mm.
Checka in aktuella förändringar
Rulla tillbaka om det behövs
Statisk analys av källkoden. Koden exekveras och täcks av olika tester (sats-, besluts-täckning)
Funktionella-, samt end-to-end tester, vissa egenskaper täcks även in
Utforskande och risk-baserade tester
Beslut att
Lokalt Koda Testa Omarbeta
- http://continuousdelivery.com/ 5(18)
Kvalitet
1. Inte OK
2. OK
3.
WOW
6(18)
Riskfaktorer
Område
3. Säkerhet
2. Tillgänglighet
1. Tillförlitlighet
5. Kompatibilitet
6. Prestanda
4. Användbarhet
7. Robusthet
Summa 100 %
Viktning %
20
15
30
10
5
15
5
Kundnöjdhet1 - 10
8
3
4
5
5
7
Medel = 5,3
5
PrioritetVikt/Nöjdhet
2,5
5
7,5
2
1
2,1
1
Leverantörenskostnader
Kundens kostnader
Risk/kostnad vid fel
Hög Kritisk
Hög Kritisk
Medel Hög
Hög Kritisk
Hög Hög
Medel Medel
Medel Medel
7(18)
Hur stort är risk-gapet?
Test gör kvaliteten synlig
Källa: Rapid Software Testing – Bach/Bolton + Appendices
Vad vi vet idag
Vad vi skulle behöva veta
- Syftet med test är att stänga risk-gapet
- Ju större gapet är desto svårare är det att testa
Vår kunskap om aktuell status för produkten
8(18)
Utforskande test
Bestäm nästa steg
Backa när det inte finns mer att hämta
Initial testidé
- Exploratory Testing Explained – Bach
Testa
Lärande
Observera
IfrågasättUtvärdera
1. Observera - Vad ser du?- Identifiera intressanta delar att testa (gräva djupare i)- Var uppmärksam på detaljer
2. Ifrågasätt - Vad händer om….?- På vilket sätt kan systemet fallera?
3. Utvärdera - Testa olika idéer och se vad som händer- Vad kan du lära av de resultat du får?
9(18)
Kvalitativ utvärdering
Ser vi några problem eller ej?
Skriptad jämfört med utforskande test
Testfall
Passera
Fallera
Testidé
1 2 3 4 5
10(18)
Testa
Lärande
Observera
IfrågasättUtvärdera
Testfall
Checka ut
Skriv felrapport❶
Försök igen - Nytt felmeddelande?
❷
Och igen från start - Systemet indikerar ett pekarfel (Java NPE)
- Ett säkerhetsproblem att visa en Java Stack Trace- Ett användbarhetsproblem att visa en massa
irrelevant information för användaren- Ger dåligt intryck att visa när systemet kraschar
❸
Logga in, testa med tom kundvagn
- Verkar fungera att titta på tom kundvagn❹
Lägg en vara i vagnen,checka ut
- Samma fel igen när vi är inloggade och försöker att checka ut
- Ingen stack trace denna gång
❺
Testlogg
Ja - Det finns flera allvarliga problem här!
Fallerar
11(18)
Lägg in alla hittade fel i en bugg-taxonomi
Beräkningsfel
Säkerhets-problem
Nätverksfel
Problem medanvändbarheten
Ta bort/lägga till ett objekt från kundvagnen uppdaterar ej den totala summan
Rabbater beräknas ej korrekt
Fraktkostnad eller skatter felaktigt beräknade
Skalbarhets-problem
Fel hos ISP/Web Host Serverfel
Att lägga till ett objekt, och sedan checka ut, ger ett felmeddelande när man försöker titta på innehållet i varukorgen (Null Pointer Exception)
- Bugs in your shopping cart: A Taxonomy 12(18)
Att använda en bugg-taxonomi
Programmerare upprepar ofta samma misstag
Testningen baseras på sannolikheten för kända typer av buggar
1. Skapa en initial buggtaxonomi som bygger på tidigare projekt samt alla aktuella kundproblem från system i produktion
2. Identifiera grupper/områden för olika feltillstånd
3. Lägg kontinuerligt in alla nya buggar som hittas
4. Använd taxonomin för att hitta nya testidéer och att identifiera riskområden
- Bug Taxonomies: Use Them to Generate Better Tests 13(18)
Test-
område
Aktuell
testinsats
V
1
V
2
V
3
V
4
V
5
Kva
litetKommentarer
Area 1 Ingen - - - 0 0 Ej klar för test
Area 2 Hög 1 1+ 2 2+ 3 Enligt plan, inga fel
Area 3 Blockerad - - 1 1 1+ Kraschar, FR 123456
Area 4 Paus 1 1 1+ 1+ 1+ FR 54321 under utredning
Utförda tester
Veckoplan
Test-idéer
Planerings-möte
Planering
Testområde
Strategi
Testmiljö
Dagliga test-sessioner
Test-session
Test-logg
Debrief
Test-session
Test-logg
Debrief
Rapportering
Buggar Ärenden
Sessions-rapporter
Risker
TäckningBugg-
taxonomi
Boost your Testing Power with Exploratory Testing (Huib Schoots)
Att göra Pågående Klart
14(18)
Kval
itet
FR1212 under utredning.
Kraschar, FR12345
Enligt plan, inga fel.
Feature ännu ej levererad
från design och
integration.
RFT ej uppfyllt.
Test går ej att påbörja.
Konfigurationsproblem.
Kommentarer
Aktuell test-täckning
3
2
1+
2+
0
V 6
Uppföljning av utförda tester
FR = Felrapport
RFT = Redo För TestTest-täckning föregående veckor
V 5V 4V 3V 2
1+1+1+11
1+11
221+11
00
32+2+21
V 1
Aktuell test-täckning
3
2
1+
2+
0
V 6Kval
itet
FR1212 under utredning.
Kraschar, FR12345
Enligt plan, inga fel.
Feature ännu ej levererad
från design och
integration.
RFT ej uppfyllt.
Test går ej att påbörja.
Konfigurationsproblem.
Kommentarer
Test-täckning föregående veckor
V 5V 4V 3V 2
1+1+1+11
1+11
221+11
00
32+2+21
V 1
Hög
Paus
Blockerad
Hög
Ingen
Aktuell
test-
insats
Medel
Hög
Hög
Medel
Låg
Planerad
test-insats
Medel
Hög
Hög
Medel
Låg
Initial
risk-
nivå
Area 4
Area 3
Area 2
Area 1
Area 5
Test-
område
- A Low-Tech Testing Dashboard – Bach 15(18)
Testrapportering
1. Uttalande om systemets aktuella status (enligt vår bedömning)
2. En förklaring till vad vi menar med ovanstående uttalande
3. En beskrivning av vilka teststrategier som vi använt
4. Vilken täckningsgrad vi lyckades uppnå med våra tester
5. Riskbedömning baserad på antal, typ, område och allvarlighetsgrad på de fel som vi hittade
Vår trovärdighet är avgörande för en bra rapportering.
16(18)
Kvalitet
Summering
17(18)
Kvalitet
Referenser1. Test strategies in agile projects
2. Practical agile test strategy using heuristics
3. Boost your testing power with Exploratory Testing
4. A Tester’s Commitments
5. Exploratory Testing Explained
6. What is Exploratory Testing?
7. The Little Black Book on Test Design
[email protected]://claesson.guru
18(18)