Agiles Testen (German)

34
COPYRIGHT, TECHTALK - WWW.TECHTALK.CH CHRISTIAN HASSA, TECHTALK [email protected], @CHRISHASSA Swiss Testing Day Zürich, 13. März 2013 Testen in agilen Projekten Wettlauf mit Entwicklung oder gemeinsames Ziel?

description

Testen in agilen Projekten, Swiss Testing Day Zürich 2013 Agile Projekte verursachen massive Probleme im klassischen Testvorgehen: Detailspezifikationen sind erst (wenn überhaupt) kurz vor der Implementierung verfügbar und der Test soll gleichzeitig mit der Entwicklung am Ende jeder Iteration abgeschlossen sein. Bei Iterationslängen von wenigen Wochen verursacht das beträchtlichen Mehraufwand für den Test, der sich noch dazu am Ende der Iteration konzentriert, wodurch das Ziel eines voll getesteten Systems am Ende jeder Iteration oft nicht erreicht werden kann. Der Vortrag stellt drei wichtige Erfolgsrezepte für Testen in agilen Projekten vor (1. Multifunktionale Teams, 2. Testautomatisierung und 3. Spezifikation mit Beispielen) und zeigt, welche Änderungen notwendig sind, damit Test und Entwicklung effizient in agilen Projekten zusammenarbeiten. Neben der Vorstellung von wichtigen Konzepten für agiles Testen (agile Testquadranten, Testautomatisierungspyramide und Specification-By-Example) zeigt der Vortrag auch, wie diese Methoden mit Werkzeugen unterstützt werden können, und berichtet von deren praktischer Anwendung in unterschiedlichen Projekten. Video: http://www.youtube.com/watch?v=LL2kOToKUF0

Transcript of Agiles Testen (German)

Page 1: Agiles Testen (German)

COPYRIGHT, TECHTALK - WWW.TECHTALK.CH

CHRISTIAN HASSA, TECHTALK

[email protected], @CHRISHASSA

Swiss Testing Day Zürich, 13. März 2013

Testen in agilen ProjektenWettlauf mit Entwicklung oder gemeinsames Ziel?

Page 2: Agiles Testen (German)

COPYRIGHT, TECHTALK - WWW.TECHTALK.CH

TechTalk auf einen Blick

• Agile Software Entwicklung• Beratung und Umsetzung (Nearshoring)• Standorte: Zürich, Wien, Budapest• Ca. 50 Mitarbeiter• Gegründet: 1993

TechTalk office, Vienna/Austria

Page 3: Agiles Testen (German)

4

Herausforderungen

•Was tun zu Projekt- und Sprintbeginn?•Wann wird das Sprintergebnis getestet?• Regressionstests?

Page 4: Agiles Testen (German)

5

Erfolgsrezepte

• Cross-funktionale Teams• Testautomatisierung• Spezifikation mit Beispielen

5

Page 5: Agiles Testen (German)

COPYRIGHT, TECHTALK - WWW.TECHTALK.CH

Cross-funktionale Teams

Mix aus RollenSchnelles Feedback

Page 6: Agiles Testen (German)

7

Wasserfall im Sprint

Planung

Analyse

Design

Implement.

Test

Deploy

Planung

Analyse

Design

Implement.

Planung

Analyse

Design

Implement.

Sprint 1 Sprint 2 Sprint 3

Test

Deploy

Test

DeployKonflikt

Die “eigentliche” Iterationsdauer

Page 7: Agiles Testen (German)

8

Cross-funktionale Arbeit

Sprint 1 Sprint 2 Sprint 3

Kurze Iteration

US4

Plan

Implement & autom. test

US5

Plan

Implement & autom. test

US2

Plan

Implement & autom. test

US3

Plan

Implement & autom. test

US6

Plan

Implement & autom. test

US1

Plan

Implement & autom. test

US7

Plan

Implement & autom. test

US8

Plan

Implement & autom. test

US9

Plan

Implement & autom. test

Explo

ratory Test

Spezifikation und Test

Mitwirkung DefinitionAkzeptanzkriterien

ZusammenarbeitAutomatisierung

Fehler vermeiden anstattnur Fehler zu finden!

Erweiterung“Test Cases” +

Ziele Explor. Test

LimitierungWIP

gemein-same

manuelleTestaus-führung

Retrospektive:OptimierungZusammenarbeit

Page 8: Agiles Testen (German)

9

Regression

If something

hurts,do it

more

often!(frequency reduces difficulty)

Test-auto-

matisierung

Page 9: Agiles Testen (German)

10

Testautomatisierung wird teuer,wenn …

• man versucht,

manuelle Tests zu

automatisieren

• Tests durch die

Automatisierung

unlesbar werden

• man nach Abschluss

der Entwicklung

automatisiert

Struktur

Lesbarkeit

Zeitpunkt

Page 10: Agiles Testen (German)

11

StrukturManueller Test

Überprüft Mehrere Featuresin Kombination

Struktur ACT-ASSERT-ACT-ASSERT-ACT-ASSERT-…

Abhängige FeaturesLanger Testpfad:änderungsanfälligUrsache/Wirkungschwer zu korrelieren

Automat. Check

Isolierter Aspekteines Features

ARRANGE –ACT –ASSERT

Unabhängige FeaturesKurzer Testpfad:robust f. ÄnderungenUrsache/Wirkungleichter zu korrelieren

Page 11: Agiles Testen (German)

12

Testautomatisierungspyramide

User-journeys

Akzeptanz-kriterien

Units

ExplorativesTesten

nach Mike Cohn

viele

wenige

schwieriger

einfacher

Automatisierbarkeit

Page 12: Agiles Testen (German)

13

// Go to web page 'http://localhost:40001/' using new browser instanceBrowserWindow localhostBrowser = BrowserWindow.Launch(

new System.Uri(this.RecordedMethod1Params.Url));

// Click 'Register found item' linkMouse.Click(uIFundstückerfassenHyperlink, new Point(56, 9));

// Click 'Save' buttonMouse.Click(uISpeichernButton, new Point(44, 14));

int fundNr1 = int.Parse(uIFundNr127Pane.InnerText.Substring(9));

// Click 'Register found item' linkMouse.Click(uIFundstückerfassenHyperlink, new Point(63, 7));

// Click 'Save' buttonMouse.Click(uISpeichernButton, new Point(34, 11));

int fundNr2 = int.Parse(uIFundNr128Pane.InnerText.Substring(9));

Assert.IsTrue(fundNr1 + 1 == fundNr2);

// Click 'Close' buttonMouse.Click(uICloseButton, new Point(26, 11));

Lesbarkeit

Page 13: Agiles Testen (German)

14

Ein lesbarer TestfallSzenario: Ein neues Fundstück bekommt die nächste Fundnummer des laufenden Jahres

Angenommen das letzte Fundstück des laufenden Jahres hatte die Fundnummer 145

Wenn ich ein neues Fundstück erfasse

Dann hat das letzte Fundstück des laufenden Jahres die Fundnummer 146

Page 14: Agiles Testen (German)

15

Zeitpunkt des Tests

Akzeptanzkriterien(ATDD, BDD)

Unit Tests(TDD)

Anwendersicht

Technische Sicht

Explorative Tests Workflow Tests

Performance, Skalierbarkeit, Sicherheit, …

Def

init

ion

de

s P

rod

ukt

sK

ritik am P

rod

ukt

Neue Dimension: Definition des Produkts!Synergie: Spezifikation für Anforderungen und Test!

Agile Testing Quadrants, Brian Marick

Page 15: Agiles Testen (German)

18

Besprechung von Akzeptanzkriterien …

public void TestInitialOrderDiscount()

{

Customer newCustomer = new Customer();

Order newOrder = new Order(newCustomer);

newOrder.AddBook(

Catalog.Find(“ISBN-0955683610”)

);

Assert.Equals(33.75,

newOrder.Subtotal);

}

Register as “bart_bookworm”Go to “/catalog/search”Enter “ISBN-0955683610”Click “Search”Click “Add to Cart”Click “View Cart”Verify “Subtotal” is “$33.75”

Wir wollen neue Benutzer ermutigen, etwas zu bestellen. Daher bieten wir 10% Rabatt für die erste Bestellung eines Kunden an.

Originalidee Illustration: George Dinwiddiehttp://blog.gdinwiddie.com

Page 16: Agiles Testen (German)

19

Spezifikation mit Beispielen

Beispiele …• machen abstrakte

Beschreibungen besserverständlich

• werden normalerweise nichtformalisiert ausgetauscht/ dokumentiert Brian Marick

Beispiele Tests

Anforderungen

bestehen aus

beschreiben verifizierenErfüllung von

Page 17: Agiles Testen (German)

20

Besprechung von Akzeptanzkriterien …

public void TestInitialOrderDiscount()

{

Customer newCustomer = new Customer();

Order newOrder = new Order(newCustomer);

newOrder.AddBook(

Catalog.Find(“ISBN-0955683610”)

);

Assert.Equals(33.75,

newOrder.Subtotal);

}

Register as “bart_bookworm”Go to “/catalog/search”Enter “ISBN-0955683610”Click “Search”Click “Add to Cart”Click “View Cart”Verify “Subtotal” is “$33.75”

Wir wollen neue Benutzer ermutigen, etwas zu bestellen. Daher bieten wir 10% Rabatt für die erste Bestellung eines Kunden an.

Originalidee Illustration: George Dinwiddiehttp://blog.gdinwiddie.com

Page 18: Agiles Testen (German)

21

… illustriert mit formalisierten Beispielen

Angenommen der Benutzer hat noch keine Bestellung

Wenn der Benutzer ein Buch zum Preis von EUR 37,50 in

den Einkaufwagen legt

Dann zeigt der Einkaufswagen eine Zwischensumme von

EUR 33,75.Originalidee Illustration: George Dinwiddiehttp://blog.gdinwiddie.com

Page 19: Agiles Testen (German)

22

Aufdeckung impliziter Erwartungen

Eigentlich stimmt das nicht ganz:Bücher im Angebot sollen davon ausgenommen werden.

Originalidee Illustration: George Dinwiddiehttp://blog.gdinwiddie.com

Page 20: Agiles Testen (German)

23

Zusammenarbeit: 3 Amigos

“HappyPath”

TechnischeMachbarkeit

Ausnahmen, Grenzfälle

Originalidee Illustration: George Dinwiddiehttp://blog.gdinwiddie.com

Page 21: Agiles Testen (German)

24

Abstrakte Akzeptanzkriterien

Als Webshop Besucherwill ich Bücher in einen Warenkorb legenweil ich mehrere Bücher auf einmal bezahlen können will.

Bücher können dem Warenkorb hinzugefügt werden

Bücher können aus dem Warenkorb entfernt werden

Der Warenkorb ist zu Beginn leer

Das gleiche Buch kann mehrmals hinzugefügt werden

Page 22: Agiles Testen (German)

25

Beispiele für Akzeptanzkriterien

Als Webshop Besucherwill ich Bücher in einen Warenkorb legenweil ich mehrere Bücher auf einmal bezahlen können will.

Bücher können dem Warenkorb hinzugefügt werden

Angenommen ich habe einen leeren Warenkorb

Wenn ich das Buch “Harry Potter” in den Warenkorb lege

Dann sollte mein Warenkorb 1 Exemplar von “Harry Potter” enthalten

Page 23: Agiles Testen (German)

26

Als Webshop Besucherwill ich Bücher in einen Warenkorb legenweil ich mehrere Bücher auf einmal bezahlen können will.

Bücher können dem Warenkorb hinzugefügt werden

Beispiele für Akzeptanzkriterien

Angenommen mein Warenkorb enthält 1 Exemplar von “Harry Potter”

Wenn ich das Buch “Harry Potter” in den Warenkorb lege

Dann soll mein Warenkorb 2 Exemplare von “Harry Potter” enthalten

Das gleiche Buch kann mehrmals hinzugefügt werden

Page 24: Agiles Testen (German)

27

Struktur der Beispiele

Angenommen mein Warenkorb enthält 1 Exemplar von “Harry Potter”

Wenn ich das Buch “Harry Potter” in den Warenkorb lege

Dann soll mein Warenkorb 2 Exemplare von “Harry Potter” enthalten

Titel: Beschreibt Intention/abstraktes Akzeptanzkriterium

Arrange: Kontext, Zustand des Systems vor Ausführung

Act: Ausführung des Features

Assert: Prüfung beobachtbares Verhalten

Und eine Warnung wird ausgegeben: “Gleiches Buch hinzugefügt”

Triple-Aconstraint“Checks”

VerkettungvonSchritten

Das gleiche Buch kann mehrmals hinzugefügt werden

Page 25: Agiles Testen (German)

28

Fachlich lesbare Automatisierung

Angenommen mein Warenkorb enthält 1 Exemplar von “Harry Potter”

Wenn ich das Buch “Harry Potter” in den Warenkorb lege

Dann sollte mein Warenkorb 2 Exemplare von “Harry Potter” enthalten

System

„Step Definitions“ binden einzelne Schrittean eine automatisierbare Schnittstelle der Applikation

AutomatisierbareSchnittstelle

UIAutomatisierung

Automatisierung muss nicht unbedingt über das UI erfolgen.

Unterstützung der Automatisierbarkeit mit der Entwicklung.

Page 26: Agiles Testen (German)

29

Manuelles Testen ist immer notwendig!

Userjourneys

Akzeptanz-kriterien

Units

ExplorativesTesten

Source: Mike Cohn

viele

wenige

schwieriger

einfacher

Automatisierbarkeit

ManuellePrüfungwennUser StoryDone

Hauptpfadedurch Applikation

Nicht entdeckteAkzeptanzkriterien

Keine/(wenige)manuelleRegressions-checks

Wenige Pfadesind ausreichen

Mehr Zeit fürExploration

Page 27: Agiles Testen (German)

30

Fallbeispiel: Aufwand vs. Nutzen

• Individualentwicklung: Finanzdienstleistungsbereich• Testaufwand klassisches Vorgehen: 15% des Gesamtaufwands• Einführung agiles Vorgehen: Auswirkung auf Anteil Testaufwand

Projekt GesamtaufwandProjekt in PT

TestaufwandAnteil

Agiles Projekt mit manuellen Test

~200 35%

Agiles Projektmit Testautomatisierung

~600 19%

Page 28: Agiles Testen (German)

31

Exploratives Testen

Design Ausführung Entdeckung

Simultan in einer time-boxed Sitzung

• Ziel: Entdeckung von impliziten Annahmen, neue Akzeptanzkriterien, unerwartetes Verhalten

• Testcharta mit priorisierten Zieldefinitionenfür unterschiedliche Explorative Testing Sitzungen

Lernen

Page 29: Agiles Testen (German)

32

Beispiel: ET-Sitzungsdefinitionen

Bereich der Applikation:Feature, Modul, Workflow, ...

Ressourcen:Werkzeug, Konfiguration, Datensets,Technik, abhängiges Feature, …

Explorationsziel:Inkonsistenzen, Unsicherheiten,RisikenVerletzung von: spezifizierten ACs,Geschäftsregeln,“Menschenverstand”,Nicht-funktionale Anforderungen,Cross-Cutting Concerns, …

Quelle Template: Elisabeth Hendrickson

Page 30: Agiles Testen (German)

33

Nie wieder Bugs?

Verletzte dokumentierteAnnahmen

Vergessene dokumentierteAnnahmen

Vergessene impliziteAnnahmen

Neue Annahmen aufgrunddes Ergebnisses

UnerwartetesFehlverhalten

manuelleExploration

automatischeRegression

Root Cause Analysevon Bugs

Definition of Done

Nicht funktionaleAnforderungen

Cross-cuttingConcerns

Eindrücke ausder Planung

RisikoanalyseSource Code

TeamKommunikation

Quellen für möglicheExplorationsziele

Page 31: Agiles Testen (German)

35

Werkzeuge

User-journeys

Akzeptanz-kriterien

Units

ExplorativesTesten

Test Manager 2010Virtual Lab ManagementCodedUI

CodedUI, Selenium, …

MS-Test, NUnit, …

Fachlich lesbare Test:.NET, Java, Ruby, JavaScript, PHP, C++

Page 32: Agiles Testen (German)

38

Literatur

Elisabeth HendricksonExplore IT!

Gojko AdzicSpecification byExample

Lisa CrispinJanet GregoryAgile Testing

Page 33: Agiles Testen (German)

39

Erfolgsrezepte Zusammenfassung

• Crossfunktionale Teams• Mix aus Rollen: schnelles Feedback und Fehlerbehebung• Gemeinsames Ziel: Fertig getestetes Produkt am Sprintende• Exploratives Testen: Testcharta mit priorisierten Zielen

• Testautomatisierung (Struktur, Lesbarkeit, Zeitpunkt)• Verringerung der Regressionskosten• Automatisierbarkeit unterstützt manuelles Testen, Entwicklung

und Design der Applikation• Richtiger Mix aus manuellen und automatisierten Tests

• Spezifikation mit Beispielen• Spezifikationstechnik für gemeinsames Verständnis der Details• Fachlich lesbare Tests als Spezifikation• „Lebende Dokumentation“ des Systems

Page 34: Agiles Testen (German)

COPYRIGHT, TECHTALK - WWW.TECHTALK.CH

Nutzen Sie die Chancenagiler Testmethodik!

KONTAKT UND FRAGEN

Christian Hassa

[email protected]

@chrishassa