Test First yes we can - ASQF€¦ · © 2012 Experian Limited. All rights reserved. 1 Experian...

38
1 © 2012 Experian Limited. All rights reserved. Experian Public. Test First yes we can ! ASQF Regionalgruppentreffen Agilität NRW Köln, MID GmbH 23.10. 2012 Ulrich Freyer-Hirtz

Transcript of Test First yes we can - ASQF€¦ · © 2012 Experian Limited. All rights reserved. 1 Experian...

  • 1 © 2012 Experian Limited. All rights reserved. Experian Public.

    Test First – yes we can !

    ASQF Regionalgruppentreffen Agilität NRW Köln, MID GmbH 23.10. 2012 Ulrich Freyer-Hirtz

  • 2 © 2012 Experian Limited. All rights reserved. Experian Public.

    Agenda

    Vorstellung Das Problem - Motivation Der Prozess Die Werkzeuge Diskussion

  • 3 © 2012 Experian Limited. All rights reserved. Experian Public.

    Vorstellung Ulrich Freyer-Hirtz

    Dipl-.Ing. Elektrotechnik / Uni Duisburg Entwicklung / Product Management Embedded Systems / ZN GmbH

    IT Berater Programmierung – Test / Valtech GmbH IT Berater QA / SQS AG

    Team Lead QA / Experian Deutschland GmbH

  • 4 © 2012 Experian Limited. All rights reserved. Experian Public.

    Click to edit Master subtitle style

    © 2012 Experian Limited. All rights reserved. Experian and the marks used herein are service marks or registered trademarks of Experian Limited. Other products and company names mentioned may be the trademarks of their respective owners. No part of this copyrighted work may be reproduced, modified, or distributed in any form or manner without prior written permission of Experian Limited. Experian Public.

    Führende Lösungen in den Bereichen: Digitales Marketing, Zielgruppendaten und Datenmanagement

  • 5 © 2012 Experian Limited. All rights reserved. Experian Public.

    Experian Marketing Services Weltweit führende Lösungen im digitalen Marketing

    ● 19 Standorte in 13 Ländern ● > 1.300 Mitarbeiter weltweit ● > 80 Mitarbeiter in Deutschland ● Standorte: Düsseldorf, München ● Regelmäßige Veröffentlichung von

    Studien und White Papern www.experian.de/wissenscenter

    Experian Marketing Services Seit > 10 Jahren führender Anbieter am deutschen Markt Leistungsstarke E-Mail Marketing Technologie kombiniert mit strategischen Beratungsleistungen und Creative Services in den Bereichen Konzeption, Design und HTML Programmierung.

    E-Mail Marketing

    Kundenakquise und –ausbau via Facebook & Co. Social CRM zur Bereitstellung und Verknüpfung umfangreicher Zielgruppendaten und Microtargeted Ads auf Facebook.

    Social Media Marketing

    Zielgruppendaten und Datenmanagement Datenbereitstellung und –anreicherung mit der Konsumenten.-segmentierung Mosaic für On- und Offline-Kommunikation.

    Targeting Services

    www.experian.de/marketing-services

  • 6 © 2012 Experian Limited. All rights reserved. Experian Public.

    Vorstellung Team

    Programmierer

    Product Owner

    QA / Tester

  • 7 © 2012 Experian Limited. All rights reserved. Experian Public.

    Arbeiten Sie Test First? Automatisieren Sie Tests, bevor der

    Anwendungscode (vollständig) programmiert wurde?

    Wenn nein, warum nicht? Geht nicht? Warum nicht?

  • 8 © 2012 Experian Limited. All rights reserved. Experian Public.

    Das Problem

    Ich kann ohne laufende

    Anwendung nicht Testen und

    vor allem nicht automatisieren.

    Also warte ich bis die Programmierer

    mir etwas liefern.

  • 9 © 2012 Experian Limited. All rights reserved. Experian Public.

    Das Problem

    Tester, du musst noch

    warten bis ich fertig bin.

    Ich bin aber fast fertig,

    ich muss nur noch ...

  • 10 © 2012 Experian Limited. All rights reserved. Experian Public.

    Das Problem

    Tester, du musst noch

    warten bis ich fertig bin.

    Ich bin aber fast fertig,

    ich muss nur noch ...

    Arrrgh!

    !!! 90% Syndrom Alarm !!!

  • 11 © 2012 Experian Limited. All rights reserved. Experian Public.

    Agilist: Stop ! Einwand!!

    Wie könnt ihr anfangen zu

    entwickeln, wenn ihr nicht

    wisst, wann ihr fertig seid,

    also wie „fertig“ definiert

    ist, und wann das Feature

    akzeptiert wird ??

  • 12 © 2012 Experian Limited. All rights reserved. Experian Public.

    Tester: Stop ! Einwand!!

    Testen ist nicht nur die

    Ausführung von Tests.

    Tests müssen

    systematisch ermittelt

    werden. Das kann man

    auch ohne Code tun.

  • 13 © 2012 Experian Limited. All rights reserved. Experian Public.

    Dieser Vortrag:

    Es ist sogar möglich

    Automatisierungs Code zu

    schreiben, bevor die

    Anwendung da ist. Gegen

    diese „ausführbaren

    Spezifikationen“ wird dann

    entwickelt.

  • 14 © 2012 Experian Limited. All rights reserved. Experian Public.

    Retrospektive: Idee 1

    Wir führen vor Ende des

    Sprints / der Iteration

    eine Testphase ein. Dann

    Stellen wir sicher,das am

    Ende alles ausgeliefert

    werden kann

  • 15 © 2012 Experian Limited. All rights reserved. Experian Public.

    Problem

    Ich sitze am Anfang

    des Sprints rum und

    warte bis irgendwas

    fertig ist.

    Wenn ich fertig gecodet habe,

    muss ich warten, bis die Sachen

    Fertig getestet sind und habe

    nichts sinnvolles zu tun.

  • 16 © 2012 Experian Limited. All rights reserved. Experian Public.

    Problem

    Ich sitze am Anfang

    des Sprints rum und

    warte bis irgendwas

    fertig ist.

    Wenn ich fertig gecodet habe,

    muss ich warten, bis die Sachen

    Fertig getestet sind und habe

    nichts sinnvolles zu tun.

    Lean: Wartezeiten sind Verschwendung !!

  • 17 © 2012 Experian Limited. All rights reserved. Experian Public.

    Retrospektive: Idee 1

    Ok, das hat nicht funktioniert.

    Lass uns doch im folgenden Sprint testen,

    was vorher implementiert wurde.

    So sind alle immer ausgelastet. Dev n n+1 n+2

    Test n n+1

  • 18 © 2012 Experian Limited. All rights reserved. Experian Public.

    Problem

    Oh, Mann hier funktioniert

    ja gar nichts. Muss ich das

    Ticket wieder zurückgeben..

    So werden wir nie fertig!

    Kommt der wieder mit so

    altem Kram an. Ich habe gerade

    anderes zu tun.

    Ich muss die aktuellen Stories

    fertig stellen!

    Und wann soll ich eigentlich die alten

    Stories testen (Regression)?

  • 19 © 2012 Experian Limited. All rights reserved. Experian Public.

    Zusammenfassung: Testen als nachgelagerter Prozess ist immer eine schlechte Idee.

    Die Trennung der Programmier- und Testprozesse führt zu: Verschwendung durch Leerlaufzeiten Verschwendung durch zu viele „Task-Switches“ Eine „wir“ und „die“ Mentalität (die Entwickler haben wieder Mist geliefert – die Tester nerven wieder mit Bugs). Dies führt zu Demotivation und Unproduktivität! Es muss vorab klar definiert sein, was entwickelt werden soll und wann es fertig ist. Testen, Spezifizieren und Entwickeln muss parallel in möglichst kleinen Schritten mit möglichst großer Kommunikationsbandbreite ausgeführt werden! Es besteht ein hoher Bedarf an Automatisierung, um bei den „Taktraten“ auch Regressionstests ausführen zu können.

  • 20 © 2012 Experian Limited. All rights reserved. Experian Public.

    Lean / Agile Sicht

    Wie kannst Du anfangen zu entwickeln,

    wenn Du nicht weißt,was gebaut werden soll?

    Insbesondere was der potentielle Anwender will! Jede Story braucht Akzeptanzkriterien.

    Man versteht die Story häufig erst,

    wenn man mit ihr „rumspielt“.

    Mach die Dinge ganz -

    Eins nach dem Anderen!

  • 21 © 2012 Experian Limited. All rights reserved. Experian Public.

    Agil dreht die Welt

  • 22 © 2012 Experian Limited. All rights reserved. Experian Public.

    Was tun?

    Iterativ inkrementelles Vorgehen

    Interdisziplinäre Teams

    Start mit Tests (Test first)

    SelbstorganisierteTeams

    Das gesamte Team ist für Qualität verantwortlich (Whole Team Approach)

    Hoher Grad an Autoamtion

    Dies führt zu nicht zu unterschätzenden Änderungen der: Prozesse Kultur Rollenbeschreibungen Hierarchien ...

  • 23 © 2012 Experian Limited. All rights reserved. Experian Public.

    Änderung: Scrum, ein (!) agiler Ansatz (http://de.wikipedia.org/wiki/Scrum)

  • 24 © 2012 Experian Limited. All rights reserved. Experian Public.

    Agile Praktiken (nicht nur Scrum)

    Gesamtes Team (!):

    Regelmässige Diskkussion der Anforderungen,bevor sie in den „Sprint Backlog“ gelangen.

    Iterationsplanung mit Zusage der zu erledigenden Anforderungen durch das Team.

    Iterationsplanung mit erstellen der konkreten Teilaufgaben inkl. Definition der Akzeptanzkriterien durch das gesamt Team und PO

    Definition von Definitions/Level of Done, in denen definiert wird, wann Aufgaben erledigt sind und welche Qualitätskriterien erfüllt werden müssen.

    Automatisierung, Automatisierung, Automatisierung

    Demo Meeting, auf dem den Stakeholdern das Erreichte präsentiert wird und z.B. Akzeptanztests „vorgeführt“ werden.

  • 25 © 2012 Experian Limited. All rights reserved. Experian Public.

    Genug geredet – wie geht dat nun? - Übersicht -

    Schätzmeeting → Alle lernen die Anforderung kennen, klären Fragen, schätzen den Aufwand und klären Akzeptanzkriterien.

    Iterationsplanungsmeeting → Auswahl der Stories und Definition konkreter Aufgaben inklusive der Akzeptanztests. Identifizierung von notwendigen Vorbedingungen..

    Sprint / Iteration

    Gemeinsam - Spezifikation und Implementierung erster Gutfall - Testfall.

    Parallel- Implementierung Code und Ermittlung weiterer Testfälle.

    Interaktiv – Ermittlung und Automatisierung weiterer Testfälle und Kodierung zugehörigen Codes.

    Abstimmung Applikationsverhaltens anhand der Testfälle mit dem PO.

    Abnahme Story

    Test aller implementierten Stories

    Demo Meeting

    Vorstellen der implementierten Stories für interessierte Stakeholder.

    Übersicht der durchgeführten Tests.

    Nachweis zu Regressionstests.

    Offizielle Abnahme durch den PO

  • 26 © 2012 Experian Limited. All rights reserved. Experian Public.

    Beispiel Login – Schätzmeeting http://www.allaboutagile.com/user-story-example/

  • 27 © 2012 Experian Limited. All rights reserved. Experian Public.

    Beispiel Login – Schätzmeeting http://www.allaboutagile.com/user-story-example/

    Ok, wir verstehen die Story und wissen, was zu tun ist. Die ist

    nicht sehr komplex und aufwendig, also schätzen wir sie mit 3.

  • 28 © 2012 Experian Limited. All rights reserved. Experian Public.

    Iteration Planung. Die Login Story wurde vom Team in den Sprint genommen.

    Die z.T. vorher aufgeschriebenen Akzeptanzkriterien werden noch mal analysiert und Testthemen definiert.

    Test valides Login

    Test alle Fehlerfälle Test „Remember me“

    Welche Browser? Nach drei fehlerhaften Eingaben wird der User account gesperrt.

    Test Ergebnis in max. 10 sec. „Forgot Passwort“ Storie ist nicht

    Teil dieser Story! .....

  • 29 © 2012 Experian Limited. All rights reserved. Experian Public.

    Im Sprint. Start mit dem einfachen Gut-Fall „Valides Login“ - gemeinsam!

    User = new User() . WithName(„[email protected]“)

    .withPwd(„4711“)

    LoginPage loginPage =driver.openUrl(„http://...“) OverviewPage overviewPage = loginPage.login(user)

    overviewPage.checkSubscribercontent(user)

    Anwendungscode

    Test passed!

    mailto:[email protected]

  • 30 © 2012 Experian Limited. All rights reserved. Experian Public.

    Die neuen Testfälle schlagen meist fehl. Der Programmierer erweitert den Code, bis die Tests „grün“ sind. Der Programmierer unterstützt den QA in Programmierfragen. PO steht für Fragen zur Verfügung, z.B. Feldergrößen müssen noch definiert werden. PO reviewed Testfälle.

    Im Sprint. Start mit dem einfachen Gut-Fall „Valides Login“.

    Testfall Ermittlung Mehr Testfälle automatisieren

    Mehr Anwendungscode

  • 31 © 2012 Experian Limited. All rights reserved. Experian Public.

    Demo (Review) Meeting. Die realisierten Stories werden vorgeführt.

  • 32 © 2012 Experian Limited. All rights reserved. Experian Public.

    Vorteil

    Wenig Taskwechsel, kein „Ticket Ping Pong“.

    Klare Kommunikation von Fehlern durch die Tests.

    Klarer Status des Fortschritts.

    Klare Definition of Done: Wenn alle Tests „grün“ sind.

    Miteinander statt gegeneinander.

    Regressionstests, die nahezu ständig laufen.

    Zielorientierte Arbeit – keine goldenen Klinken

  • 33 © 2012 Experian Limited. All rights reserved. Experian Public.

    Voraussetzungen

    Rollen müssen definiert sein.

    PO muss zur Verfügung stehen, und entscheiden können!

    Interdisziplinäre Teams

    Tester müssen sich auf Technik einlassen.

    Programmierer müssen an den Sinn von Tests glauben.

  • 34 © 2012 Experian Limited. All rights reserved. Experian Public.

    Tools

    FitNesse

    Spock /Groovy

    jBehave

    Concordia

    Cucumber

    Jubula

    Selenium

    jUnit

    TestNG

  • 35 © 2012 Experian Limited. All rights reserved. Experian Public.

    FitNesse

    • Kombination aus Wiki und Treiber ermöglicht freies Schreiben der Tests!

  • 36 © 2012 Experian Limited. All rights reserved. Experian Public.

    Spock / Groovy Tests werden im Code formuliert und dann ausprogrammiert. Meistens in einer „Given-When-Then“ Struktur

    Def „Test mit einem validen User“(){

    Given: „Ein User mit Passwort “ Code

    When: „Das Login ausgeführt wird.“ Code

    Then: „Wird die Startseite geladen“ Code

    And: „die Daten von Erika werden angezeigt.“ Code

    Where: „Valide User“ [email protected] |123xyz | ok [email protected] | abcd123 | ok }

    mailto:[email protected]:[email protected]

  • 37 © 2012 Experian Limited. All rights reserved. Experian Public.

    Selenium Suite of WebGUI Testtools. Unterstützt Multi-Browser, Multi-Language, ...

    Public class LoginPage { Private WebDriver driver = new FirefoxDriver(); Private String editBoxUserId = „name“; Private String editBoxPwdId = „pwd“ Private String buttonLoginId = „submit“ Private String chkBoxRememberId = „remember“ Public OverviewPage login(User user, boolean remember){ driver.findElement(editBoxUserId).sendKeys(user.name) driver.findElement(editBoxPwdId).sendKeys(user.name) driver.findElement(chkBoxRemember).set(remember) driver.findElement(buttonLoginId).click(); Return new OverviewPage }

    }

    Einsatz des „Page Object“ Musters. Dies kann als ausführbare Spezifikation verwendet werden.

  • 38 © 2012 Experian Limited. All rights reserved. Experian Public. 38 © 2012 Experian Limited. All rights reserved. Experian Public.

    Vielen Dank für Ihre Aufmerksamkeit!