Gegenseitige Beeinflussungen von Testautomatisierung, Testmanagement und Entwicklung Jan Düttmann Archimedon Software + Consulting GmbH & Co. KG Marienstraße 66 32427 Minden
Stephan Kleuker Hochschule Osnabrück Fakultät IuI Postfach 1940 49009 Osnabrück
Inhalt • Einführung: Begriffsfeld • Zentrale Fallstudie: Testautomatisierung für admileo (Ein- und Weiterführung) • (exemplarische) Analyse von Erfolgskriterien der Testautomatisierung abgeleitet aus Fallstudien
SWM 2015
Düttmann / Kleuker
2
QS-Landkarte Testhierarchie Abnahmetest
Testarten
Performance-Test Usability-Test
Systemtest
Komponententest
Testeffizienz
Testautomatisierung
GUI-Test Regressionstest
Testwiederverwendbarkeit
Smoke Test Unit-Test
SWM 2015
Düttmann / Kleuker
3
Praxisbeispiel: Archimedon • Unternehmen: Archimedon (Minden + Osnabrück), 15 Mitarbeiter • zentrales Produkt: admileo – Verteilte Anwendung zur Abbildung von Geschäftsprozessen – Fokus • Multiprojektmanagement im Konzern • Product Lifecycle Management für komplexe Produkte • modular aufgebautes komplexes Client/Server System, Java • Fat Client mit Java Swing • systematische klassische Software-Entwicklung mit manueller Qualitätssicherung • Quelle: A. Heidt, Konzeption und Realisierung einer automatisierten Testumgebung in einem Continuous Integration Prozess für admileo, Bachelorarbeit Hochschule Osnabrück, 2012 SWM 2015
Düttmann / Kleuker
4
Praxisbeispiel: Archimedon • Ausgangssituation:
Anforderungsanalyse: klassische Dokumentation Entwicklung: Client-Server; bisher keine drastischen Probleme, kein Stillstand
Architektur: ein- und ausschaltbare Module Qualitätssicherung: komplett manueller Prozess Dokumentation: Studierende schaffen Einarbeitung Qualifikation / Schulung: Entwicklung durch Informatiker
SWM 2015
Düttmann / Kleuker
5
Neu eingeführter Testprozess • JUnit • JaCoCo
Build
Schnelle Tests
Analysen
Restliche Tests
• Sonar
SWM 2015
• QF-Test • JaCoCo • Sikuli Düttmann / Kleuker
6
Praxisbeispiel: Archimedon • Ausgangssituation:
Anforderungsanalyse: klassische Dokumentation Entwicklung: Client-Server; bisher keine drastischen Probleme, kein Stillstand
Architektur: ein- und ausschaltbare Module Qualitätssicherung: voll automatisierter Prozess Dokumentation: Studierende schaffen Einarbeitung Qualifikation / Schulung: Entwicklung durch Informatiker
SWM 2015
Düttmann / Kleuker
7
Benefit • Ständige Verfügbarkeit von ausführbaren Testsystemen • Vollständig automatisierter Aufruf und Reporting der Testfälle • Risikominimierung bei Release-Wechseln
SWM 2015
Düttmann / Kleuker
8
Erfahrungen • Technisch: – Verwendete Tools sind ausgereift und stabil – Implementierung einer Continuous Integration und Testing Umgebung gestaltet sich als reibungslos – Betrieb erfordert geringen Aufwand (wenige Mannstunden pro Monat) • Organisatorisch: – Einführung einer zentralen QS-Stelle sinnvoll => Einarbeitungstiefe minimieren – Definition von Schnittstellen zwischen QS und Entwicklung – Wiederverwendung, Aufbau von Libraries, Testarchitektur
SWM 2015
Düttmann / Kleuker
9
Zukünftige Herausforderungen Web Clients
Rich Client
Web Client
Rich Client
admileo Webserver
admileo Applikations-Server
admileo Applikations-Server
Umstieg Rich Client => Web Client (RIA)
SWM 2015
Düttmann / Kleuker
10
Zukünftige Herausforderungen
Auswirkungen auf die Testarchitektur?
SWM 2015
Düttmann / Kleuker
11
Testprozess • JUnit • JaCoCo
Build
Schnelle Tests
Analysen
Restliche Tests
• Sonar
SWM 2015
• QF-Test • JaCoCo • Sikuli Düttmann / Kleuker
12
Erfolgskriterium: Testarchitektur (1/2) Architektur der Software (testbare Architektur) • modular / komponentenbasiert / gegen Schnittstellen entwickelt GUI / Browser
View Model
View Model FrameworkVerbindung
Business Model
Persistence Layer
SWM 2015
oberflächentechnologieunabhängige Regressionstests
Beispiel: Wiederverwendbarkeit von Tests nur, wenn austauschbare Elemente gekapselt statt JSF in JEE Wechsel zu Apache Wicket Düttmann / Kleuker 13
Erfolgskriterium: Testarchitektur (2/2) Architektur der Tests (wart- und erweiterbar) • modular / hierarchisch / strukturiert strukturiert class NutzeranmeldungTest class NutzeraktualisierungTest …
hierarchisch class NutzeranmeldungTest { gui.textEingeben("Login", "Ute")
„eine Test-Suite pro WebSeite“
class MeineGUIToolSteuerung{ public void textEingeben(String feld, … Input in = X.find(feld); mouse.click(in); … „Kapselung von Logik und Werkzeugdetails“
SWM 2015
Düttmann / Kleuker
14
Erfolgskriterium: Testorganisation • Nachvollziehbarkeit, was wie getestet wird, Zusammenhänge
SWM 2015
Düttmann / Kleuker
15
Erfolgskriterium: Nutzung neuer Technologie (1/2) • neue Technologie in der Entwicklung und bei Testwerkzeugen • Beispiel: konsequente Nutzung von Dependency Injection
@Inject private PersistenzService db; ... public void persist(Object object) { db.persist(object); } • Vorteil Entwicklung: Entkopplung von benötigten Ressourcen vom eigentlichen Nutzer • Vorteil Test: Einfache Integration von Mocks • Beispiel: Contexts and Dependency Injection (JSR 299, 346) in JEE (z. B. @Alternative) SWM 2015
Düttmann / Kleuker
16
Erfolgskriterium: Nutzung neuer Technologie (2/2) • Beispiel 2 CDI: Interceptor (Aspektorientierung 2001) class NutzeranmeldungTest{ @InterceptQualifier @InterceptQualifier @Intercept public void beobachtbareMethode( class MeinInterceptor{ @AroundInvoke … public void beobachten(InocationContext ctx) … • Vorteil Entwicklung: zentrale Aufgaben (Rechte, Logging, Validierung, Transaktion) an zentraler Stelle • Nachteil Entwicklung: unübersichtlich, welcher wann aktiv • Vorteil Qualitätssicherung: einfacher Eingriff in Ausführung • Nachteil Qualitätssicherung: wann wie Interceptor testen
SWM 2015
Düttmann / Kleuker
17
Erfolgskriterium: Richtiger Metrikeinsatz • Richtige Nutzung von Überdeckungsmetriken (Zweigüberdeckung) korrekt: • Testfälle klassisch aus typischer Nutzung und möglichen Extremfällen konstruieren • dann Überdeckung messen • dann analysieren, warum bestimmte Bereiche nicht überdeckt • dann ggfls. weitere Testfälle für Überdeckung ergänzen falsch: • festes Maß (95% Überdeckung) als Ziel ausgeben und hieraus Korrektheit annehmen SWM 2015
Düttmann / Kleuker
18
Erfolgskriterium: Qualifikation • nur gute Programmierer können gute Tests programmieren • nicht jeder gute Programmierer schreibt gute Tests • nur gute SW-Architekten können gute Testarchitektur erstellen • zentrales Hilfsmittel: ISTQB-Zertifizierung
SWM 2015
Düttmann / Kleuker
19
Zusammenfassung • Testautomatisierung kann Zeit sparen und Qualität erhöhen • viele dynamische Erfolgskriterien: Personal, Prozess, Technologie • gute QS nur bei guter Entwicklung möglich
SWM 2015
Düttmann / Kleuker
20