Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

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

Lignende præsentationer


Præsentationer af emnet: "Objektorienteret Software Test – foreløbig rapport fra et udredningsarbejde Michael E. Caspersen Center for ObjektTeknologi Datalogisk Institut Aarhus."— Præsentationens transcript:

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

2 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 2 Baggrund n Forskningsprojekt i Center for ObjektTeknologi, 1998-2000 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

3 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 3 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

4 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 4 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

5 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 5 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

6 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 6 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, 1996. 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

7 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 7 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

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

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

10 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 10 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

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

12 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 12 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

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

14 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 14 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...

15 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 15 Pakke-afhængigheder ABCDEFGHIJ X 4 3 2 1

16 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 16 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

17 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 17 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)

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

19 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 19 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) }

20 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 20 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++)

21 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 21 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;... }

22 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 22 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

23 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 23 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

24 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 24 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

25 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 25 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

26 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 26 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

27 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 27 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

28 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 28 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

29 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 29 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!

30 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 30 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

31 © Michael E. Caspersen 17. seminar i OO/UML Brugergruppen 30. september 1999 31 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


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

Lignende præsentationer


Annoncer fra Google