Hochschule und Softwareindustrie im Dialog - … · Modellbasierte GUI-Testautomatisierung. Folie 3...

Preview:

Citation preview

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

andreas.gorbach@soptim.de

Recommended