Objektorienteret Software Test – foreløbig rapport fra et udredningsarbejde Michael E. Caspersen Center for ObjektTeknologi Datalogisk Institut Aarhus.

Slides:



Advertisements
Lignende præsentationer
Sikring af tilgængelighed er en proces!
Advertisements

Arkitektur, lagdeling og pakker
Iterativ udvikling og UP
Test First Development
07 – Kort om OO Introduktion.
Objekt-orienteret software safety Lisa Wells, ISIS Katrinebjerg / Aarhus Universitet SummIT 05, Temasession: Software Safety.
WOC2006 foranalyse workshop del 1
Objektorienteret programmering
VOOP, 8 april Refleksion i objekt orienterede programmeringssprog Mandag 8/ Kasper Østerbye.
Tietgen Skolen Kvalitet og kvalitetssikring Review Test.
Beskrivelses- og analyse-teknikker understøttet af Oracle Designer
04.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Struktur Oversigt, principper og teknikker Kapitel 4.
10.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Komponenter Oversigt, principper og teknikker Kapitel 10.
1 Dagens gang Repeter systemvalg Gennemgang af klasser og strukturer (kap. 3+4 OOA+D) Tavle opgave Gruppe opgave til næste gang.
FEN Diskret matematik/Seminar 11 Diplomuddannelsen i Softwarekonstruktion (Master-brobygning) Fagpakke: Formelle modeller for programmering Diskret.
Indledende Programmering Uge 5 - Efterår 2006 Om at udvikle korrekte og pålidelige programmer Susanne Lindros.
Kvalitet i almindelighed og i relation til softwareudvikling.
Objektorienteret programmering
Stig Irming-Pedersen ASP.NET MVC Partner Copenhagen Software.
FEN NOEA/IT Programmeringsteknologi 1 Arv og polymorfi Substitutionsprincippet Abstrakte klasser Design Patterns (Composite)
09.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2000 © Kriterier Oversigt, principper og teknikker Kapitel 9.
Interfaces – brug. Overblik Tidligere: –Interfaces Comparable gør det muligt at bruge Collections metoderne –min, max, sort, … –Algoritmemønstre Find.
Serviceorienteret arkitektur SOA. SOA bygger på Der findes en serviceleverandør, som udstiller en formåen til at udføre en veldefineret og afgrænset aktivitet,
Eksempel på realisering af domænemodel
Objekter og klasser Rasmus D. Lehrmann DM
September 20031KUP - Projektstyring Formålet med projektstyring Formålet med projektstyring er at planlægge og styre et udviklingsprojekt, således at projektet.
1 Kursusafslutning. 2 Plan Opgaveseminar Kursusevaluering.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Forelæsning 7.1 – repetition
DIEB10.1 Kursusgang 10 Oversigt: Sidste kursusgang Eksempler på løsning af opgaven Arkitektur for brugergrænsefladen og for systemet Dokumentation af designet.
 Jens Bennedsen 2002Objektorienteret systemudvikling Design klasse model ”Klassemodellen på vej til kode”
Systemudvikling – Fra idé til kode.  Jens Bennedsen 2001Multimedie programmering9.2 Begrebsmodellering Problemspecifikke begreber Problem/vision vedrørende.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
 Jens Bennedsen 2002Objektorienteret systemudvikling GRASP mønstre Basale ansvarsplaceringsregler.
Anvendelse af Farvede Petri Net Modellering af NOKIA mobiltelefoner Louise Elgaard, Aarhus Universitet A-P Tuovinen, Nokia Research Centre Jianli Xu, Nokia.
Objektorienteret Software Test
 Jens Bennedsen 2002Objektorienteret systemudvikling Interaktionsdiagrammer Hvordan beskrives objektinteraktion? Sekvensdiagrammer Collaborationsdiagrammer.
 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.
Situationsbestemt metodevalg
Klassehierarkier Specialisering vha. subklasser. dIntProg, E05Klassehierarkier.2 Oversigt Eksempler på specialisering –Aktør, Koreograf, Skuespiller,
Indledende Programmering Uge 6 - Efterår 2006
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
Dagens gang Komponenter Projektetablering Opgave i komponenter til næste gang.
Pervasive Computing: Gateway Architecture for Home Integration Jonas Thomsen Ph.d. studerende Kvalifikationseksamen 27. september 2004.
 Jens Bennedsen 2002Objektorienteret systemudvikling Arkitektur.
Polymorfi Abstrakte klasser, substitutionsprincippet, statisk og dynamisk type.
Objektorienteret analyse og design Ó Bennedsen 2001 Design - part Programmering og systemudvikling Lektion 7 Design - part 2.
Design af brugerflader13.1 Kursusgang 13 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
/ 30 ETNOGRAFIC FIELD METHODS - and their relation to design.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
DIEB8.1 Kursusgang 8 Oversigt: Sidste kursusgang Beskrivelser af komponenter Typiske komponenter Arkitektur for en GUI.
 Jens Bennedsen 2001Multimedie programmering3B.1 Specifikationer Betingelser, specifikationer og JavaDoc.
 Jens Bennedsen 2001Multimedie programmering10C.1 Brugergrænseflader Swing.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Hvad er en inkrementel og iterativ process?
Eksamen Praktisk prøve.
Definition Kriterier Design og evaluering
Repetition: Ekspert review. ? Principper? Udfordringer? Hvornår i udviklingsprocessen? Fordele/ulemper ekspertreview i forhold til brugertest?
01.1 Mathiassen, Munk-Madsen, Nielsen & Stage, 2001 © Objektorienteret Analyse & Design (OOA&D) Grundbegreber, principper og metode Kapitel 1.
Afprøvning (test) Vigtigt hvis man ønsker programmer af høj kvalitet
IT-B: 1.07 Fasemodel og Agil Udvikling
IT-B: 1.07 Fasemodel og Agil Udvikling
Software Testing Software testing.
Greater Copenhagen – Klar til Smart Vækst Smarte affaldsløsninger – seminar nr november 2017 Data drevne affaldsløsninger.
Læringsmål og niveaubeskrivelser
Software Construction
Præsentationens transcript:

Objektorienteret Software Test – foreløbig rapport fra et udredningsarbejde Michael E. Caspersen Center for ObjektTeknologi Datalogisk Institut Aarhus Universitet

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Baggrund n Forskningsprojekt i Center for ObjektTeknologi, u Arkitektur af indlejrede systemer n Partnere u Bang & Olufsen, Danfoss, og Teknologisk Institut n Fem pilotprojekter, fem måneder hver u CD afspiller u Generel frekvensomformer u B&O Master (TV, Video, Radio, CD) u Frekvensomformer til kranstyring u Flow-måler n Pilotprojekter  produktprojekter

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Arbejdsgruppe n Bang & Olufsen u Kasper Behrmann n Danfoss Drives u Stefan Hellemann Skov n Aarhus Universitet u Ole Lehrmann Madsen u Elmer Sandvad u Michael E. Caspersen

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Generelt om test n E. W. Dijkstra u Testing can only show the presence of bugs, never the absence! n Formål u at finde fejl u at opnå en høj grad af tillid til korrekthed n Et optimeringsproblem u at finde flest fejl/opnå maksimal tillid med mindst mulig indsats n Standard testmetodikker u For eksempel G. Myers

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Aspekter (brainstorm) n Traditionel test vs. objektorienteret test n Systemer vs. frameworks n UI vs. non-UI n Værktøjer n Formelle teknikker n Parallelisme n Realtid n Dokumentation

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Udvalgte kilder n Communications of the ACM, Vol 37 (9), sep. 1994, Special Issue on Object-Oriented Software Testing. n Shel Siegel, Object-Oriented Software Testing: A Hierarchical Approach, n John D. McGregor, Robert V. Binder, Stephane Barbey n Brinch Hansen; Bustard, Elder & Welsh n Pressman, Software Engineering: A Practitioner’s Approach, 1997 n Kent Beck & Erich Gamma, JUnit

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Problemer n Indkapsling u afskærmning, abstraktion n Arv u stram arv, subtype/subklasse, multipel arv, abstrakte klasser n Polymorfi u virtuelle/dynamisk binding n Deklarativt snarere end imperativt u et sæt metoder uden en foruddefineret kaldssekvens

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Overordnet: business as usual Integrationstest: Den dårligst forståede aktivitet Systemtest: Test af applikationen Unit test: Test af klasser

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Iterativ udviklingsproces Integrationstest Systemtest Unit test Regressionstest

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Integrations- versus systemtest n System test u Test baseret udelukkende på hændelser der er synlige i systemets grænseflade F Use cases er en kandidat u Altid på target-platformen u Sidste niveau af integrationstest n Integrationstest u Kan baseres på interne hændelser u Kan foregår på udviklingsplatformen

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september OO software elementer n Klasse med operationer n Pakke: samling af klasser

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Pakketyper n Bibliotekspakke u Generel bibliotekspakke F Bruges af mange pakker/applikationer u Applikationsspecifik pakke F Bruges af en specifik applikation n Framework-pakke u Black box framework F Bruges uden specialisering/uden kendskab til opbygning af framework u White box framework F Kan specieliseres af klientpakker/kræver indsigt i virkemåde n Applikationspakke u Applikationen

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september OO test = pakketest Integrationstest: Test af pakker Systemtest: Test af applikationen Unit test: Test af klasser/basale pakker

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Kontinuum Integrationstest Systemtest Unit test Test af klasser Test af de mindst afhængige pakker Test af systemet (use cases) Test af næstmindst afhængige pakker Test af mest afhængige pakker...

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Pakke-afhængigheder ABCDEFGHIJ X

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september OO pakke test n På alle niveauer testes pakker med klasser u Uafhængige u Afhængige n Mål u Test bør være stort set det samme på alle niveauer n Unit test? u Metoder u Klasser u Niveau1-pakker

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Tilgang til test (bottom-up) n Black-box test u Test af ekstern opførsel n White-box test u Test af interne dele For hver pakke/klasse laves en eller flere testklasser (drivere)

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Skabelon for testklasse (driver) class TestMyClass { run() { setup(); runTest(); tearDown(); } setup() {... } tearDown() {... } runTest() {... } } MyClass TestMyClass run setup tearDown runTest

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Unit test (klasse/metode) n Fuld dækning u Alle sætninger bør være afprøvet n Grænsebetingelser u Alle grænser bør testes u Ækvivalensklasser u Forslag: tilstandsmaskiner F Queue: { empty, full, not (empty or full) }

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Design by contract (B. Meyer) n Invarianter pr. klasse n Pre- og post-betingelser pr. metode n Assertions (udsagn) udvalgte steder i koden n Skal kunne slås til og fra (C++)

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Problemer: Indkapsling n Hvordan laves white-box test hvis man ikke må tilgå private variabler? u Specielle test metoder ÷ u Specielle test subklasser ÷ u Test klasser er en friend + class TestMyClass { public: run(); private: MyClass& c;... } class MyClass { friend TestMyClass;... }

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Problemer: Subklasser n Subtype substitutability u Class myClass {... }; u myClass * R Enhver subklasse af myClass kan assignes til R R skal i princippet testes for enhver mulig subklasse af myClass n Stram arv/behavioral subtyping

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Problemer: Polymorfi n Virtuelle funktioner class myClass { public: virtual foo() {... } }; class yourClass : public myClass { public: virtual foo() {... } }; n En redefineret virtuel funktion kan ødelægge egenskaber ved superklassen

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Typecheck og behavioral subtyping class A { public: virtual TA foo(SA x); }; class B : public A { public: virtual TB foo(SB x); }; A* x = new...; {P} res = x->foo(y); {Q} SATA SBTB foo SB  SA TB  TA Contravarians og covarians

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Vi ønsker Covarians n Virtuelle funktioner class myClass { public: virtual foo(person *P, long n); /* 0 < n */ } class yourClass : public myClass { public: virtual foo(student *P, long n); /* 0 < n < max */ } myClass *R; person *S; long m; R->foo(S,m); n Covariance u Inputparametre u Pre-condition

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Genbrug ved test af subklasser n Klassifikation af ændringer i 1., 2. og 3. grad n Arvede metoder u 1. grad: begrænset test n Redefinerede metoder u 2. grad: genbrug af spec-based test i form af klasse invarianter, pre- & post-betingelser n Nye metoder u 3. grad: fuldstændig test

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Test som et aktiv i en iterativ proces implemen- tation evaluation designanalysis nye krav Iterativ udvikling består af en række (korte) cykler med review mellem hver iteration Kravspec. System

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Krav/Evaluering n Krav u enhver iteration skal opfylde krav der stilles før iterationen n Evaluering u her evalueres de stillede krav og krav til næste iteration defineres n Krav: u GUI krav: nye skærmbilleder/flere detaljer u Mere funktionalitet u Definition af testkrav: F Black box/White box scenarier F Grænsetilfælde F Externe/interne scenarier F... u Dokumentation bør ligeledes integreres

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Kent Beck & Eric Gamma n JUnit: et framework der understøtter test n Test skrives som en del af udviklingsfasen u I form af separate test-klasser n Skriv testklassen før den ”rigtige” klasse! n Korte mini-iterationer u Begynd med et lille test eksempel u Skriv koden der skal testes u Udvid testen u Udvid koden u Gentag... n Test-first-style: giver mindre og bedre klasser og metoder!

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Test og mønstre n Et mønster beskriver de centrale aspekter ved en gængs designstruktur n Et designmønster identificerer deltagende klasser (og objekter) deres rolle og samarbejde samt ansvarsfordelingen mellem dem. n I hvilken udstrækning er det muligt at be- skrive test af (instansierede) mønstre, og kan man således genbruge testspecifikationer? u Fx. invarianter for mønstre n Kan der omvendt laves mønstre for test

© Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september Afslutning n En rapport er under udarbejdelse n Beskriver specielle problemer ved OO test n Foreslår en tilgang hvor der ikke er principiel forskel på de forskellige niveauer n Foreslår at test gøres til en integreret og fremadrettet del af udviklingsprocessen