Professional Documents
Culture Documents
Objektorientiertes Testen
Martin Pinzger
Software Engineering Research Group
University of Klagenfurt
!
!
Kapselung
Abgeschlossenheit ist nicht einfach zu durchbrechen
Der Zugriff auf den Zustand von Objekten ist nur ber die Schnittstelle mglich
Vererbung
Die Subklassen verweisen auf Attribute und Methoden der Superklassen
Wiederverwendbarkeit von Code
Konstruktoren/Destruktoren
Erzeugung und Freigabe von Objekten
Exceptions (Ausnahmebehandlung)
Beeinflussen den Kontrollfluss eines Programms
!
!
Ebenen im OO Testen
Algorithmische Ebene
(Methodenebene):
Betrifft die Methoden einer Klasse
Methode
(=Funktionen)
Unit
Klassenebene
Klasse
Klassencluster
(=abhngige
Klassenmenge)
Subsystem
(=Zusammengehri
ge Gruppen von
Klassenmengen)
Clusterebene
Die Interaktion zwischen Klassen, die oft
miteinander verbunden sind, um einen
bestimmten Zweck (eine Aufgabe) zu
erfllen
Systemebene
Die Interaktion zwischen den Clustern (das
gesamte System)
System
7-5
7-6
Der Fokus beim OO Testen liegt auf dem Design von reprsentativen
Sequenzen von Methodenaufrufen
7-8
State-Based Partitioning
Erstellung von Testfllen auf Basis wie Methoden den Zustand eines Objekts
verndern
Darstellung der verschiedenen Zustnde von Objekten einer Klasse
Darstellung der Methoden einer Klasse als Zustandsbergnge (nur Methoden, welche den
Zustand eines Objekts ndern)
incorporate
0
Not present
unBind
Unbound
bind
unBind
Bound
isBound
7-10
incorporate
0
Not present
unBind
Unbound
bind
Bound
isBound
unBind
Mgliche Testflle
TF1: incorporate, isBound, bind, isBound
TF2: incorporate, unBind, bind, unBind, isBound
7-11
Attribute-Based Partitioning
Erstellung von Testfllen auf Basis wie Methoden bestimmte Attribute
einer Klasse verwenden und ndern
Weitere Gruppierung von Methoden, die Attribute verwenden und
ndern und Methoden, die das nicht tun
Beispiel: Bank Account mit den Attributen Balance und Kredit Limit
Partition 1: Methoden, die das Kredit Limit verwenden
Partition 2: Methoden, die das Kredit Limit ndern
Partition 3: Methoden, die das Kredit Limit weder verwenden noch ndern
7-12
Category-Based Partitioning
Erstellung von Testfllen auf Basis der Funktion/Rolle einer Methode
in einer Klasse
Initialisierung, Berechnung, Abfragen, Terminierung von Objekten, etc.
7-13
Random Testing
Vorgehensweise
Identifizierung der Methoden einer Klasse
Definition der Bedingungen fr die Ausfhrung der Methoden, z.B. eine Klasse
muss immer initialisiert werden bevor method x() aufgerufen werden kann
Festlegung einer minimalen Aufruf-Sequenz
Generierung von zuflligen Aufruf-Sequenzen
7-14
Aufruf-Bedingung
Ein Bank-Account muss zuerst erffnet (open) und am Schuss geschlossen
(close) werden
7-16
Selektion der Interaktionen auf Basis wie die Methoden den Zustand
von Objekten verndern (siehe auch State-Based Partitioning)
Ganzes Objekt wird als Variable gesehen (anstelle von einzelnen Attributen)
7-17
7-18
C20:Model
ChiMod:ModelDB
C20Comp:Compoment
C20slot:Slots
ChiSlot:SlotDB
ChiComp:ComponentDB
selectModel()
getmodel(C20)
TF1: Hinzufgen
einer
inkompatiblen
Komponente
select()
extract(C20)
addCompoment(HD60)
contains(HD60)
found
isCompatible(HD60)
incompatible
fail
addCompoment(HD20)
contains(HD20)
found
isCompatible(HD20)
compatible
bind
TF2: Hinzufgen
einer
kompatiblen
Komponente
success
7-19
7-20
7-21
7-22
Vergleich der Ergebnisse, sprich den finalen Zustand des Objekts, der
verschiedenen Test-Sequenzen
Zwei Zustnde sind quivalent, wenn all mglichen Sequenzen von
Methodenaufrufen zum gleichen Resultat fhren
7-23
quivalent zu TFa
// Szenario TFa2!
selectModel(M2)!
addComponent(S1,C1)!
addComponent(S2,C2)!
isLegalConfiguration()
Scaffolding
Tool example:
JUnit
Driver
Classes to be tested
Tool example:
MockMaker
Stubs, Mocks
7-25
Wenn eine Superklasse gendert wird, mssen alle Subklassen getestet werden
7-26
7-27
Verfahren 1: Top-Down
Testen von jeder Basis-Klasse, die nicht eine Subklasse von einer
anderen Klasse ist
Teste jede Methode
Teste die Interaktionen zwischen den Methoden
7-28
Verfahren 2: Flattening
Jede Subklasse wird geprft, als
ob alle geerbten Eigenschaften
neu definiert wurden
Testflle fr die Superklassen
knnen wiederverwendet werden
7-29
EduCredit
BizCredit
IndividualCredit
USAccount
UKAccount
EUAccount
JPAccount
OtherAccount
VISACard
AmExpCard
StoreCard
Kombinatorischer Ansatz
Account
USAccount
USAccount
USAccount
UKAccount
UKAccount
UKAccount
EUAccount
EUAccount
EUAccount
JPAccount
JPAccount
JPAccount
OtherAccount
OtherAccount
OtherAccount
Credit
EduCredit
BizCredit
individualCredit
EduCredit
BizCredit
individualCredit
EduCredit
BizCredit
individualCredit
EduCredit
BizCredit
individualCredit
EduCredit
BizCredit
individualCredit
creditCard
VISACard
AmExpCard
ChipmunkCard
AmExpCard
VISACard
ChipmunkCard
ChipmunkCard
AmExpCard
VISACard
VISACard
ChipmunkCard
AmExpCard
ChipmunkCard
VISACard
AmExpCard
Beschrnkung auf
paarweise
Kombination von
dynamisch
gebundenen Objekten
Keine Kombination
von jeweils zwei
Klassen kommt
doppelt vor
-> 15 Testflle
7-31
7-33
7-34
7-36
Literatur
Beizer, B., Testing Technology The Growing Gap, American Programmer, 7(4), 1994, pp. 3-12.
Booch, G., Object Oriented Design With Applications. Benjamin/Cummings, 1991.
Burnstein, I., Practical Software Testing, Springer-Verlag, 2003.
Binder, R., Testing Object-Oriented Software: a Survey, Journal of Software Testing, Verification and Reliability, John Wiley & Sons,
6(3/4), Dec. 1996, pp. 125-252.
Binder, R., Testing Object-oriented Systems: Models, Patterns, and Tools, Addison-Wesley, 4th ed., 2003.
Geetha, B.G., Palanisamy, V., Duraiswamy, K., Singaravel, G., A Tool for Testing of Inheritance Related Bugs in Object-Oriented
Software, Journal of Computer Science 4(1), 2008, pp. 59-65.
Jorgensen, P., Software Testing: A Craftsmans Approach, 2nd ed., CRC Press, 2002.
Kaner, C., Falk, J., Nguyen, Q., Testing Computer Software, Wiley &Sons, 1999.
Perry, D., Kaiser, G.: Adequate Testing and Object-Oriented Programming, Journal of Object-Oriented Programming, 2(5), Jan./Feb.
1990, pp. 13-19.
Pezz, M., Young, M., Software Testing and Analysis: Process, Principles, and Techniques, Wiley & Sons, 2008.
Rumbaugh, J. et al., Object-Oriented Modeling and Design, Prentice Hall, 1991.
Sneed, H., Winter, M., Testen objektorientierter Software, Hanser, 2001.
Vigenschow, U., Objektorientiertes Testen und Testautomatisierung in der Praxis, dpunkt.Verlag, 2005.
7-39