270 likes | 533 Views
Diplomarbeit. Konzeption und Entwicklung einer Testfactory-Komponente für die automatisierte Ausführung von Testverfahren. Vorgetragen von Anton Afanasjew. PASS Consulting Group. Internationales Beratungs - und Softwarehaus
E N D
Diplomarbeit Konzeption und Entwicklung einerTestfactory-Komponente für die automatisierte Ausführung von Testverfahren Vorgetragen von Anton Afanasjew
PASS Consulting Group • Internationales Beratungs- und Softwarehaus • Aufgabengebiet: IT-Beratung, Softwareentwicklung und Projektmanagement • Branchen: Banken, Versicherungen, Touristik, Industrie, Telekommunikation und IT • Mitarbeiter: ca. 550 • Diplomandenbetreuung in der „Research & Development“-Abteilung
Entwicklungsinfrastruktur • Virtual Software Factory (VSF) • Komponentenbasierte Entwicklungsinfrastruktur • Unterstützt modellgetriebene Softwareentwicklung • Entwicklungsframeworks als Teile der VSF • Ultra-Thin-Client-Framework für die Entwicklung von Web-Anwendungen
Situation • Entwicklung von Webanwendungen mit Hilfe der MDSD-Ansätze • Modellierung der Webanwendungen • Generierung des Quellcodes mit dem UTC-Framework • Implementierung von Activities, den manuellen Codeteilen • Testen der entwickelten Anwendungen • Funktionale Tests • Regressionstests
Problem • Funktionale Tests • Browserbasierte Oberflächentests • Mühsame Testerstellung • Noch mühsamere Testausführung • Viel Routinearbeit für Testabteilung • Zeitintensiv und fehleranfällig
Lösung • Testfactory-Komponente für VSF/UTC • Teilweise Ableitung der Testfälle, Testdaten und Zusicherungen aus den Modellen der Webanwendung • Erstellung der Testskripte für das zugrundeliegende Testtool Selenium • Steuerung des Testtools beim automatisierten Ausführen der Tests • Analyse der Testergebnisse
Aufgaben der Testfactory • Testerstellung • Unterstützung der Tester bei der Testerstellung. • Testfallsuche • Vollständige Erstellung der Testskripte auf Basis von Testereinstellungen und der Analyse der Anwendungsmodelle • Testausführung • Steuerung des Testtools • Erweiterung des Testtools • Testauswertung • Vergleich zweier Programmstände • Testdatenablage • Verwaltung von Tests • Verwaltung von Testergebnissen • Beziehungen zw. Tests und Testergebnissen
Testerstellung (1) - Pfadsuche • Darstellung der Prozesse und Dialoge der Anwendung unter Test als gerichteter Graph • Erweiterung des Graphen um dynamische Elemente • Pfadsuche auf Basis der graphentheoretischen Tiefensuche • Berücksichtigung der Überdeckungswünsche des Testers (Dialog, Zweig, Pfadüberdeckung) • Möglichkeit des Ausschlusses einzelner Dialoge/Prozesse aus der Suche • Generierung der Pfadmodelle aus den Modellen der Anwendung
Beispiel • 2 Prozesse • Knoten entsprechen den Dialogen der Anwendung • Startknoten für jeden Prozess • Ein Startprozess • Knotenübergänge innerhalb von Prozessen • Prozesswechsel • Zielknoten bei Prozesswechseln dynamisch berechnet Pfadsuche liefert folgende Knotenfolgen: (1-2), (1-3-4-5-4), (1-3-4-5-3-5-4), (1-4-5-4), (1-4-5-1-2), (1-4-5-1-3-5-3), (1-4-5-1-3-5-4), (1-4-5-4)
Pfadsuche: Klassendiagramm ProcessPool: Gesamtgraph ProcessGraph: Teilgraph für einen Prozess Node: Graphknoten Edge: statische (prozessinterne) Kante DynamicEdge: Prozesswechselkante EgressEdge: Knotenübergangsbeschreibung Path: Pfad als Folge von Knotenübergängen PathList: Liste aller Pfade
Testerstellung (2) - Testdaten • Definition von Wertemengen für Eingabefelder • Testdaten sind Eingabewerte, aber auch Zeilenauswahl beim Klick auf einen Detail-Eintrag in einer Master-Tabelle • Zuweisung der Wertemengen zu den Dialogfeldern • Kombination von Wertemengen unterschiedlicher Felder für die Überdeckung aller Eingabemöglichkeiten in einem bestimmten Kontext • Generierung der Testdatensatzmodelle
Beispiel: Kombination von Wertemengen Wertemengen Datensätze Joins
Testerstellung (3) - Zusicherungen • Zusicherung von Feldinhalten • Zusicherung = Vergleich der Ist/Soll-Werte • Vergleichsausdrücke mit Feldreferenzen • Angabe der Zusicherungsart • Angabe des Auslösers • Ergebnis => Zusicherungsmodell
Testerstellung (4) - Testskripte • Pfade, Daten, Zusicherungen als Eingabemodelle • Definition manueller Testblöcke für individuelles Testverhalten • Generierung der Skripte für das Testtool
Testausführung(1) - Testtoolerweiterung • Erweiterung von Selenium • Implementierung der Fehlerkategorisierung • Implementierung von Vergleichsfunktionen • Auflösung von Vergleichsausdrücken • Definition von Selenium-Ausnahmen
Testausführung(2) – Produktion von Testergebnissen • Implementierung von vorzeitig abgebrochenen Tests • Behandlung von gescheiterten Tests (Gescheitert im Sinne eines unerwarteten Fehlers oder Nichterfüllung einer kritischen Zusicherung) • Kommunikation der Ergebnisse an den Auswertungsserver in Form von XML-Dokumenten
Testauswertung • Serveranwendung für den Empfang der Testergebnisse vom Testtool • Vergleich der Testergebnisse unter Berücksichtigung der Gewichtung • Möglichkeit der Gewichtung von Fehlerkategorien • Statistik über die Änderung der Fehlerquote bei zwei Applikationsständen
Testdatenablage • Versionisierung und Speicherung der Pfad-, Daten, Zusicherungsmodelle • Testskripte als Ergebnisse der Kombination dieser Modelle • Liste der Testergebnisse pro Kombination • Beispielimplementierung auf Basis vom Dateisystem
Weiterentwicklung (1) – Erweiterung der Testerstellung • Pfadsuche • Manuelle Definition von Pfaden • Finden der Teilpfade • Schleifendurchläufe • Testdatengenerierung • Generierung der Grenzwerte und Zufallswerte • Aufteilung der Wertebereiche in Äquivalenzklassen • Definition von Zusicherungen • Einbinden neuer Vergleichsfunktionen und Fehlerarten • Sprache für einfache Erzeugung der Vergleichsausdrücke • Skriptgenerierung • Eingabe der Reihenfolge für Skriptkommandos • Abstraktion vom Testtool und Unterstützung anderer, ähnlicher Tools
Weiterentwicklung (2) – Sonstiges • Anhängen von Modulen für die Testauswertung • z.B. grafische Darstellung der Testergebnisse • Optimierung der grafischen Benutzeroberfläche • Integration der Testdatenablage in die Testfactory
Fazit • Die Testfactory… • …liegt in der Version 1.0 vor • …ist in die Virtual Software Factory als Komponente integriert • …reduziert den Aufwand beim Erstellen, Ausführen und Auswerten von funktionalen Tests • …wird gegen zwei Kundenprojekte getestet (ein Flugticketbestellsystem und eine Memoverwaltunganwendung) • …wird in der R&D-Abteilung des Unternehmens weiterentwickelt
Ende Danke für die Aufmerksamkeit!
Fragen ???