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