Institut PALUNO Essen, 29.06.2011 | Andreas Gorbach
Modellbasiertes Testen
Hochschule und Softwareindustrie im Dialog
Folie 2
Inhalt
� Motivation modellbasiertes TestenKurze Einführung
� Vorgehensweise
� Modellbasierte Testdatenerstellung
� Modellbasierte GUI-Testautomatisierung
Folie 3
Fakten
� Testautomatisierung nur durch Programmierung
� Test der Fachlogik setzt fachliches Hintergrundwissen voraus
� Folge: Testfallprogrammierer ist ein Exot
� Projektgeschäft = Diskontinuierliche Entwicklungsintensität
� Projektgeschäft = Roulierende Entwicklerteams
� Projektgeschäft = Spontanität und kurze Rüst- bzw. Anpassungszeiten
� Folge: Aktualität des Regressionstests ist nicht einfach zu gewährleisten
Folie 4
Verbesserungspotential fachlogischer Tests
� Tests sollen ohne programmiertechnische Tiefkenntnisse ausgeführt und modifiziert werden können, um
�Flexibilität in der personellen Besetzung zu erhöhen
�den Wiedereinstieg nach Entwicklungspausen zu erleichtern
�die Einarbeitungszeit zu reduzieren
� Abdeckungsgrad soll visuell erfassbar sein
�Vision: Modellbasiertes Testen (UML)
Folie 5
Modellbasiertes Testen - Vision
� Durch die Modellierung konzentriert sich der Tester primär auf die Beschreibung der Fachlichkeit, er „programmiert“ grafisch
� Der Tester schafft sich einen Baukasten an Aktivitäten, die er zu Abläufen kombinieren kann
� Für das Tagesgeschäft lassen sich bedarfsgerechte Testsuites visuell zusammenstellen (z. B. Test von Patches)
� Der Abdeckungsgrad lässt sich visuell erfassen
� Aus den Modellen wird durch Modelltransformation der erforderliche Quellcode zur Testautomatisierung vollständig generiert (Testdaten und Fachlogik)
Folie 6
Model Driven Architecture Transformations im Lebenszyklus
Nutzen für den Entwicklungsprozess
Vererbung von Informationen
Modellübergreifende Beziehungen
Erhöhung der Produktivität
Durchgängige Nachverfolgbarkeit
Teilweise Kopplung mit Quellcodegenerierung Use CaseModel
Business ProcessModel
ClassModel
Test Case Model Requirements Model
Folie 7
Modellbasiertes Testen – Innerbetriebliche Innovation
� Bestandteil der innerbetrieblichen Ausbildung
� Start Sommer 2008
� Primär wurden MATSE und Fachinformatiker im ersten Lehrjahr eingesetzt
� Prämisse: Alles muss mit einem UML-Werkzeug modelliert werden
� Roulierende Weitergabe im Semester-Rhythmus an Nachfolger
� Getestet werden soll eine Client-Server-Applikation im laufenden Lebenszyklus
� Integration in die Qualitätssicherung eines Entwicklungsprojekts
� Erfolgreicher Abschluss der Evaluation Frühjahr 2011
� Produktive Nutzung im Entwicklungsprojekt seit Frühjahr 2011
Folie 8
Inhalt
� Motivation modellbasierte Testautomatisierung
Kurze Einführung
� Vorgehensweise
� Modellbasierte Testdatenerstellung
� Modellbasierte GUI-Testautomatisierung
Folie 9
Verwendete Entwicklungsumgebungen
Enterprise Architect 8.0 oder höher (www.sparxsystems.com)�Business and Software Engeneering Edition�Systems Engineering Edition�Ultimate Edition
� TestComplete 8.0 oder höher (www.smartbear.com)
� Python (Einspielen der Testdaten)
Benötigte Code-Generation-Templates
� Python (Testdaten)
� JScript (TestComplete-Steuerung)
Folie 10
Alltag modellbasierte Testautomatisierung
� Der Tester benutzt den Enterprise Architect zur Strukturierung, Verwaltung und Modellierung seiner Testcases
� Testdaten werden anhand von Class Diagrams modelliert
� Über Activity Diagrams werden die Bedienabläufe für TestComplete modelliert
� Der Enterprise Architect ist in der Lage, sowohl aus Klassendiagrammen als auch aus Behavioral Diagrams (Activity Diagrams, Sequence Diagrams) Quellcode zu generieren
� Eventuelle Anpassung der Generation-Templates für Python (Testdaten) und JScript (TestComplete) oder UML-Wertevorräte im Enterprise-Architect
Folie 11
Automatisierte Modelltransformation – Intention
Phase 1: Modellierung von plattformunabhängigen Modellen
Quelle: Sparx System
Phase 2: Transformation in die gewünschte(n) Zielplattform(en)
Fokus liegt auf dem Geschäftsprozess
Zukunftsorientierte Architektur, da Anpassungen nur im PIM notwendig sein sollen
Transformation soll sich mit Quellcodegenerierung koppeln lassen
Folie 12
Inhalt
� Motivation modellbasierte Testautomatisierung
Kurze Einführung
� Vorgehensweise
� Modellbasierte Testdatenerstellung
� Modellbasierte GUI-Testautomatisierung
Folie 13
Testdatengenerierung - Manuelle Modelltransformation
Schematischer Bedienungsablauf
act Testdaten anlegen
Model ohne Package
Model mit neuemPackage
Package anlegen
Model ohne Package
Model mit neuemPackage
Package ohne Diagramm
Package mit neuem Klassendiagramm
Klassendiagramm anlegen
Package ohne Diagramm
Package mit neuem Klassendiagramm
Start
Klassendiagramm ohne Pattern
Klassendiagramm mit Standardklassen
Pattern laden
Klassendiagramm ohne Pattern
Klassendiagramm mit Standardklassen
Klassen ohne Taganzeige
Klassen mit Taganzeige
Tag und Attribut Anzeige
w iederherstellen
Klassen ohne Taganzeige
Klassen mit Taganzeige
Klassen ohne Testdaten
Klassen mit neuen Testdaten
Testdaten einfügen /
v erändern / anpassen
Klassen ohne Testdaten
Klassen mit neuen Testdaten
Speicherort ohne .py Dateien
Speicherort mit generierten .pyDateien
Python Code generieren
Speicherort ohne .py Dateien
Speicherort mit generierten .pyDateien
Speicherort ohne Oberklassen
Speicherort mit Oberklassen
Python Dateien
zusammentragen
Speicherort ohne Oberklassen
Speicherort mit Oberklassen
Python Steuerdatei und Testdaten
Datenbank mit Testdaten befül lt
Python Steuerscript
ausführen
Python Steuerdatei und Testdaten
Datenbank mit Testdaten befül lt
Testdaten wurden angelegt
Folie 14
Phase 1: Modellierte Ereignisse als Vorlage für Testcases
� Jedes Ereignis mit Auswirkungen auf die Geschäftsprozesse ist als Use Casedefiniert und durch ein Activity Diagramm beschrieben
Folie 15
Testdatengenerierung Schritt 1 - manuelle Modelltransformation
Beispiel „Name Geschäftspartner ändern“
act Geschäftspartner Name än...
Start
Nav igationsbaum
aktualisieren
(from Mehrfachnutzung)
Ende
Fenstertitel aktualisieren
(from Mehrfachnutzung)
Für TestGP können bei Bedarf Werte angepasst werden
Folie 16
Testdatengenerierung Schritt 2 – automat. Modelltransformation
Quellcode zur Testdatenerzeugung generieren
Folie 17
Testdatengenerierung - Annehmlichkeiten der Modellierung
� Kapselung einer unhandlichen PL/SQL-API mit komfortabler Konfiguration und einfachen Versionsmanagement
Nur benötigte Parameter
Folie 18
Inhalt
� Motivation modellbasierte Testautomatisierung
Kurze Einführung
� Vorgehensweise
� Modellbasierte Testdatenerstellung
� Modellbasierte GUI-Testautomatisierung
Folie 19
GUI-Testautomatisierung Schritt 1 - manuelle
Modelltransformation
Testablauf logisch modellieren (optional)
act Geschäftspartner Name ändern
Namen ändern
Testdatensatz aufrufen
Start
Ende
Suchdialog öffnen
Testfallkennung
eingeben
Testdatensatz
auswählen
Zum
Geschäftspartner
nav igieren
Geschäftspartner
öffnen
Namen löschen
Neuen Namen
eingeben
speichern
Kontrolle
Fenstertitel lesen
Fenstertitel
überprüfen
Nav igationsbaum
einblenden
Geschäftspartnername
überprüfen
Geschäftspartner
schließen
act Geschäftspartner Name ändern
Start
Navigationsbaum
aktualisieren
(from Mehrfachnutzung)
Ende
Fenstertitel aktualisieren
(from Mehrfachnutzung)
Name:Package:Version:Author:
Geschäftspartner Name ändernAllgemein1.2Andreas Gorbach
Suchen klicken
Suchdialog
schließen
Folie 20
GUI-Testautomatisierung Schritt 2 – modellbasierte
Testtoolprogrammierung (1)
Testablauf durch Modellierung implementieren
act nameAendern
Start
Ende
Test beenden :endCase
Titelleiste und Nav igationsbaum überprüfen :checkChangeInTitleAndNav iTree
Testdatensatz suchen und GP öffnen: addTestRow AndOpenGP
:addOrderAndOpenLST
Aktuelle Bezeichnung im Nav iBaum auslesen :getFocusCaption
Aktuellen Titel auslesen :getTitle
GPname ändern: setNameGP :setNameLST
Eingabe speichern :clickSpeichern
Folie 21
GUI-Testautomatisierung Schritt 2 – modellbasierte
Testtoolprogrammierung (2)
Methodenaufrufe parametrieren
act nameAendern
Start
Ende
Test beenden :endCase
Titelleiste und Nav igationsbaum überprüfen :checkChangeInTitleAndNav iTree
Testdatensatz suchen und GP öffnen: addTestRow AndOpenGP
:addOrderAndOpenLST
Aktuelle Bezeichnung im Nav iBaum auslesen :getFocusCaption
Aktuellen Titel auslesen :getTitle
GPname ändern: setNameGP :setNameLST
Eingabe speichern :clickSpeichern
Folie 22
GUI-Testautomatisierung Schritt 2 – modellbasierte
Testtoolprogrammierung (3)
Beispiel For-Schleife
act messkostentypAendern
Start
Auftrag hinzufügen :
g_addOrderStrAndOpenLST
Ende
Lieferstellen kalkulieren :
g_clickAlleLieferstellenKalkulieren
for i-te Lieferstelle bearbeiten :
bearbeiteMktLieferstelle
Lieferstelle v orbereiten :
g_lstPreisregelungHinzufuegen
[var i = 0; i < 3; i++]
Folie 23
act szeKalkulationsbasisAendern
Start
Auftrag holen :g_addOrderStr
Szenario initialisieren :g_initStrSZE
for Lieferstelle initialisieren :
g_initStrLST[var i = 0; i < l_lieferstelle.length; i++]
GUI-Testautomatisierung Schritt 2: modellbasierte
Testtoolprogrammierung (4)
Beispiel For-Schleife (dynamische Deklaration)
Folie 24
GUI-Testautomatisierung Schritt 2 – modellbasierte
Testtoolprogrammierung (5)
Tagged Values als Platzhalter für Variablen-Deklarationen
act pruefeProfilv orgabeUndAbleseturnus
Profilv orgabe auslesen :
g_getGridViewCellTextByCaption
i fLog.Message
(G_TestComplete::)Log.Error
(G_TestComplete::)Unerwartete Profilvorgabe
Folie 25
GUI-Testautomatisierung Schritt 3 : Vorbereitungen Quellcodegenerierung
Composite diagram modellieren
class Stammdaten
CaseGPNameAendern
Allgemein::
Allgemein
GUI Ansteuerung::
Nav igationsbaum
Allgemein::
GPStammdaten
Allgemein::
Menu
Allgemein::
GPAllgemein
«use»
«use»
«use»«use»
«use»
«use»«use»
Wiederverwendung bestehender Modellierung
Folie 26
GUI-Testautomatisierung Schritt 4: autom. Modelltransformation
Quellcode zur Testautomatisierung generieren
Folie 27
Fazit
Ziel erreicht
Evolution vorantreiben, z. B.
Abstraktionsgrad der codenahen Modellierung erhöhen
Handlichkeit und Performance der Generierung erhöhen
Modellbasiertes Testen vermitteln und weiterentwickeln
Folie 28
Vielen Dank für Ihre Aufmerksamkeit!
www.soptim.de
Andreas Gorbach
Niederlassung Aachen
Im Süsterfeld 5-7
52072 Aachen
Tel. (02 41) 9 18 79-0
Fax. (02 41) 9 18 79-109