Property-based Testing. Hans Svensson SAST Väst Q4 2013-11-26 http://quviq.com/

Relevanta dokument
SAST Q1. Som att börja arbeta på ett nytt jobb. Testautomatisera med Modell-baserad testning

Teststrategier och Testcertifiering. Per Strandberg, Maj 2013

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

Uppgift v1: Teststrategi i sammanhang Terese Berger. Teststrategi. Projekt CiviCRM. Version 0.9. Sida 1(7)

TDDI02. Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

ALM Live: Testfokus bättre mjukvarukvalitét med Visual Studio 2008 Team System

Länkade listor och automatisk testning

IBM Software Group. Agil Acceptans Test. Annika Kortell SAST 15-års jubileum IBM Corporation

Visuell GUI Testning

Testbara krav. SAST Syd Ställ gärna frågor under presentationen eller efteråt Åhörarkopior distribueras efteråt

Version Testteam 4 Testledare: Patrik Bäck

TDDI02. På denna föreläsning: Programmeringsprojekt, Föreläsning 3. Verifikation, validering och testning

Konstruktion av datorspråk

TDDC74 Programmering: Abstraktion och modellering Dugga 1, kl 14-16

Testplan Cykelgarage

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.

Objektorienterad Programmering DAT043. Föreläsning 10 13/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Mer om språk och Ruby

men borde vi inte också testa kraven? Robert Bornelind

Mer om språk och Ruby

Testning av program. Verklig modell för programutveckling

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Enhetstester på.netplattformen

Datavetenskapligt program, 180 högskolepoäng

LINDAU, R., WOXENIUS, J., EDLUND, P.

Programmering II (ID1019)

Utforskande testning

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

men borde vi inte också testa kraven?

Underhållsplanering för flerkomponentsystem kostnadseffektivisering med hjälp av en optimeringsmodell för opportunistiskt underhåll

Projektkaos. Chaos-rapporten. 34% av projekten avslutades i tid och enligt budget % misslyckades!

TDDC74 Programmering, abstraktion och modellering DUGGA 2

RUP Rational Unified Process. 17 november 2004

VERVA. Fujitsu Services Kenneth Landérus F

Regressionstestning teori och praktik

Metoder och verktyg för funktionssäkerhet

Mål med lektionen! Repetera och befästa kunskaperna.

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

TDP002 - Imperativ programmering

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Sänk kostnaderna genom a/ ställa rä/ krav och testa effektivt

Några principer för effektiv enhetstestning

TDDC74 - Projektspecifikation

TDDI02. På denna föreläsning: Programmeringsprojekt, Föreläsning 3. Filip Strömbäck. Verifikation, validering och testning

Implementering av Model- Based Testing i LoadRunner

Säkerhet ur ett testperspektiv

Handledning. Att skicka elektronisk fristående Svefaktura 1.0 till Landstinget i Östergötland

Designmönster - EMW. Kent Petersson epost1: kentp@cs.chalmers.se epost2: kent.petersson@emw.ericsson.se URL:

Business Model You Din personliga affärsplan framtagen på åtta timmar.

Kursinformation. Metodik för programvaruutveckling. Utvecklingsprocessen för programvara. Innehåll. Processmodell. Exempel

Test av livsuppehållande system på Maquet Critical Care

Industriellspillvärme

Slutrapport YUNSIT.se Portfolio/blogg

Testning. 1DV404, HT14 Jesper Andersson Kap 21 + Testing Primer

Tillgänglighet som en naturlig del i våra projekt. Sid 1 Mars 2016 Tillgänglighet

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Rymdteknik och utbildningar. Marta-Lena Antti Luleå tekniska universitet Uppsala 21 okt 2014

TUTORIAL: SAMLING & KONSOLL

TDDC74 Programmering: Abstraktion och modellering Dugga 2, , kl 17-19

Slutrapport - Intranät

Institutionen för datavetenskap HT /2008. Testning med JUnit

Filsäkerhet i Windows NT (NTFS)

FMV användning av ISO/IEC för ledningssystem implementering. Harold Bud Lawson Styrelsemedlem och Consulting Partner

Några grundläggande begrepp

Grupp C5. Här beskrivs de olika koncept som tagits fram och vilka metoder som använts vid framtagningen.

Tillämpad Programmering (ID1218) :00-13:00

Q1 Ditt kön: Studentrapporten VT / 25. Answered: 1,983 Skipped: 1. Kvinna. Man 0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100% 72.92% 1,446.

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

RUP - Rational Unified Process

Expert Team Chemicals & Energy Uppdatering och rapport från workshop 23 januari 2015

Föreläsning 10. ADT:er och datastrukturer

Den mobila användaren sätter traditionella säkerhetssystem ur spel

Testdriven utveckling av Web Services. Ole Matzura

STUDENTRAPPORTEN EN UNDERSÖKNING AV SVENSKARS INSTÄLLNING TILL VAL AV UTBILDNING VÅRTERMINEN 2016

Tommy Färnqvist, IDA, Linköpings universitet

Datalogi, grundkurs 1

Öppen innovation med Airport Living Lab. Håkan Ozan, CSC - Niklas Z Kviselius, HHS

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015

Felsökning. Översikt. Felsökning (debugging) Kodstandard. Kommentarer. Kommentarer. Praktiska råd

Datastrukturer. föreläsning 6. Maps 1

Förstå grunderna i LINQ. Mål med lektionen!

Diskreta Linjära System och Skiftregister

Förfrågan - nya program för att stärka läkemedels-, bioteknikoch medicinteknikbranschen

Testplanering, test-first, testverktyg

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Funktioner. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 8. Peter Dalenius Institutionen för datavetenskap

FÖRELÄSNINGAR OCH KURSER STOCKHOLM HÖSTEN Föreläsningar som förändrar.

Handledning för Fristående Svefaktura

TDDC74 Programmering, abstraktion och modellering DUGGA 1

Inlämningsuppgift : Finn. 2D1418 Språkteknologi. Christoffer Sabel E-post: csabel@kth.se 1

Linköpings universitet 1 TDP029. Systemutveckling. Systemutveckling. Vanliga faser. Fler faser. Systemutvecklingsmetod

Inlämningsuppgift, EDAF30, 2016

Programmering II (ID1019) :00-12:00

Försättsblad till skriftlig tentamen vid Linköpings Universitet

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Operativsystem ID2200 Tentamen TEN1 3.8 hp :00-18:00

Utbildningsplan för Datavetenskapligt program, 180 högskolepoäng

Vi gjorde allting rätt

Transkript:

Property-based Testing Hans Svensson SAST Väst Q4 2013-11-26 http://quviq.com/

Om mig Teknisk Fysik PhD Datavetenskap Verification of Erlang programs using: Testing, Model checking, and Theorem proving PostDoc Property-based testing (PROTEST) QuviQ Forskning Utveckling av QuviQ QuickCheck Modellering Utbildning

Exempel att vända på en lista Vi vill testa funktionen reverse: Funktionen tar ett argument, en lista Funktionen returnerar den omvända listan Ex: reverse([7, 3, 5, 8]) -> [8, 5, 3, 7]

Exempel att vända på en lista Det vanligaste sättet några enhetstester: empty_test() ->?ASSERT([], reverse([])). single_test() ->?ASSERT([1], reverse([1]). list1_test() ->?ASSERT([1, 4, 9], reverse([9, 4, 1]). list1_test() ->...?ASSERT([7, 3, 5, 8], reverse([8, 5, 3, 7]).

Exempel att vända på en lista Istället för testfall tänk på egenskaper Den returnerade listan skall ha lika många element Varje element i den ursprungliga listan måste finnas i den resulterande listan Om man reverserar en lista två gånger är resultatet identiskt med den ursprungliga listan

Property-based testing Property Orakel

Exempel att vända på en lista empty_test() ->?ASSERT([], reverse([])). single_test() ->?ASSERT([1], reverse([1]). list1_test() ->?ASSERT([1, 4, 9], reverse([9, 4, 1]). list1_test() ->...?ASSERT([7, 3, 5, 8], reverse([8, 5, 3, 7]).

Exempel att vända på en lista tests() -> [[], [1], [9, 4, 1], [8, 5, 3, 7]]. foreach( fun(t) ->?ASSERT(T, reverse(reverse(t))) end, tests()). Skulle det inte vara bättre att testa fler listor (längre?) För varje lista, kontrollera att listan är identisk med resultatet av reverse(reverse(lista)).

Exempel att vända på en lista tests(0) -> []; tests(n) -> [ random_list() tests(n 1)]. random_list() -> random_list(random(1,?max_len)). random_list(0) -> []; random_list(n) -> A bit ad hoc!? [random(-?maxn,?maxn) random_list(n-1)]. foreach(fun(t) ->?ASSERT(T, reverse(reverse(t))) end, tests(10)). Nu är det enkelt att testa fler listor...

Exempel att vända på en lista Kan vi uttrycka samma sak på ett mer strukturerat och enklare sätt? prop_reverse() ->?FORALL(List, list(int()), List == reverse(reverse(list)).

PBT 2.0 Strukturerad styrning av slumpen Property Orakel

PBT 2.0 Property Minimalt testfall Orakel Shrinking

PBT - Fördelar En modell många testfall Lättare (billigare!) att underhålla mindre kod En modell flera olika typer av testfall Shrinking ger enklare analys

PBT - Nackdelar Inte nödvändigtvis en nackdel!? Svårare att skriva/utveckla Explicita testfall enklare att förstå (och förklara för management!) Vad har vi testat? Enklare att svara på i traditionell testning, men förmodligen har vi testat mindre!

PBT i verkligheten Skalar det? Ja. Var har vi använt PBT: Telekomindustrin Automotivetillämpningar AUTOSAR Distribuerade Key-Value system Finansapplikationer Websystem

Överlappande koncept Vad skiljer PBT från MBT (Model-based testing) Det beror på vem du frågar! Traditionell MBT strävar efter att hitta en minimal testsvit som uppfyller vissa kriterier

Mentalitet Vi har sett väldigt skiftande mentalitet när det gäller upptäckta buggar! Du hittade en bugg, bra! Nej, hittade du en bugg!? Vi har sett mycket liten korrelation till bransch/domän, kostnad för fel, teamstorlek, etc.

Forskning i industrin QuviQ är ett avknoppningsföretag från Chalmers För närvarande gör jag ungefär 50% forskning Korsbefruktning utveckling och forskning Snabbare återkoppling i industrin Quviqs forskningsarbete Partner i tre större forskningsprojekt Handledning av examensarbeten Programkommitteer, workshops, etc

Forskningsprojekt Prowess Property-based testing for web services Acsäpt Acceptanstest av säkerhetskritisk plattformsprogramvara nsafecer processer och metoder för att återanvända säkerhetsargumentation

Prowess EU - FP 7 projekt 9 partners - Sverige, UK, Spanien PBT applicerat på Web services Kompositionella modeller Icke-funktionella krav Kvalitet och kvalitetsmått för PBT Pilotstudier i industrin http://prowess-project.eu/

Acsäpt Del av Vinnovas FFI-program Svenskt projekt SP, QuviQ, Volvo och Mecel. Acceptanstestkriterer för plattformsprogramvara Fokus på AUTOSAR ISO 26262 i fordonsindustrin Svar på frågan: Vad har vi testat?

Fler exempel AUTOSAR CAN kommunikationsbuss i bilen 4 x ~150 sidor specifikation (+ ISO standarder) ~4000 rader kod i modellen Prioriterad kommunikation (lågt Id hög prioritet) Den testade implementationen prioriterade tvärtom! Deras enhetstester prioriterade tvärtom!!

Fler exempel Telekom Vi testade en samtalshanterande komponent en som genererades var sekvenser av add, remove, och terminate Max två samtalande parter i ett samtal Ett testfall som innehöll 160 kommandon gav ett fel Efter shrinkning: 7 kommandon Add Add Remove Add Remove Add Remove - <Krasch> Vem skulle skriva detta testfall manuellt?