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

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

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

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

4-6 Trianglar Namn:..

Individuellt Mjukvaruutvecklingsprojekt

Uppdragsbeskrivning. Sportfiskewebben. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Tentamen i Programmering grundkurs och Programmering C

ELEV- HANDLEDNING (Ansökan via webben)

Uppdragsbeskrivning. Digital Skyltning. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Syftet med en personlig handlingsplan

Programmera en NXT Robot

Några grundläggande begrepp

Lathund, procent med bråk, åk 8

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

Distribuerade Informationssystem VT-04

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Brister i kunskap vid gymnasieval

Pesach Laksman är lärarutbildare i matematik och matematikdidaktik vid Malmö högskola.

Riktlinjer - Rekryteringsprocesser inom Föreningen Ekonomerna skall vara genomtänkta och välplanerade i syfte att säkerhetsställa professionalism.

3.1 Linjens ekvation med riktningskoefficient. y = kx + l.

Energi & Miljötema Inrikting So - Kravmärkt

Snabbslumpade uppgifter från flera moment.

Statsbidrag för läxhjälp till huvudmän 2016

Axiell Arena. Samarbeta om bilder Regionbiblioteket i Kalmar län

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Repetition av cosinus och sinus

Övningar Dag 2 En första klass

ATT KUNNA TILL. MA1050 Matte Grund Vuxenutbildningen Dennis Jonsson

Föreläsning 5: Rekursion

Syftet är att öka medvetenheten dels om vilka språkliga handlingar som krävs i ämnet, dels om vilka som utförs.

UTMANINGAR OCH MÖJLIGHETER HAR DU 730 DAGAR OCH ETT STARKT DRIV DÅ HAR VI EN LEDARROLL TILL DIG

QFD. Quality Function Deployment Boris Mrden Tobias Lindström Arefeh Mirzaie Shra Morin Habib David Bizzozero

Avsändare och mottagare

En förskola med barnen i centrum

Arbeta bäst där du är Dialect Unified Mi

ANVÄND NAVIGATIONEN I CAPITEX SÄLJSTÖD

TIMREDOVISNINGSSYSTEM

Laborativ matematik som bedömningsform. Per Berggren och Maria Lindroth

TP #3. checklista - rättigheter och skyldigheter vid hyra. checklista: RÄTTIGHETER OCH SKYLDIGHETER VID HYRA HYRESAVTAL

SF1625 Envariabelanalys

Manual för BPSD registret. Version 6 /

12 principer of agile practice (rörlig)

FRÅN A TILL Ö LäraMera Ab / och Allemansdata Ab / FRÅN A TILL Ö

Idag. Hur vet vi att vår databas är tillräckligt bra?

Single sourcing Bra eller dåligt?

Handbok Blinken. Danny Allen Översättare: Stefan Asserhäll

ÄT RÄTT NÄR DU TRÄNAR

Omvandla Vinklar. 1 Mattematiskt Tankesätt

Repetitivt arbete ska minska

Modul 6: Integraler och tillämpningar

Ha det kul med att förmedla och utveckla ett knepigt område!

VÄRDERINGSÖVNINGAR. Vad är Svenskt?

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Kängurutävlingen Matematikens hopp 2009 Cadet för gymnasiet för elever på kurs A

ANSÖKNINGS- BLANKETT. för medel från Centerkvinnornas fond VÄRLDEN ANGÅR OSS

När du som vårdpersonal vill ta del av information som finns hos en annan vårdgivare krävs det att:

Projekt benböj på olika belastningar med olika lång vila

3. Värmeutvidgning (s )

Särskilt stöd i grundskolan

FINANSIERING FÖR PRIVATPERSONER

Utbildningsplan för arrangörer

Om erbjudandet för din pensionsförsäkring med traditionell förvaltning.

Office 365 Kompetens 2013 / MB

Riktlinjer för medborgardialog

Ett arbete som inte blev riktigt som Ann tänkt sig!

Tränarguide del 1. Mattelek.

Bedömning för lärande. Workshop för nyckelpersoner i Sundsvalls kommun

Föräldrabroschyr. Björkhagens skola - en skola med kunskap och hjärta. Vad ska barnen lära sig i skolan?

Hur skapar man formula r

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

Övningstenta (Kursplan 2011) Ver 2015,

ÖSS jolles Seglarsaga

Vi skall skriva uppsats

912 Läsförståelse och matematik behöver man lära sig läsa matematik?

Föreläsning 2: Avlusning och antilustekniker

Erfarenheter från ett pilotprojekt med barn i åldrarna 1 5 år och deras lärare

Sid i boken Rekrytering. Författare Annica Galfvensjö, Jure Förlag

Gissa det hemliga talet

Fack. Phaser 4400 laserskrivare. Detta avsnitt handlar om:

LPP laboration. Förmågor: Centralt innehåll: Kunskapskrav:

Facit åk 6 Prima Formula

David Wessman, Lund, 30 oktober 2014 Statistisk Termodynamik - Kapitel 5. Sammanfattning av Gunnar Ohléns bok Statistisk Termodynamik.

Skizz till en enkel databas

TPFD - TestPlan Före Design BESKRIVNING AV AKTIVITETER

Mätningar på op-förstärkare. Del 3, växelspänningsförstärkning med balanserad ingång.

Guide för att hitta markavvattningssamfälligheter och täckdikningsplaner

Tillämpad UNIX. Laborations-PM Christian von Schultz, Programpaket och processhantering

Säkerhet. De onda. Vilka är farorna?

Manual Ledningskollen i mobilen

Introduktion till arv

Vid ett flertal tillfällen ställde individer frågor till Edgar Cayce om

Projektet har liksom Wången många år på nacken. Redan på 1950-talet bedrevs här forskning på brukshästarnas hovar.

Programexempel: tärningsspel

När jag har arbetat klart med det här området ska jag:

Sannolikhet och Odds

Gruppenkät. Lycka till! Kommun: Stadsdel: (Gäller endast Göteborg)

Programmera LEGO NXT

ANVÄNDARHANDLEDNING FÖR

Snapphanalegen. Firekángabogena. Spelregler. (4 spelare)

Hur utvecklar man användbara system? Utvärdering. Användbarhet handlar om kvalitet. Utvärdering. Empiriska mätningar. Metoder

Transkript:

TDDI02 Programmeringsprojekt. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Verifikation, Validering och Testning XP Extreme Programming

Vad är ett fel? I engelskan kan man skilja på 3 olika typer.. Error Ett misstag begånget av en person under utvecklingen, som kan resultera i.. Fault Ett fel i programvaran, som när det exekveras kan orsaka.. Failure Något oönskat händer under exekvering! Obs: Errors/faults måste inte automatiskt leda till failures, inte nödvändigtvis en 1-1 mappning mellan de tre åt något håll. 2

Validering/Verifikation..är nästan testning, det med, fast på dokument! Kravanalys: Kompletthet Allt är med, inget underförstått Konsistens Inga motsägelser Genomförbarhet Inte bara rent funktionellt, men även ur ett affärsmässigt perspektiv Testbarhet Kommer det gå att testa kraven, avgöra om de är uppfyllda eller ej? o Skapa testdata för funktionella tester? 3

Validering/Verifikation (cont.) Design: Finns konsistens mellan kravspecifikation och design, beskriver de samma sak? Håller designen rätt kvalitet? (Företagsstandarder, etc..) o Skapa testdata för funktionella tester? Implementation: Finns konsistens mellan implementationen och designen, beskriver de samma sak? Testa implementationen, uppfyller den de tidigare satta kraven? 4

Validering/Verifikation (cont.) Testfasen: Testa moduler (unit tests) Integrationstesta modulerna som samarbetar Systemtest oalphatest? Betatest? Acceptanstest Underhåll: Alla steg i mindre skala, om och om igen 5

Statisk testning Läs/granska Låt andra göra, själv har man inte rätt destruktiva inställning Review som ovan fast mer anonymt och institutionaliserat Walkthrough/Inspection Gå igenom med några inspektörer, resulterar i ett åtgärdsprotokoll Inspection den mer formella av de två, resultaten rapporteras vidare Formella bevis Översätt kod till logiknotation Bevisa från startvillkor att slutvillkoren kommer ske Statisk program-analys 6

Walkthrough/Inspection lista Felaktig användning av data Oinitierade variabler, arrayindex utanför gränser, dangling pointers Deklarationsfel Användning av icke-deklarerade storheter, dubbel deklaration i ett block Beräkningsfel Division-by-zero, overflow, typmismatchningar, operatorprioriteter Logikfel < istället för <=, and-or, operator-prioriteter Fel i styrning Oändliga loopar, varvräknarfel Interfacefel Antalet, typerna på parametrar, globala data 7

Dynamisk testning Funktionell Black box testing Titta ej på koden! Testar bara funktionalitet utifrån specifikationen Strukturell White box testing Titta på koden! Testa de svåra delarna Logik i villkorssatser, if, for, while, etc.. Extremvärden Egentligen vill man täcka all kod, få hög coverage Hitta lämplig testdata Identifiera och testa gränsövergångar! Unit testing 8

Coverage testing Hur många sätt går det att ta sig från början till slut? 4 x ((N + (1 + N)) + 2)??? 9

Unit testing A unit test is an automated piece of code that invokes a unit of work in the system and then checks a single assumption about the behavior of that unit of work. Ett Unit-test är: Automatiserbart Isolerat Konsistent Läsbart Lättunderhållet Pålitligt // can it add the numbers 1 and 1? public void testsumoneandone() { Adder adder = new AdderImpl(); assert(adder.add(1, 1) == 2); } C++ unit test ramverk: Google Test, QtTest, unit++, etc.. 10

Regressionstestning Ändringar kan introducera nya buggar..eller återintroducera gamla buggar Använd tidigare skrivna tester, se om de fortfarande passerar Unit tests? 11

13

Testning exempel Specifikation : Ett program läser in tre heltalsvärden från en rad. De tre värdena tolkas som längderna på de tre sidorna i en triangel. Programmet skriver ut ett meddelande som anger om triangeln är likbent, liksidig eller om alla tre sidor är olika. Uppgift: Skriv ett antal testfall (dvs kategorier plus några specifika testdata per kategori) som du anser testar programmet på ett bra sätt. 14

Testning exempel (cont.) #include <iostream> using namespace std; int main() { int x, y, z; cin >> x >> y >> z; cout << x << << y << << z << \n ; if (x == y && y == z) { cout << Triangeln är liksidig.\n ; } else if (x == y x == z y == z) { cout << Triangeln är likbent.\n ; } else { cout << Alla sidor i triangeln är olika.\n ; } return 0; } 15

Testning exempel (cont.) Unix > make testprogram Unix> testprogram 1 1 100 Triangeln är likbent. Unix> testprogram 0 0 0 Triangeln är liksidig. Unix> testprogram -1-1 -1 Triangeln är liksidig. Unix> testprogram 3.0 3.0 3.0 Alla sidor i triangeln är olika. Unix> testprogram Klas, Kalle och Lotta Triangeln är liksidig. 16

Testning exempel (cont.) Självevaluering av testfall: 1. Har du testfall som representerar en giltig oliksidig triangel? Obs, fall som 1 2 3 eller 2 5 10 gör inte det, de är inte giltiga trianglar! 2. Har du testfall som representerar en giltig liksidig triangel? 3. Har du testfall som representerar en giltig likbent triangel? Obs, ett testfall som har 2 2 4 är inte en giltig triangel! 4. Har du åtminstone tre testfall som representerar giltiga likbenta trianglar, så att du provar alla tre permutationer av två lika sidor (t.ex. 3 3 4, 3 4 3 och 4 3 3)? 5. Har du ett testfall där en sida är 0? 6. Har du ett testfall där en sida är negativ? 17

Testning exempel (cont.) 7. Har du ett testfall med tre heltal större än noll där summan av två är lika med ett tredje? Med andra ord, om programmet anser att t.ex. 1 2 3 representerar en oliksidig triangel, så är det en bug (då det ej är en giltig triangel)! 8. Har du åtminstone tre testfall i kategori 7 så att du provar alla permutationer där en sida är lika med summan av de övriga två (t.ex. 1 2 3, 1 3 2, 3 1 2, etc..)? 9. Har du ett testfall med tre heltal större än noll så att summan av två är mindre än det tredje (t.ex. 1 2 4 eller 12 15 30)? 10. Har du testat minst tre permutationer av ovanstående? 11. Har du ett testfall där alla sidor är 0? 12. Har du minst ett testfall med värden som inte är heltal? 18

Testning exempel (cont.) 13. Har du åtminstone ett testfall som specificerar fel antal värden? 14. För varje testfall ovan, specificerade du (i förväg!) det förväntade resultatet? 19

Testning minnespunkter Utarbeta och dokumentera tester, inklusive förväntat utfall, i förväg! Gör alltså inga tester i flykten! Vid buggar, skriv ett test för att påvisa buggen..och sedan bekräfta att den är borttagen! Ett test kan aldrig bevisa frånvaron av fel bara påvisa förekomsten! Ett test som inte påvisar något fel är förmodligen ett undermåligt test..eller? När ska man sluta testa? 20

XP Extreme Programming Vad är extremt med XP? Moment genomförs kontinuerligt Utvecklingscykler är små och korta Lite dokumentation utanför koden skrivs Vad krävs/önskas? Inte för stora projekt Kundrepresentant på plats Planerings- spel, user stories Gärna parprogrammering 21

XP Extreme Progra.. (cont.) Karakteristiskt för XP: Utgår från utvecklares och kunders behov Ingen stor administrativ apparat, inte jättemycket dokumentation Smidig hantering av förändringar Snabba resultat, god kvalitet förväntas Ingen egentlig designspecifikation Kanske inte heller sedvanlig kravspecifikation! Planering: Täta möten mellan kund utvecklare (~2 veckor?) Planerings- spel user stories Små, täta uppdateringar (releases) till kunden Kund deltar i utvecklingsprocessen 22

XP Extreme Progra.. (cont.) Design: Ingen specifikation i förväg Enhetstester och testfall produceras före motsvarande kod, är en form av specifikation för enheten Ofta automatiserat testande Acceptanstest görs för varje story Refactoring Våga bygga om Byt namn på metod/variabel/etc Gör en bit kod till egen metod/motsvarande Flytta på metoder/etc Verktyg finns Görs för ökad läsbarhet och minskad komplexitet 23

XP Extreme Progra.. (cont.) Kodning: Parprogrammering Kollektivt ägande Kontinuerlig integration Fysisk närhet mellan utvecklare Dokumentation: Vissa kundkrav Utöver det kräver XP inte mycket Koden är det viktigaste dokumentet, ska vara av hög kvalitet Story na, diagram, etc.. Acceptanstest kan fungera som kravspecifikation 24