Min frånvaro. Agenda. Föreläsning 4: Design och praktisk testning

Relevanta dokument
ETSA01 Ingenjörsprocessen 1 - Metodik VT15 Markus Borg

Vad händer med L3: ΔL3-L4 för Krav följs upp av annan projektgrupp. Föreläsning 5: V&V II + Design II Efterläsning Kodning

Verifiering & Validering. Integrationstest. Enhetstest. Verifiering och & validering rep. -

Diskutera medan vi väntar. Agenda. Föreläsning 4: Design och praktisk testning. Arkitektur & Design

Verifiering & validering -

Föreläsning 4: Test II, Design I Programvaruutveckling - Metodik 2017 Markus Borg

Programvaruutveckling - Metodik 2016 Jonas Wisbrant

Föreläsning 4: Konfigurationer, Plattformar & Design I Programvaruutveckling - Metodik 2016 Jonas Wisbrant

Föreläsning 3 Verifiering och Validering

Föreläsning 3 Verifiering och Validering

Är instruktionerna oklara, projektet rörigt och allmänt frustrerande?

Några grundläggande begrepp

Metoder och verktyg för funktionssäkerhet

Exercise 1b: Requirements evaluation

Exercise 1b: Requirements evaluation

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

Agenda. Kursinformation. Manual för systemstart. Föreläsning 6: Summering och om tentamen. Målgrupp:

Föreläsning 3: Test, Konfigurationer. Övning 2 Riskhantering, intressenter och kravgranskning.

INGENJÖRSPROCESSEN METODIK ETSA01 VT13 JONAS WISBRANT. Övning 2 Riskhantering, intressenter och kravgranskning.

Föreläsning 4 Arkitektur, design, kodning

Agenda. Föreläsning 6: Utvärdering och om tentamen. Kursinformation

Exercise 1b: Requirements Evaluation ETSA01 INGENJÖRSPROCESSEN 1 - METODIK VT15

Objektorientering. Grunderna i OO

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

Detta har hänt... Kursinformation. Utse kursombud - nytt försök. Föreläsning 3: Test, Konfigurationer. Pratat och skapat krav och plan

Var är vi? Föreläsning 4 Arkitektur, design, kodning. Agenda. Kursinformation. Produktlinjer. Konfigurationshantering - forts. Detta har hänt...

Agenda. Kursinformation. Manual för systemstart... Föreläsning 6: Utvärdering och om tentamen

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

INGENJÖRSPROCESSEN METODIK ETSA01 VT13 JONAS WISBRANT

Agenda. Projektbeskrivning avsnitt 8: Acceptanstest - MS4 i korthet. Kursinformation

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Detta har hänt... Jonas Wisbrant - kort CV. Kursombud - nytt försök. Föreläsning 3: Test, Konfigurationer. Pratat och skapat krav och plan

Imperativ programmering. Föreläsning 4

Föreläsning 15: Repetition DVGA02

Hemtentamen: ETSA01 Ingenjörsprocessen för programvaruutveckling metodik Jonas Wisbrant

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

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

Undervisningen i ämnet programmering ska ge eleverna förutsättningar att utveckla följande:

TPFD - TestPlan Före Design BESKRIVNING AV AKTIVITETER

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

konfiguration och version och variant?

Agenda. Föreläsning 6: Summering och om tentamen Kursinformation

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Föreläsning 4 Arkitektur, design, kodning

Testning av program. Verklig modell för programutveckling

Detta har hänt... Föreläsning 2: Projektplanering & granskning. Pratat och provat kravhantering. Bildat projektgrupper :-) Skaffat litteratur?

Testplan Cykelgarage

Kursplanering Objektorienterad programmering

Hemtentamen: ETSA02 Programvaruutveckling Metodik

SKOLFS. beslutade den XXX 2017.

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

Projektplan, Cykelgarage

Hemtentamen: ETSA01 Ingenjörsprocessen för programvaruutveckling metodik

Objektorienterad analys och design

Programmeringsteknik II

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Exercise 4a: Test 2 ETSA01 INGENJÖRSPROCESSEN 1 - METODIK VT15. Lund University Computer Science ETSA01 Ingenjörsprocessen - Metodik VT15 Exercise 1

PMM (Process Maturity Metrics) Allmänt. Mätetal för framgångsfaktorer. 1. CM konfigurationsstyrning

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

Visuell GUI Testning

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Praktikum i programvaruproduktion

Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar

Testplanering, test-first, testverktyg

Objektorienterad analys och design

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Agil testning i SCRUM

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Sammanfattningar Essentials of Software Engineering

Objektorientering Klasser

INGENJÖRSPROCESSEN METODIK ETSA01 VT13 JONAS WISBRANT

SKOLFS. beslutade den -- maj 2015.

Arkitektur Michael Åhs

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Inkapsling (encapsulation)

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Objektorientering Användning

Symptom på problemen vid programvaruutveckling

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Laboration 2: Designmönster

Klient/server. Översikt. Lektion 1: Webbtekniker från Microsoft. Webbteknik från Microsoft. Klient/server. Designmönster. Utrullning.

Transkript:

Föreläsning 4: Design och praktisk testning ETSA01 Ingenjörsprocessen 1 - Metodik VT15 Markus Borg Min frånvaro Spårbarhet för säkerhetskritiska programvarusystem Bilindustri - ISO 26262 Processautomation - IEC 61511 Flygindustri - DO178c Kärnkraft - IEC 61513 Tågtrafik - IEC 62279 Medicinteknik - IEC 62304 Saknades: försvarsindustri, rymdfart och sjöfart Åt vilken intressent utvecklas säkerhetsstandarder? Utvecklarna? Certifierarna? Samhället i stort? 1 Utvecklare Standarder Samhället Certifierare Agenda Programvarudesign Arkitekturdesign Objektorienterad design Design av användargränssnitt Programvarutestning - del 2 White-box testing Demo verktyg för testning - Hexawise kombinatorisk testning - JUnit enhetstestning - CodeCover - kodtäckning 1

Projektinfo Kort om projektbetygen Ingen deadline idag! Jobba vidare mot L4 (Mån 27/4 kl. 23.59) L4 = Kravspecifikation 1.0 Baseline och formell ändringshantering 60 poäng totalt, fördelade på 9 kategorier 14 12 10 8 6 4 2 0 Några riktlinjer Övning 4a och 4b Generellt: +välskrivet +struktur +förtroendeingivande Projektplan: +tydlig +realistiska risker avsnitt saknas Kravspecifikation: + krav med kvalitet +matchar målen Designdokument: -matchar inte slutprodukten Test: +heltäckande +enkla att utföra överlappande tester Slutprodukt: +bra UI krav ej uppfyllda går att krascha Instruktion: +tydlig Granskningar: +olika typer av brister protokoll saknas Versionshantering: +referenser stämmer +ändringshantering korrekt Teamwork: +feedback +kommunikation deadlines Samma upplägg som första kursveckan Övning 4a på onsdag kl. 13-15 eller 15-17 Hemarbete 2 h Övning 4b på torsdag kl. 8-10 eller 10-12 Sista övningarna! 2

Design Programvarudesign ETSA01 Ingenjörsprocessen 1 - Metodik VT15 Markus Borg 9 Design Modell för design av objektorienterad programvara är både en aktivitet och ett resultat Förstå kraven Designa arkitektur Identifiera objekt Utveckla designmodell Specificera gränssnitt (Sommerville, 2015) 3

Arkitekturdesign Nedbrytning av systemets övergripande struktur System - helheten Subsystem enhet som ej beror på andra subsystem Moduler enhet som verkar ihop med andra moduler (Komponenter en eller flera klasser) System Subsystem A M A-1 Subsystem B M B-1 Subsystem C M C-1 M A-2 M B-2 M B-3 M C-2 M C-3 Syfte med arkitekturdesignen Länk mellan kraven och detaljerad design Grov ritning för implementation Kommunicerar designbeslut i organisationen Grund för systemanalys Säkerhet Prestanda Underlättar återanvändning Använda delar i andra system Utveckla produktlinjer Val av arkitekturdesign Förståelse för kontext och intressenter nödvändig för bra beslut Kvalitetskraven avgör ofta beslutet Vad vill vi uppnå? Motsättningar vanligt! Övriga faktorer som kan avgöra Organisationens tekniska kompetens och erfarenhet Återanvändning av tidigare arkitektur Standarder som behöver uppfyllas 4

Prestanda? Kommunikation är en prestandatjuv! Samla tunga beräkningar i moduler som kommunicerar minimalt utåt Acceptera att beräkningsmoduler blir stora System Säkerhet? (security) Åtkomstbegränsning viktigt Introducera säkerhet i olika lager Hantera den känsligaste informationen innerst System Subsystem A Subsystem B Subsystem A Subsystem A M A-1 M A-2 M A-3 M C-1 M A-1 M A-2 M A-3 M A-1 M A-2 M A-3 M C-2 M C-3 M A-4 M A-5 M A-6 M A-4 M SECURE M A-4 M A-5 M A-6 Säkerhet? (safety) Att verifiera säkerhetskrav är svårt och dyrt Samla alla säkerhetskritiska operationer i separat subsystem System Tillgänglighet? Minimera risken att systemet är otillgängligt Introducera redundans System Subsystem A M A-1 Subsystem B M B-1 Subsystem C M C-1 Subsystem A M A-1 M A-2 M A-3 Subsystem B1 M B1-1 M C-2 M C-3 M A-2 M B-2 M B-3 M A-4 M A-5 M A-6 Subsystem B2 M B2-1 20 5

Enkelt underhåll/evolution? LinkedIn: Java-arkitektur Fokusera på små oberoende moduler Minimal kommunikation gör det lättare att ersätta moduler i framtiden System Subsystem A Subsystem A M A-1 M A-2 M A-3 M A-1 M A-2 M A-3 M A-4 M A-5 M A-6 21 M A-4 M A-5 M A-6 M A-7 M A-8 M A-9 Typexempel Repository (delad data) Gemensam information repository Typexempel - Client-server Klient 1 Klient 2 Klient n Fördelar: subsystem 1 subsystem 2 - Effektivt med mycket data - Data-producent måste inte veta så mycket om konsument - Operationer på all data underlättas, t.ex. backup subsystem n Svagheter: - Alla subsystem måste använda samma dataformat - Vidareutveckling kan vara svårt eftersom mycket bygger på en viss datamodell Nätverk Betj. 1 Betj. 1 Betj. m Fördelar: Distribuerad arkitektur Lätt att lägga till nya klienter och betjänare Svagheter: Uppdatering av klient eller betjänare kan kräva uppdatering av samtliga Ingen gemensam datamodell 6

Typexempel Abstract machine Objektorienterad design Implementationsnära design Varje lager utgör en abstrakt maskin som används av nästa lager Fördelar: Stöd för inkrementell utveckling Underlättar portabilitet Svagheter: Kan uppstå beroenden mellan flera lager Kan bli sämre prestanda Beskrivning av hur komponenter implementeras på klassnivå Klasser beskriver meningsfulla entiteter i problemdomänen - Substantiv i beskrivningen blir klasser - Operationer implementeras i metoder Objektorientering - Fundamentala koncept 1. Inkapsling 2. Abstraktion 3. Arv 4. Polymorfism Unified Modeling Language - UML Generellt språk för att modellera programvarusystem Standardiserat av ISO Tre skapare, varav en svensk: Ivar Jacobson Statisk modell av systemet Klassdiagram Dynamisk modell av systemet Sekvensdiagram Mer i kursen Objektorienterad design och modellering eller Objektorienterad design och diskreta strukturer 7

Klassdiagram Sekvensdiagram (c-sharpcorner) Designmål: Låg koppling (coupling) Designmål: Hög samhörighet (cohesion) I hur stor utsträckning är klasser i programmet kopplade till varandra? Låg koppling underlättar underhåll och evolution Hur väl innehållet i en klass hänger samman Exempel: Logisk t.ex. en klass som sköter all utmatning av data Temporal t.ex. en klass som sköter all uppstart eller avslut Procedurbaserad aktiviteter som utförs efter varandra slås ihop Kommunikationsbaserad delar som behandlar samma data slås ihop Sekventiell kedja av aktiviteter som hänger ihop i sekvens Funktionell innehållet står för en enstaka funktion, t ex sortera vektor 8

Designmönster Beprövade lösningar på återkommande problem Ursprungligen från arkitektur Inom programvara används objektorienterade koncept Exempelmönster: Observer Separera ett objekts tillstånd från presentation Möjliggör flera olika vyer Några exempel: Singleton garanterar ett unikt objekt av en klass Iterator traverserar en samling objekt Visitor gör en operation på samtliga objekt i en samling Design av användargränssnitt Textuellt gränssnitt Kraftfullt för expertanvändare Grafiska användargränssnitt Lättare att lära sig och använda 9

Några grundläggande designprinciper I projektet: Designdokumentet Igenkänning Använd välkänd terminologi från domänen Följ beprövade koncept (fönster, flikar, dialogfönster etc.) Konsistens i GUIt Använd samma grafiska komponenter överallt Erbjud samma kortkommandon överallt Inga överraskningar Användaren ska kunna förutspå vad som händer Återhämtning Användare gör fel: tillåt återgång till föregående tillstånd Guida användaren Hjälp användaren och presentera feedback Ingen mall finns Hitta ett format som funkar Alla klasser ska beskrivas Namn, konstruktorer, publika metoder, ärvning Kommentarer Ange även ansvarig för klasser/metoder Rita klassdiagram Behöver inte vara UML Relationer och multiplicitet Alla GUI-klasser behöver ej visas (en GUI -box räcker) Design - sammanfattning Design är både en aktivitet och ett resultat Arkitekturdesign är en övergripande nedbrytning av systemstruktur: System Subsystem Moduler Val av arkitektur beror på kvalitetskraven Exempel: repository, client-server, abstract machine Objektorienterad design beskriver hur komponenter implementeras av klasser Beskrivs vanligtvis med UML Sträva efter låg koppling och hög sammanhållning Utveckla GUI som matchar användarens mentala modell Verifiering & Validering rep. ETSA01 Ingenjörsprocessen 1 - Metodik VT15 Markus Borg 41 10

Från F3 Enhetstest Från F3 Integrationstest Test av minsta testbara komponent Ofta klass eller metod Testfall bestäms t ex baserat på specifikationer av gränssnitt i design Test av subsystem Lund University Computer Science Jonas Wisbrant ETSA01 Ingenjörsprocessen metodik 42 Lund University Computer Science Jonas Wisbrant ETSA01 Ingenjörsprocessen metodik Från F3 Från F3 Systemtest Acceptanstest Testar det fullständiga systemet Är kravspecifikationen uppfylld? Test för att säkerställa att utlovat system har utvecklas Kan utföras av beställaren Lund University Computer Science Jonas Wisbrant ETSA01 Ingenjörsprocessen metodik 44 Lund University Computer Science Jonas Wisbrant ETSA01 Ingenjörsprocessen metodik 45 11

variabel 1 2015-04-20 Från F3 Black-box vs. White-box Från F3 Ekvivalenspartitionering Black-box Programmet ses som en svart låda och man utnyttjar inte någon kunskap om koden i samband med definition av testfall Kravspecifikationen används för att ta fram testfall Testar utfall/resultat White-box Kräver tillgång till koden Testar utfall och inre funktion - täcker vi koden? - täcker vi vägarna? Hitta värden för in- och utdata som behandlas på inbördes enhetligt sätt ekvivalensklasser ekvivalensklasser indata utdata ekvivalensklasser Från F3 Gränsvärdestestning Från F3 Parvis testning Vanliga gränsvärden Robust-test Kombinationer av gränsfall (gröna) (röda) (vita) Vissa fel single mode T ex lägga in viss typ av kurs Andra fel uppstår som kombination av två parametrar: T ex lägga in viss typ av kurs för viss institution Parvis testning: täck alla möjliga kombinationer av värden för alla möjliga par av parametrar Eller ännu fler parametrar T ex lägga in viss typ av kurs för viss institution för visst år och viss studentgrupp Antag ett system för att hantera kurser och studenter, med följande parametrar: Kurstyp (G1, G2, A) Institution (CS, EIT, Math, ) År (2006, 2007, 2008, 2015) Studentgrupp (C, D, E, ) variabel 2 12

White-box testing Verifiering & Validering forts. ETSA01 Ingenjörsprocessen 1 - Metodik VT15 Markus Borg 50 White-box testing Täcka rader (statement coverage) Kräver tillgång till koden Tanken är att testfallen ska täcka all kod Men vad menas med all kod? Exekvera alla rader minst en gång Alla noder i kontrollflödesgrafen Betrakta kodens kontrollflödesgraf 13

Täcka grenar (branch coverage) Täcka vägar (path coverage) Exekvera alla grenar minst en gång Alla bågar i kontrollflödesgrafen Innefattar även komplett radtäckning Exekvera samtliga vägar från startnod till slutnod Innefattar även komplett grentäckning Antalet testfall exploderar med loopar! 4 vägar Hur många vägar? Täcka enkla vägar (simple path coverage) McCabe s Cyclomatic Complexity (CC) Exekvera samtliga linjärt oberoende vägar från startnod till slutnod Innefattar komplett grentäckning Hanterar problematiken med loopar Ofta en rimlig kompromiss Används för att beräkna antalet enkla vägar i en kontrollflödesgraf Antal linjärt oberoende vägar: CC = #bågar - #noder + 2 1 1 0 0 Vägar: (1,1) (0,0) (1,0) (0,1) Ej linjärt oberoende! Krav En enda komponent i grafen En unik startnod samt en unik slutnod 14

Exempel (CC = #bågar - #noder + 2) Ett något större exempel CC = #bågar - #noder +2 = = 16-14+2 = 4 3 linjärt oberoende vägar If: CC = 3-3+2 = 2 If-else: CC = 4-4+2 = 2 2 linjärt oberoende vägar CC = 8-7+2 = 3 Praktisk testning: Demo av testverktyg Parvis testning för systemtest av diskmaskin 1. Motivering av parvis testning Systemtestning av en diskmaskin 2. Praktiskt exempel Kvalitetssäkring av personnummerklass 1. Webbtjänst Hexawise: Optimala testfall för parvis testning 2. Optimala testfall testfall i JUnit 3. Mäta kodtäckning med CodeCover i Eclipse Testparametrar: Temperatur (45, 55, 65) Miljöläge (on, off) Nedsmutsningsgrad (lätt, måttlig, grov) Utfall: Diskresultat (rent, smutsigt) Temp Miljö Resultat Smuts 15

Parvis testning för systemtest av diskmaskin Parvis testning Samtliga kombinationer av parameterpar testas En black box-teknik Färre testfall än vad som krävs för uttömmande testning Men en rimlig nivå för att hitta defekter Generera testdata som uppnår parvis täckning med ett minimalt antal testfall är svårt ett kombinatoriskt optimeringsproblem 3 x 2 x 3 = 18 möjliga testfall Systemtest diskmaskin: Möjliga par Parvis testning för systemtest av diskmaskin Temperatur-Miljöläge 45-on, 45-off 55-on, 55-off 65-on, 65-off Temperatur-Nedsmutsningsgrad Miljöläge-Nedsmutsningsgrad (3 x 2 komb.) (3 x 3 komb.) (2 x 3 komb.) 9 testfall räcker för att testa alla parameterpar 16

Verifiera extern modul för personnummer Demo av praktisk testning ETSA01 Ingenjörsprocessen 1 - Metodik VT15 Markus Borg Nytt krav på cykelgaraget! Beställaren vill att ha stöd för personnummer Del av betalningsmodellen Projektet bestämmer sig för att integrera funktionalitet hittad i öppen källkod Kvalitetssäkring av den externa koden krävs Hur gör man? 66 Verifieringsapproach Skapande av testfall genom black box-tekniker Ekvivalenspartitionering Parvis testning White box-testning för att avgöra testkvalitet Kodtäckningstestning Personnummerkoll för användare Personnummer anges enligt format: XXXXXX-XXXX eller XXXXXX+XXXX (standard: + betyder > 100 år) XXXXXXXX-XXXX (long format) XXXXXXXXXX (short format) Sista siffran är en kontrollsiffra (Luhn-algoritmen) Istället för accepteras även / Personer klassificeras i en ålderskategori <10, 10-18, 18-65, 66-99, >99 Vi identifierar följande ekvivalensklasser: User category (child, teen, adult, senior, golden) ID format (standard, short, long) Separator (-, /) Only digits (true, false) Input date (valid, future date, invalid month, invalid day) Checksum (correct, incorrect) 17

Personnummerkoll för användare Hexawise ID format Separator Only digits Input date Checksum User category Verktyg för att generera testfall för parvis täckning Vi identifierar följande ekvivalensklasser: User category (child, teen, adult, senior, golden) ID format (standard, short, long) Separator (-, /) Only digits (true, false) Input date (valid, future date, invalid month, invalid day) Checksum (correct, incorrect) Vi kan inte testa 5 x 3 x 2 x 2 x 4 x 2 = 480 kombinationer 20 testfall täcker alla exvivalensklasspar Category Format Sep Only digits Birth date Checksum Test 1 child standard - TRUE correct correct Test 2 child short / FALSE future date incorrect Test 3 child long / TRUE invalid month correct Test 4 child standard - FALSE invalid day incorrect Test 5 teen short - TRUE correct incorrect Test 6 teen standard / TRUE future date correct Test 7 teen standard - FALSE invalid month correct Test 8 teen long - TRUE invalid day correct Test 9 adult long / FALSE correct incorrect Test 10 adult standard - TRUE future date correct Test 11 adult short / FALSE invalid month correct Test 12 adult short / FALSE invalid day incorrect Test 13 senior standard - TRUE correct correct Test 14 senior long / FALSE future date incorrect Test 15 senior short - FALSE invalid month incorrect Test 16 senior short - TRUE invalid day incorrect Formulera testfallen i JUnit 18

Category Format Sep Only digits Birth date Checksum Test 1 child standard - TRUE correct correct Test 2 child short / FALSE future date incorrect Test 3 child long / TRUE invalid month correct Några av förslagen är omöjliga man måste hitta dem själv =( Test 4 child standard - FALSE invalid day incorrect Test 5 teen short - TRUE correct incorrect Test 6 teen standard / TRUE future date correct Test 7 teen standard - FALSE invalid month correct Test 8 teen long - TRUE invalid day correct Test 9 adult long / FALSE correct incorrect Test 10 adult standard - TRUE future date correct Test 11 adult short / FALSE invalid month correct Test 12 adult short / FALSE invalid day incorrect Test 13 senior standard - TRUE correct correct Test 14 senior long / FALSE future date incorrect Test 15 senior short - FALSE invalid month incorrect Test Lund 16 University senior Computer Science short Markus Borg ETSA01 -Ingenjörsprocessen TRUE - Metodik invalid day incorrect Mäta kodtäckning med CodeCover Summering: Parvis testning och kodtäckning Testning är dyrt! 1. Generera testfall för parvis testning 2. Implementera de möjliga testfallen i JUnit 3. Exekvera testfallen med CodeCover Testning ofta den enskilt dyraste aktiviteten i ett utvecklingsprojekt Kodtäckning 83% - vad innebär det? $$$ 19

När är testningen färdig? Snabbguide på hemsidan Finns inga garantier att alla defekter är hittade! Man kan alltid testa mer Avbryta för sent Avbryta för tidigt Slösade resurser Defekter finns kvar Försenad release Missnöjda användare Ökade kostnader Dyr support Dyrt underhåll 20