eine strategie für objektorientierte software testen-„omen“

Werbung
EINE STRATEGIE FÜR OBJEKTORIENTIERTE
SOFTWARE TESTEN-„OMEN“
Wissenschaftliches Arbeiten
Recep IBILOGLU
0027849 534
Technische Universitaet Wien
1.Abstract
Das Testen ist der kosten und zeitaufwendigste Teil einer Programmentwicklung Das Testen
dauert in einem Programm 50-70 % [1] .Daher ist esvon grösster Wichtigkeit , den
Testaufwand möglichst klein zu halten.Mehr als 20 % aller Softwarefehler bleiben jedoch trotz
Testen unentdeckt.Objektorintierte Testen enthält Vererbung , Kapselung und Dynamische
Bindung und unterscheidet sich grundlegend vom Testen prozeduraler Software aufgrund der
charakteristiken Struktur.Omen strategie ist eine wichtige Teststrategie in der
Objektorientierte Software , um die richtigkeit und stabilität Objektorientierte Software zu
verbessern.
Diese Arbeit bietet einen überblick über Testen , Objektorientierte Testen und eine Strategie
von Objektorientierte Software Testen OMEN -eine Zusammenfassung [2].-Durch die Point
to Escape Graph , Ape Graph wird OMEN Approach repräsentiert.Es wird diese Graphen
untersucht dass wie gelaufen wird.Zur Zeit erleichtert Omen Approach die Testenphase der
java Technologies und das bringt sparende Zeit.
2.Einleitung
Jedes Programm enthält Fehler , Ziel ist es zu finden;zu diesem Zweck sollte der Tester mit der
Absicht einen Fehler zu finden , an das Testen herangehen.Aus diesem Grund ist der
Implementierter für das Testen ungeeignet,da er nicht destruktiv genug ist.
Der Begriff „Testen“ wird oft falsch definiert und richtige Definition ist
„Ein Test ist dann als erfolgreich zu werten,wenn ein Fehler beim Testen gefunden wurde und
nicht ,wenn kein Fehler gefunden wurde.“[3]
Grundsätzlich unterscheidet man beim Testen zwischen
• Statischen Testen
• Dynamischem Testen
1
Als statiches Testen bezeichnet man jene Tests, bei denen das zu testende Programm nicht
ausgeführt wird.Dieser Test kann zum Beispiel durch eine eingfachen Codeinspektion
durchgeführt wird.
Als dynamishes Testen bezeichnet man jede Tests , bei denen das zu testende Programm
ausgeführt wird.
3 Prozedurale Teststrategien
Um festzustellen , ob eine Funktion korrekt ist, müsste man diese Funktion mit allen
möglichen Eingangswerten ausführen. Da dies in der Praxis nicht durchführbar ist , muss
mittels geiegneter Testfälle die Korrektheit der Funktion bzw des Programms getestet
werden[4].
Prozedurale Programme können mit folgenden Testmethoden getestet werden :
• Komponententest
• Integrationstest
• Systemtest
Beim Komponententest besteht die Aufgabe darin, die einzelnen Programmstücke
(Funktioenen) unabhängig voneinander zu testen.Dies wird durch eine entsprechende
Testumgebung ermöglicht.
Mit dem Integrationstest sollen Schnittstellenfehler erkannt werden.Diese betreffen sowohl Ein
und Ausgabeformate , falsche Reihenfolge von Unterprogrammaufrufen sowie falsche Einund Ausgabeparameter.Zu diesem Zweck können sowohl spezifikationsbasierende als auch
programmbasierende Tests verwendet werden.Da jedoch beim Integrationstest der Aufwand
für programmbasierende Tests sehr gross sein kann , wird meisst nur ein „Black-box“ Test
durchgeführt.
Der letzte Schritt besteht darin, das ein Systemtest durchgeführt wird.Dies entspricht einem
Integrationstest , der das Zusammenarbeiten aller Funktionen im Programm testet.
Black-Box Test
Beim Black-Box Test wird das Gesamtsystem gegen seine Spezifikation geprüft. Die interne
Implementierung wird dabei nicht betrachtet bzw. ist unbekannt.
White-Box Test
Der White Box Test überprüft die zugrundeligende Implementierung eines Programmstückes ,
ohne Rücksichtnahme auf die Spezifikation aufgabe des White-box Tests ist es , endlossschleifen und unerreichbaren Code zu finden ,dh man versucht jeden Programmpfad
mindestens einmal zu durchlaufen.
4. Objektorientierte Teststrategien
Das Testen objektorientierter Software unterscheidet sich grundlegend vom Testen
2
prozeduraler Software aufgrund der charakteristiken Struktur objektorientierter Software:Die
kleinste Einheit der prozedurale Programmierung stellt die Funkrion dar , bei der
objektorientierten Programmierung hingegen, nimmt das Objekt diese Position ein.Das
Objekt ,vereint in sich , sowohl Datenstrukturen als Operationen,die diese Datenstrukturen
manipulieren.Dies macht es erforderlich auch die Operationen eines Objektes zu testen.
Diese strukturellen Unterschiede zu nicht objektorientierter Software , können durch folgende
Testschritte berücksichtigt werden,wobei auch die Vererbung , Kapselung und Dynamische
Bindung berücksichtigt werden müssen:[5]
•
•
•
•
Testeneiner einzelnen Operation
Testen eines Objektes
Testen mehrerer Objekte(verhalten untereinander,Integrationstest)
Testen des gesamten Systems
Das Testen einer einzelnen Operation ist ident mit dem Testen einer Funktion(Komponentest)
in der prozeduralen Programmierung.Ebenso ist der letzte Schritt , dass Testen des Gesamten
Systems äquivalent zum Systemtest der Prozeduralen Programmierung.
Das Testen eines Objektes soll die Interaktionen der Operationen und Daten,die in den
Objekten eingekapselt sind testen.Das Testen mehrerer Objekte soll die Interaktionen einer
Gruppe von zusammenarbeitenden Objekten testen.
5.Eine Strategie der Testen “Omen”
Die objektorientierte Programmierung konzentriert auf die zu manipulierenden Daten.
Objektorentierte Programmierung erstellt Objekten.In der Klasse enthält alle Daten der
Objekten. Die Methoden ruft , modifiziert oder ändern die Objekten.Zum Verstehen wir
identifizieren Objektorintierte Manipulationen als read/write oktionen.Folgende Tabelle zeift
uns die manipulierende Objekte und einige Operationen.
Table 2: Basic object manipulations
3
In der angeführt Tabelle jeder Befehl oder Code hat eigene aktionen.Jeder Aktionen wird in
einem programme eine Manipulation durchgeführt.
Die Tätigkeiten, die eine bestimmte Aussage oder eine Methode an einem Objekte durchführt,
können in eine Reihenfolge dieser elementaren Tätigkeiten zerlegt werden. Spezifisch
kennzeichnen man den folgenden Satz von grundlegendem lesen und schreiben Tätigkeiten in
Bezug auf Gegenstände und die Hinweise:
•
•
•
•
•
Man kann den Wert in einem Hinweis auf einem Objekte lesen.
Man kann den Wert auf einem Felder eines Objekte lesen.
Man kann den Wert auf einem Felder eines Objekte schreiben.
Man kann einen Hinweis auf einem Objekt als Parameter führen .
Man kann einen Hinweis auf einem Objekt von einer Methode bringen.
5.1.Funktionalität Der Programme
Jeder Methode steuert durch einen Control Flow Graph. Die Relationen zwischen Methoden
werden durch ein Call Graph repräsentiert. Die Verhältnisse zwischen Objekten werden durch
ein APE Diagramm .Diese Darstellung entwickelt durch Whaley und Rinard , die
Wissenschaftler sind.
5.1.a Das Points to Escape Diagramme
Die Points to Escape Diagrammdarstellung kombiniert Punkte zu den Informationen über
Objekten [1 ].Das Point to Escape Graph repräsentiert die Manipulierende Objekten.
Tabelle 2: Points- to graph changes for load/store
4
Zum Beispiel „load r1=r2.f“.Oben erste Abbildung r2.f dann zweite Abbildung hat noch eine
kanten r1.Dann Jeder Abbildung kommt zur gleiche resultat.Denn kann man load r1=r2.f
sagen .Jeder Befehle wird mit dieser Point to Escape Graphen darstellen.
Point to Escape graph hat innere kanten, aussere kanten , innere Knoten , aussere Knoten and
load store.Jeder innere Kanten verfolgt mit innere Knoten beziehungsweise jeder aussere
Kanten verfolgt mit aussere Knoten.Point to Escape Graph integriert die Informationen oder
Referenzen.In dieser referenzen oder Informationen hat die local Variablen.Rinard and Whaley
hat mit diesem Graphen und strategie die neue Techniken ergefunden.Dann kann man die
Unnötige Objekten entfernt werden.
5.1.b Das APE Graph
Point to Escape Graph ist nicht eine Objektorientierte Programme darzustellen.Rinard and
Whaley mit dem neue Entwicklung haben die neue Graphen dasgestellt.Es wurde eine Frage
für diese Graphen gesucht:
„What could be referencing a given object at a particular program point, such as at a
given load statement? Similarly, what objects could be read at this point in the
program? Where are all the possible reaching write's to this object prior to this program
point? [2]
Tabelle 3: Ape graph for exit of main
Im tabelle 3 enthält noch komplexer Graphen als Point to Escape Graph.Das Zeigt Bindung
oder einige objektorientierte Kapselung , Polymorphismus .
Diese Graph hat wie vorgegebenen Graph , Innere Kanten , Knoten und Aussere Kanten ,
Knoten.Die Verfahren der zusammenbindung ist gleich Point to Escape graph.
5
Zur Zeit produziert man neue Strategien und Techniken für Testen.Die SUN company hat die
neue Techniken herausgefordert wie JavaSpec , JavaScope und JavaStar ist. Man kann mit
diesem Methoden und Programme sehr leicht eine Objektorentierte Software getestet
werden.
7. Zusammenfassung
Das wird in diesem Arbeit zum ersten Testen zum zweiten Test arten als Prozedurale und
Objektorientierte und zum letzten eine Strategie für Objektorientierte Software Testen
OMEN vorgestellt. Die traditionellen Testverfahren können wegen der objektorientierten
Grundkonzepte „Datenkapselung, Vererbung“ und „Polymorphie“ nur bedingt für den Test
objektorientierter Software eingesetzt werden.Omen strategie ist ein neue gedank für
Objektiorientierte Software.Das wird neueste Software mit diesem Strategie getestet und
bringt 20 % Zeit sparen.Es spielt sehr intensiv Rolle um die richtigkeit und Stabilität der
Objektrioentierte Software Testen.
8. Literatur
[1] [Pur91a] Jan A Purchase , Russel L Winder , Debugging tools for Object oriented
Programming , Journal of Object oriented Programming 4 (1991) , pp 10-27.
*Diese Arbeit beschreibt definitionen von Testen .
[2] [Souter00] Amie L. Souter , Lori L. Pollock , OMEN: A strategy for testing objectoriented software , Proceedings of the 2000 ACM SIGSOFT international symposium
2000, Pages: 49 - 59
*Die Vorliegende Seminararbeit ist eine Zusammenfassung dieser Arbeit.
[3] [Rüppel97] Peter Rüppel , Ein Generisches Werkzeug für den objektorientierten
Softwaretest , Informatik der Technischen Universität Berlin , Mai 1997 pp 5-45.
*Eine Dissertation beschreibt Objektorinted Software testen und Objektoriented
Werkzeuge.
[4] [Binder 95] Binder, R. V.. Testing Object-Oriented Systems: A Status Report, from
Proceedings of the Third International Conference on Software Testing, Analysis Review.
(Mai) 1995.
*Eine Proceeding definiert Objektorientierte Software Testen.
[5] [Winter97] Mario Winter, Testbarkeit objekt-orientierter Programme , FernUniversität
Hagen , Mai 1997 , eMail: [email protected]
* Diese Arbeit definiert Testbarkeit Objektorientierte Software.Das wird im
Objektorientierte Kapselung , Polymorhismus , Generizität , Vererbung untersucht.
6
Herunterladen