ET2014 Agiles Testen - Entwicklertag · Agiles Testen Handwerkszeug zur Prävention von Fehlern und...

Preview:

Citation preview

Agiles Testen Handwerkszeug zur Prävention von Fehlern und technischen Schulden Entwicklertag 2014 Lars Alvincz, Daniel Knapp

© 2014 andrena objects ag

2

Agenda

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

§  Ziel dieses Vortrags

§  Grundzüge des agilen Testens

§  Voraussetzungen für agiles Testen

§  Vorstellung der agilen Testquadranten

§  Die Testpyramide

§  Anwendungsbeispiele für die Umsetzung agiler Tests

§  Fazit, Fragen, Diskussion, Kontakt

3

© 2014 andrena objects ag

§  Der Vortrag gibt eine grundlegende Übersicht, wie Entwicklungsteams von Anfang an dem Aufhäufen von technischen Schulden und Fehlern entgegenwirken können, indem sie konsequent agile Testtechniken im Entwicklungsprozess verankern

§  Zunächst findet eine grundlegende Begriffsklärung zum agilen Testen statt

§  Im Anschluss werden Anwendungsbeispiele verschiedener Aspekte vorgestellt

Ziel dieses Vortrags

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

© 2014 andrena objects ag

4

Agenda

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

§  Ziel dieses Vortrags

§  Grundzüge des agilen Testens

§  Voraussetzungen für agiles Testen

§  Vorstellung der agilen Testquadranten

§  Die Testpyramide

§  Anwendungsbeispiele für die Umsetzung agiler Tests

§  Fazit, Fragen, Diskussion, Kontakt

© 2014 andrena objects ag

5

Vorüberlegungen

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Relative Kosten zur Beseitigung von Fehlern

100

10

3

1 Anforder

ungen

Code

Test

Produktion

Relative Kosten zur Fehlerbeseitigung nach Lebensdauer

100 % 100 %

ohne agile Tests mit agilen Tests

Kapazität für Features vs. Bugs

© 2014 andrena objects ag

6

Grundzüge des agilen Testens I

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Exkurs: agile Entwicklungsprozesse (Scrum etc.) verfolgen das Ziel

§  fertige Software zum Ende des Entwicklungszyklus auszuliefern

§  eine hohe Entwicklungsgeschwindigkeit bei effizientem Aufwand zu ermöglichen

Agiles Testen verfolgt den Ansatz

§  Testen und Entwickeln zeitlich und eng zu verzahnen §  eine möglichst hohe Testabdeckung der Software zu erzeugen

§  mangelhafte Codequalität bzw. Bugs so früh als möglich offen zu legen, um frühzeitige Korrekturmaßnahmen zu ermöglichen

§  die entwickelte Funktionalität auch über den Entwicklungszyklus hinaus gegen Seiteneffekte bei Erweiterungen abzusichern.

© 2014 andrena objects ag

7

Grundzüge des agilen Testens II

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Zielbild

§  Entwicklungsteam liefert am Ende des Entwicklungszyklus funktionierende Software ab, die im Anschluss produktiv genutzt werden kann

§  Automatisierte Akzeptanztests sichern neben den Entwicklertests das bestehende Verhalten

§  Ggf. erforderliche manuelle Tests werden nach einem schlanken Verfahren durchgeführt

§  Das fertige Entwicklungsinkrement wird so zeitnah als möglich in die Produktion überführt

© 2014 andrena objects ag

8

Agenda

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

§  Ziel dieses Vortrags

§  Grundzüge des agilen Testens

§  Voraussetzungen für agiles Testen

§  Vorstellung der agilen Testquadranten

§  Die Testpyramide

§  Anwendungsbeispiele für die Umsetzung agiler Tests

§  Fazit, Fragen, Diskussion, Kontakt

© 2014 andrena objects ag

9

Voraussetzungen für agiles Testen I

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Agile Software Engineering (ASE) I

§  Agile Entwicklungstechniken (XP, Clean Code) innerhalb des Entwicklungsteams

§  automatisierte Tests auf verschiedenen Ebenen

§  konsequente Refactorings zur Vermeidung technischer Schulden

§  Testisolationswerkzeuge und -techniken einsetzen, um wiederholbare Tests zu produzieren und Testlaufzeiten zu verkürzen.

© 2014 andrena objects ag

10

Voraussetzungen für agiles Testen II

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Agile Software Engineering (ASE) II

§  Testabdeckungsgrad einer Software sollte ermittelt werden können, um

§  Testlücken gezielt schließen zu können

§  Refactorings gefahrlos durchführen zu können

§  Ergebnis der automatisierten Tests muss für Entwickler sichtbar sein

§  Stichwort: „Continuous Integration“

§  Stichwort: „Early Feedback“

§  Rasches Gegensteuern im Fehlerfall

© 2014 andrena objects ag

11

Agenda

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

§  Ziel dieses Vortrags

§  Grundzüge des agilen Testens

§  Voraussetzungen für agiles Testen

§  Vorstellung der agilen Testquadranten

§  Die Testpyramide

§  Anwendungsbeispiele für die Umsetzung agiler Tests

§  Fazit, Fragen, Diskussion, Kontakt

© 2014 andrena objects ag

12

Alle Tests

Agile Testquadranten

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Für d

as T

eam

Für das Produkt

fachlich

technisch

Q2

Q1

Q3

Q4

© 2014 andrena objects ag

13

Alle Tests

Agile Testquadranten

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Q2

Q1

Q3

Q4

Für d

as T

eam

Für das Produkt

fachlich

technisch

Entwicklertests §  Unit Tests §  Komponententests

Ziel §  Verbesserung der internen Qualität

(Struktur der Software, Schichtung) §  Testbarkeit herstellen

Effekt §  Team kann schneller arbeiten §  Sicherheitsnetz für Refactorings §  Team wird selbstbewusster und mutiger

automatisiert

© 2014 andrena objects ag

14

Alle Tests

Agile Testquadranten

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Q2

Q1

Q3

Q4

Für d

as T

eam

Für das Produkt

fachlich

technisch

Entwicklertests §  Unit Tests §  Komponententests

Ziel §  Verbesserung der externen Qualität §  Kooperation von Anwendern und Entwicklern

§  Fallkonstellationen §  Beispiele

Effekt §  Fallkonstellationen in Tests umwandeln mittels

Test-Werkzeugen

automatisiert

automatisiert / manuell

Funktionstests §  Beispiele §  Prototypen §  Story Tests §  Simulationen

© 2014 andrena objects ag

15

Alle Tests

Funktionstests §  Beispiele §  Prototypen §  Story Tests §  Simulationen

Agile Testquadranten

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Q2

Q1

Q3

Q4

Für d

as T

eam

Für das Produkt

fachlich

technisch

Entwicklertests §  Unit Tests §  Komponententests

automatisiert

automatisiert / manuell

Effekt §  Usability-Test der Anwendung §  Lebendige Test-Dokumentation

bzw. -spezifikation

manuell

§  Manuelle explorative Tests §  Benutzer-Akzeptanztests §  Usability Tests

Ziel §  Evaluierung des SW-Produkts

§  Formell: Sprint Review §  Informell: manuelles, z.B.

exploratives Testen

© 2014 andrena objects ag

16

Alle Tests

Funktionstests §  Beispiele §  Prototypen §  Story Tests §  Simulationen

Agile Testquadranten

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Q2

Q1

Q3

Q4

Für d

as T

eam

Für das Produkt

fachlich

technisch

Entwicklertests §  Unit Tests §  Komponententests

automatisiert

automatisiert / manuell

Ziel §  Flaschenhälse ermitteln §  Speicherlücken ermitteln §  Systemgrenzen ausloten

Effekt §  robuste Software §  gutes Antwortzeitverhalten

manuell

Werkzeuge

§  Performance-Tests §  Lasttests

§  Manuelle explorative Tests §  Benutzer-Akzeptanztests §  Usability Tests

© 2014 andrena objects ag

17

Alle Tests

Agile Testquadranten

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Q2

Q1

Q3

Q4

Für d

as T

eam

Für das Produkt

fachlich

technisch

automatisiert / manuell manuell

automatisiert Werkzeuge

Entwicklertests §  Unit Tests §  Komponententests

§  Performance-Tests §  Lasttests

Funktionstests §  Beispiele §  Prototypen §  Story Tests §  Simulationen

§  Manuelle explorative Tests §  Benutzer-Akzeptanztests §  Usability Tests

© 2014 andrena objects ag

18

Definition of done

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Tests als integraler Bestandteil des Softwareentwicklungsprozesses

§  Keine Anforderung ist „fertig“, bis das Testen abgeschlossen ist

§  dies betrifft im Zweifelsfalle alle Quadranten

§  d.h. automatisierte und manuelle Regressionstests

§  Akzeptanzkriterien der Endanwender werden in lauffähige Tests umformuliert

© 2014 andrena objects ag

19

Agenda

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

§  Ziel dieses Vortrags

§  Grundzüge des agilen Testens

§  Voraussetzungen für agiles Testen

§  Vorstellung der agilen Testquadranten

§  Die Testpyramide

§  Anwendungsbeispiele für die Umsetzung agiler Tests

§  Fazit, Fragen, Diskussion, Kontakt

© 2014 andrena objects ag

20

Die Testpyramide ?

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Nein, eher ein Abbild der Realität in vielen Projekten...

© 2014 andrena objects ag

21

Die Testpyramide

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Dauer Anzahl

Automatisierte Unit Tests

Automatisierte Integrations- und Komponenten - Tests

Automatisierte Systemtests

Funktionale Tests

© 2014 andrena objects ag

22

Die Testpyramide - Umsetzungshinweise

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Hinweise

§  Zielorientierter Einsatz von Werkzeugen

§  Anwender und Entwickler arbeiten gemeinsam

§  Lernorientierung hinsichtlich manueller Tests: Gelerntes zur Verbesserung heranziehen

© 2014 andrena objects ag

23

Agenda

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

§  Ziel dieses Vortrags

§  Grundzüge des agilen Testens

§  Voraussetzungen für agiles Testen

§  Vorstellung der agilen Testquadranten

§  Die Testpyramide

§  Anwendungsbeispiele für die Umsetzung agiler Tests

§  Fazit, Fragen, Diskussion, Kontakt

© 2014 andrena objects ag

24

Quadrant 1 / Ebene 1: JUnit

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

© 2014 andrena objects ag

25

Quadrant 2 / Ebene 2: JUnit

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

© 2014 andrena objects ag

26

Quadrant 2 / Ebene 2/3: FitNesse

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

DB

WP- DL

HSQL-DB

RFC

© 2014 andrena objects ag

27

Quadrant 2 / Ebene 2/3: FitNesse

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

© 2014 andrena objects ag

28

Quadrant 2 / Ebene 3: Selenium

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

© 2014 andrena objects ag

29

Quadrant 3 – manuelles Testen I

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Hauptziel agile Softwareentwicklung: Das Ausliefern und Bereitstellen neuer Funktionalitäten nach jedem Entwicklungssprint Anwenden des manuellen Testens um

§  nicht-triviale Fehler aufzufinden

§  Definierter Soll-Zustand vs. „Was wäre wenn?“

§  zu erforschen, wie eine Anforderung getestet werden kann

§  Tests auszuführen, deren Automatisierung zu aufwändig bzw. „teuer“ ist

§  „Sonderkonstellationen“ abzudecken

© 2014 andrena objects ag

30

Quadrant 3 – manuelles Testen II

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Exploratives Testen als leichtgewichtiger Ansatz für manuelle Tests

§  Paralleles Testdesign und -ausführung

§  Im Gegensatz zu „fixen“ Testvorgaben nach Plänen (die meist allerdings gewisse Interpretationsspielräume offen lassen)

§  Vorgehen nach einem strukturiertem Ansatz

§  Beinhaltet Protokolle, auch als Inspiration für künftige Testsitzungen

§  Letzter Test beeinflusst den nächsten Test

§  Kein Widerspruch zu klassischen Testplänen, sondern ergänzend

© 2014 andrena objects ag

31

Quadrant 3 – manuelles Testen III

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Analogie:

Software-Tester vergleichbar einem Tourist §  Man sieht nicht alles, bzw. nur bestimmte Teile der Software

§  Es gibt viele Wege, um das Ziel zu erkunden

§  Man möchte sicherstellen, dass man die wichtigsten Punkte gesehen hat

Zutaten:

§  Feste Zeitvorgabe (Timebox)

§  Dokumentation (Testprotokoll)

§  Umfang und Art der Test-Tour (Scope)

Vorgehen:

§  Spezifische Touren (FedEx, Supermodel...)

© 2014 andrena objects ag

32

Agenda

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

§  Ziel dieses Vortrags

§  Grundzüge des agilen Testens

§  Voraussetzungen für agiles Testen

§  Vorstellung der agilen Testquadranten

§  Die Testpyramide

§  Anwendungsbeispiele für die Umsetzung agiler Tests

§  Fazit, Fragen, Diskussion, Kontakt

© 2014 andrena objects ag

33

Fazit

Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

§  Testautomatisierung und agiles Testen erhöhen die Testabdeckung und damit mittelbar die Code-Qualität.

§  Eine hohe Testabdeckung ist elementare Voraussetzung für Refactorings

§  Kosten zur späten Fehlerbehebung sinken deutlich

§  Entwicklungsteams können eine hohe Entwicklungsgeschwindigkeit beibehalten

§  Agiles Testen unterstützt insofern Entwickler dabei, guten Code zu entwickeln.

§  Guter Code ist das Ziel eines jeden Entwicklers – und wirtschaftlich sinnvoll !

© 2014 andrena objects ag

34 Lars Alvincz, Daniel Knapp | Agiles Testen | Entwicklertag 2014, Karlsruhe

Lars Alvincz

lars.alvincz@andrena.de

07 21 - 61 05 - 122

______________________

Daniel Knapp

daniel.knapp@andrena.de

07 21 - 61 05 - 13 66

______________________

Weitere Fragen?

meet the SPEAKER@speakerlounge 1. OG DIREKT ÜBER DEM EMPFANG

Recommended