Begreber og Redskaber 6. Afprøvning Formål: •Ekstern afprøvning (Funktionstest). •Hvordan dokumenterer man afprøvning i en rapport. •Hvordan konstuerer.

Slides:



Advertisements
Lignende præsentationer
Hvordan programmerer man?? STREAM - en model. Programmører arbejder ofte i teams Hver programmør arbejder på sin del af en større helhed.
Advertisements

Velkommen til Softwarekonstruktion
Peter Nedergaard: Hypotesetest
Begreber og Redskaber 1 BRP.
Problemløsningsheuristik I.1 Hvordan besvarer man sin problemstilling? I.Forstå problemstillingen 1.Hvad er det (i min problemstilling) som jeg ikke ved.
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Overskrift her Navn på oplægsholder Navn på KU- enhed For at ændre ”Enhedens navn” og ”Sted og dato”: Klik i menulinjen, vælg ”Indsæt” > ”Sidehoved / Sidefod”.
NetBeans Installation og brug.
Master Thesis Track Software Engineering Henrik Bærbak Christensen.
Selve objektet versus referencen til objektet Nedarvning
Første generation (maskiner/operativsystemer) 45-55: radiorør Kun maskinsprog programmering = skrivning af nullerog ettaller Intet operativsystem programmør.
Grundlæggende programmering Efterår 2001
Regnskab & økonomistyring - Lektion 14 HD 5. semester forår 2010 v/ Jens Godik Højen, April 2010.
Tietgen Skolen Kvalitet og kvalitetssikring Review Test.
Arv Idéen i arv et at kunne genbruge gennem generalisering
Indledende Programmering Uge 5 - Efterår 2006 Om at udvikle korrekte og pålidelige programmer Susanne Lindros.
© 2013 Netcompany A/S Netcompany A/S · Grønningen 19 · 1270 København K · Tlf Side 1 Simon Otto Nielsen Diplomingeniør i informations og kommunikationsteknologi.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Trigonometrisk Lommeregner
Data Dictionary (databaser, del 7)
Begreber og Redskaber 5. Plan for idag Overblik over klasser,objekter,nedarvning –Repetition fra Dat A/Indledende programmering –Centrale begreber om.
1. Semester rapporter Det skal fremgå af rapporten at man kan planlægge implementere afprøve dokumentere middelstore programmeringsopgaver.
STREAM processen – Programmering i praksis
Forelæsning 3.1 Collections Javas for-each løkke
Virksomhedens informationsbehandling
GP6, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 6 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Fundamentale datastrukturer
Eksempel på realisering af domænemodel
Forelæsning 5.1 Brug af klassen Collections og interfacet Comparable samt parametriserede typer Projektuge: Ants and Spiders / Lommeregner dIntProg,
Struktureret ProgramUdvikling MM 5
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
DIEB4.1 Kursusgang 4 Oversigt: Sidste kursusgang Opgaver Aktivitet 2: Generer design (fortsat) Design af interaktionselementer.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
Problemløsningsheuristik I.1 1.Hvad er det (i min problemstilling) som jeg ikke ved endnu? Dvs. hvad leder jeg efter (og hvorfor er det vigtigt/interessant.
Problemløsningsheuristik A.1 1.Hvad er det (i min problemstilling) som jeg ikke ved endnu? Dvs. hvad leder jeg efter (og hvorfor er det vigtigt/interessant.
 Planlægning › Kommunikationsplanlægning › Teknisk planlægning  Krav- og testspecifikation › Krav til produkt  Design › Brugergrænseflade  Implementering.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
Forelæsning 7.1 – repetition
Deadlock Definition deadlock (baglås) er en tilstand som en mængde af processer kan være i en mængde processer er i deadlock hvis alle processerne står.
Identitet vs lighed. Spørgsmål Hvad udskriver run metoden? 1.”Ens!” 2.”Forskellige!” 3.Ved ikke public class Driver{ public static void run(){ String.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
Indledende Programmering Uge 6 - Efterår 2006
Design af brugerflader13.1 Kursusgang 13 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge46 Ancestor.
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
DIEB8.1 Kursusgang 8 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering15A.1 Eksamen…
Quiz Uge 2 – torsdag. Hvorfor har vi clicker quizzer? Formålet med quizzerne er –at afveksle undervisningsformen – så I ikke falder i søvn –at tvinge.
Afprøvning (test) Vigtigt hvis man ønsker programmer af høj kvalitet
Quiz Uge 2 – mandag.
Programmering.
Quiz Uge 2 – mandag.
Quiz Uge 2 – mandag.
Quiz Uge 2 – mandag.
Præsentationens transcript:

Begreber og Redskaber 6

Afprøvning Formål: •Ekstern afprøvning (Funktionstest). •Hvordan dokumenterer man afprøvning i en rapport. •Hvordan konstuerer man et program så det kan afprøves. •Overblik over andre afprøvningsteknikker.

Faser i programmering Ikke tidsmæssigt separate faser: •Analyse og design –Afklar hvad der skal laves •Programmering •Indkøring (test) –Find fejl •Afprøvning –Dokumenter programmets pålidelighed

Programmering Generelt: •Undgå at programmere meget af gangen. –Gør det nemt at finde ud af hvor fejl er. Taktik: •Top-down (Step-wise refinement). –Del programmet i faser. Lav ”dummy” versioner af de fleste. Gentag evt for faserne. •Bottom-up –Programmer en mindre del, der kan bruges til programmet. Indkør og afprøv det separat.

Top-down (1) static public void main(String[] args){ System.out.println(”Hello”); } •Check at man faktisk kan få oversætteren til at virke og at man kan afvikle et program

Top-down (2) static public void main(String[] args){ indlaes(); behandl(); udskriv(); } int i,j; static public void indlaes(){ i=3; } static public void behandl(){ j=i; } static public void udskriv(){ System.out.println(j); } •Første opdeling i nogle faser.

Bottom-up •Find afgrænsede problemstillinger som kan løses separat. •Løs dem – og gerne lettere generaliseret. •Indkør og afprøv dem separat i kunstige indkøringsomgivelser (stubbe). •Når programdelen indsættes i det endelige program testes integrationen •(unit test – integration test)

Indkøring •Brug testudskrifter boolean test=true; if(test) System.out.println(..); •Kunsten er: ikke for få – så man ikke ved hvor der er fejl – og ikke for mange – så man mister overblik. •Slå dem fra når en del virker. Brug evt flere test-variable. •Test fejl, der ”ikke kan ske” •Robust software kan selv diagnosticere fejl

Afprøvning •Overvej Afprøvningsstrategi –Taktik, niveau af pålidelighed •White-box (hvor man kender programtekst) –Intern afprøvning (structural test) –Kode gennemgang (inspektion, review) –Bevisførelse (verification). •Black-box (hvor man kun kender programmets funktion). –Ekstern afprøvning (function test)

Ekstern afprøvning Funktionstest •Fra en beskrivelse af hvad programmet skal konstrueres testdata: –Prøv med forskellige typer af ”typiske data” –Prøv med grænsetilfælde af korrekt og forkert inddata. •Ide: Man prøver med mindst en repræsentant for hver gruppe af inddata, der forventes behandlet på samme måde

Testtilfælde Eksempel: Find største af liste tal. Testtilfælde: fejl1Tom liste fejl2Andre tegn end cifre i listen input1Kun et tal i listen input2To ens tal input3To tal, voksende input4To tal, faldende input5Tre tal, voksende input6Tre tal, faldende input7Tre tal, største i midten

Præsentation Test:inddataForventet uddata fejl1(ingenting)fejl fejl212 a 3fejl input113 input226 input input input input input

Opstilling af testtilfælde •Med for mange testtilfælde bliver det uoverskuelligt. Svært at overskue mere end 7-10 ting ad gangen. •Lav opdeling hierarkisk: måske 7-10 testgrupper a 7-10 testtilfælde. •Et inddata sæt kan måske dække flere testtilfælde. •I særlige tilfælde kan man overskue mere: –Grammatik –”prøv med første og sidste dato i hver måned”

Overvej •Vi har program der genkender palindrome binære tal (binære tal, med samme cifre læst forfra eller bagfra). •Konstruer ekstern afprøvning af programmet.

Principper for testtilfælde •Undgå at teste for kombinationer af mulige fejl. (antallet eksploderer bare). •Testtilfælde kan opstilles før programmering – evt til afklaring i analysen •Hellere få udvalgte gode testtilfælde. Forsøg på at ”tæppebombe” programmet er sjældent nyttigt. •Afprøvningen virker overbevisende ved at være systematisk og gennemtænkt.

Intern afprøvning Structural test •Alle kodelinier skal gennemløbes •Alle betingelser skal prøves med sand og falsk •Alle løkker skal prøves med mindste antal gennemløb og med flere gennemløb. •Tungt i projektrapporter

Programgennemgang Kode review •Programmøren gennemgår sit program for gruppen. Gruppen prøver at finde fejl ved opklarende spørgsmål. •Ofte viser fejl sig ved at programmøren pludselig har svært ved at forklare en del af programmet.

Andre afprøvningstyper •Maskinnedbrud –Hvordan reagerer programmet ved maskinnedbrud. Tabes data? Kan det bare genstartes? •Sikkerhedstest –Hvor modtageligt er programmet for indbrudsforsøg •Ydeevne –Stresstest, respondstider

Særligt for OO software •Bottom-up testing af klasser/objekter •Objektets tilstand og metodekald er ”input” i ekstern afprøvning •Metode interaktion: test rækkefølge af kald. Kan felter bruges før de initialiseres? •Test nedarvning. Test af om klasser også fungerer fornuftigt når der arbejdes med nedarvede klasser.

Sammenfatning •Ekstern afprøvning. •God måde at overbevise en læser af en rapport om at ens program faktisk virker. •Afprøvning kan tilrettelægges uafhængigt af programmering. •Andre afprøvningsteknikker kan også overvejes.