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
Joins
Datensätze
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
Ausnahmenhierarchie
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
???