Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · Area 1 Ingen - - -...

18
Utforskande och Riskbaserad Test [email protected] Image courtesy of SweetCrisis at FreeDigitalPhotos.net Claesson.Guru 20 år 22:a Oktober 2015 1(18)

Transcript of Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · Area 1 Ingen - - -...

Page 1: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

Utforskande och

Riskbaserad Test

[email protected]

Image courtesy of SweetCrisis at FreeDigitalPhotos.net

Claesson.Guru

20 år22:a Oktober 2015

1(18)

Page 2: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

Inledning - Teknisk skuld

- Kontinuerliga leveranser

- Kvalitet

Huvudnummer - Risker

- Utforskande test

- Buggtaxonomi

Avslut - Arbetssätt

- Rapportering

2(18)

Page 3: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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)

Page 4: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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)

Page 5: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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)

Page 7: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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)

Page 8: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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)

Page 9: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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)

Page 10: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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

Page 11: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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)

Page 12: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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)

Page 13: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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)

Page 14: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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)

Page 15: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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)

Page 16: Anders@Claesson - SASTsast.se/q-moten/2015/q20/5_SAST...Riskbaserad_Test.pdf · 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

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