Fail fast Fail cheap - Agile Development, Testing & Delivery

65
Fail Fast Fail Cheap Fail Forward Agile Development, Testing & Delivery Léon Tebbens - Lead IT - Alliander - @leontebbens - http://leontebbens.eu

Transcript of Fail fast Fail cheap - Agile Development, Testing & Delivery

Page 1: Fail fast Fail cheap - Agile Development, Testing & Delivery

Fail Fast Fail Cheap

Fail Forward

Agile Development, Testing & Delivery Léon Tebbens - Lead IT - Alliander - @leontebbens - http://leontebbens.eu

Page 2: Fail fast Fail cheap - Agile Development, Testing & Delivery
Page 3: Fail fast Fail cheap - Agile Development, Testing & Delivery
Page 4: Fail fast Fail cheap - Agile Development, Testing & Delivery

Als developer wil ik zo snel mogelijk

falen

Zodat ik elke twee weken werkende software live kan brengen

in 10 minuten

Page 5: Fail fast Fail cheap - Agile Development, Testing & Delivery
Page 6: Fail fast Fail cheap - Agile Development, Testing & Delivery
Page 7: Fail fast Fail cheap - Agile Development, Testing & Delivery
Page 8: Fail fast Fail cheap - Agile Development, Testing & Delivery

Continuous Delivery

Page 9: Fail fast Fail cheap - Agile Development, Testing & Delivery

Business/klant: - Wil kortere time-to-market - Volgen van de standaard in de markt - Meer klantwaarde (lagere kosten)

Bovendien: - Beste mensen (inhuur en intern) krijg je als je innoveert

Waarom Continuous Delivery

Page 10: Fail fast Fail cheap - Agile Development, Testing & Delivery
Page 11: Fail fast Fail cheap - Agile Development, Testing & Delivery

Voorheen Nu

Development: 8 dagen 10 dagen

Integreren: 1 week Continu automatisch

Testen & rework: 2 weken 2 dagen

Time-to-market: 5 weken 2 weken

Vermeden kosten: 150 K p.j.

Klantwaarde

Page 12: Fail fast Fail cheap - Agile Development, Testing & Delivery

Continuous Delivery in 2 minuten

https://www.youtube.com/watch?v=SIaVsG7m8n4

Page 13: Fail fast Fail cheap - Agile Development, Testing & Delivery
Page 14: Fail fast Fail cheap - Agile Development, Testing & Delivery

Pipeline / lopende band:

- Multi skilled teams - Alles geautomatiseerd - Korte fix-tijden - Altijd klaar voor live-gang

Continuous Delivery

Page 15: Fail fast Fail cheap - Agile Development, Testing & Delivery

Pipeline / lopende band:

- Multi skilled teams - Alles geautomatiseerd (ook testen)

- Korte fix-tijden - Altijd klaar voor live-gang

Continuous Delivery

Page 16: Fail fast Fail cheap - Agile Development, Testing & Delivery

Pipeline / lopende band:

- Multi skilled teams - Alles geautomatiseerd - Korte fix-tijden - Altijd klaar voor live-gang

Continuous Delivery

Page 17: Fail fast Fail cheap - Agile Development, Testing & Delivery

Pipeline / lopende band:

- Multi skilled teams - Alles geautomatiseerd - Korte fix-tijden - Altijd klaar voor live-gang

Continuous Delivery

Page 18: Fail fast Fail cheap - Agile Development, Testing & Delivery

Continuous Delivery @ Alliander

Page 19: Fail fast Fail cheap - Agile Development, Testing & Delivery

Continuous Delivery @ Alliander

Continuous Delivery

2. Integrate & deploy

3. Test

Make sprint-ready

Release1. Coding &

feedback

Page 20: Fail fast Fail cheap - Agile Development, Testing & Delivery

2. Integrate & deploy

3. Test

Make Sprint-ready

Release1. Coding &

feedback

= Continue stroom user stories die live kunnen!

Page 21: Fail fast Fail cheap - Agile Development, Testing & Delivery

Continuous Delivery

2. Integrate & deploy

3. Test

4. Release1. Coding &

feedback

Make sprint-ready

Make Sprint-ready

Agile Development, Testing & Delivery - Léon Tebbens - Alliander

Page 22: Fail fast Fail cheap - Agile Development, Testing & Delivery

Continuous Delivery

2. Integrate & deploy

3. Test

4. Release

Make sprint-ready

Make Sprint-ready

Daarover later meer…

1. Coding & feedback

Page 23: Fail fast Fail cheap - Agile Development, Testing & Delivery

Eerst: continuous delivery cyclus

Page 24: Fail fast Fail cheap - Agile Development, Testing & Delivery

Continuous Delivery

2. Integrate & deploy

3. Test

Make Sprint-ready

4. Release1. Coding &

feedback

Page 25: Fail fast Fail cheap - Agile Development, Testing & Delivery

1. Coding & feedback Developer & tester werken samen

Page 26: Fail fast Fail cheap - Agile Development, Testing & Delivery

Wat is het duurste aan development?

Page 27: Fail fast Fail cheap - Agile Development, Testing & Delivery

Wat is het duurste aan development?En ook het meest onvoorspelbaar?

Page 28: Fail fast Fail cheap - Agile Development, Testing & Delivery

Fixen!

Page 29: Fail fast Fail cheap - Agile Development, Testing & Delivery

Daarom: 1. Test Driven Development

TDD minimaliseert repareren

Omdat je eerst je test schrijft. En daarna precies die productiecode die de test laat slagen. Niet pas “later testen”

-> Fail Fast en Fail Cheap

Page 30: Fail fast Fail cheap - Agile Development, Testing & Delivery

Daarom: 2. Laptop sneak preview

Tester bekijkt de gebouwde User Story op laptop van de developer

Niet oke? Direct aan te passen.

Pas hierna wordt de code geupload naar versiebeheer.

-> Fail Fast en Fail Cheap

Page 31: Fail fast Fail cheap - Agile Development, Testing & Delivery

2. Integrate & DeployNa elke code upload

Page 32: Fail fast Fail cheap - Agile Development, Testing & Delivery

Continuous Delivery

2. Integrate & deploy

3. Test

4. Release

Make Sprint-ready

1. Coding & feedback

Page 33: Fail fast Fail cheap - Agile Development, Testing & Delivery

Jenkins is onze “lopende band”

De lopende band gaat draaien na elke code-upload in Git versiebeheer

Page 34: Fail fast Fail cheap - Agile Development, Testing & Delivery

Code compileren & integreren

Page 35: Fail fast Fail cheap - Agile Development, Testing & Delivery

Code analyse en unittests (kwaliteit)

Page 36: Fail fast Fail cheap - Agile Development, Testing & Delivery

Package & store

Page 37: Fail fast Fail cheap - Agile Development, Testing & Delivery

Deploy op server

Page 38: Fail fast Fail cheap - Agile Development, Testing & Delivery

ROOD in een stap betekent een fout - je krijgt direct een email (fail fast) - je kan direct fixen (fail forward)

Net als in het filmpje van de lopende band

Page 39: Fail fast Fail cheap - Agile Development, Testing & Delivery

Jenkins pipeline demo

Page 40: Fail fast Fail cheap - Agile Development, Testing & Delivery

3. Test

Page 41: Fail fast Fail cheap - Agile Development, Testing & Delivery

Continuous Delivery

2. Integrate & deploy

3. Test

4. Release

Make Sprint-ready

1. Coding & feedback

Page 42: Fail fast Fail cheap - Agile Development, Testing & Delivery

Browser testing

Selenium GridTwist

Cucumber

Website

Page 43: Fail fast Fail cheap - Agile Development, Testing & Delivery

Browser testing Demo

Page 44: Fail fast Fail cheap - Agile Development, Testing & Delivery

Wie schrijft dan die testen?

Daarover later meer…nu eerst verder met de continuous delivery cyclus

Page 45: Fail fast Fail cheap - Agile Development, Testing & Delivery

Continuous Delivery

1. Code

2. Integrate & deploy

3. Test

Discover & design

4. Release

Page 46: Fail fast Fail cheap - Agile Development, Testing & Delivery

4. Release

Page 47: Fail fast Fail cheap - Agile Development, Testing & Delivery

Via druk op de knop

- Uit artifactory store - De oké-geteste versie - 100% geautomatiseerd - zorgeloos live gaan

Releasen naar Acc en Prod

server

Page 48: Fail fast Fail cheap - Agile Development, Testing & Delivery
Page 49: Fail fast Fail cheap - Agile Development, Testing & Delivery

De Analist & Tester & Continuous Delivery

Page 50: Fail fast Fail cheap - Agile Development, Testing & Delivery

Fail Fast Fail Cheap

Fail Forward

Hoe kunnen Analisten & testers het team helpen sneller te falen?

Page 51: Fail fast Fail cheap - Agile Development, Testing & Delivery

Terug naar het begin

Page 52: Fail fast Fail cheap - Agile Development, Testing & Delivery

Continuous Delivery

2. Integrate & deploy

3. Test

4. Release

Make sprint-ready

Make Sprint-ready

1. Coding & feedback

Page 53: Fail fast Fail cheap - Agile Development, Testing & Delivery

Hoe maken we de User Stories klaar voor de sprint? Wat is de rol van de analist en tester?

?

Page 54: Fail fast Fail cheap - Agile Development, Testing & Delivery

User Stories worden ready gemaakt door op te schrijven:

- How to demo

- How to test

“Begin with the end in mind” Stephen R Covey

Page 55: Fail fast Fail cheap - Agile Development, Testing & Delivery

How to demo is beschrijving in business scenario’s

How to Demo

Functionaliteit: Login

Als MijnLiander gebruiker, Wil ik kunnen inloggen in de beveiligde omgeving op liander.nl zo dat de voor mij specifieke gegevens zichtbaar worden

Page 56: Fail fast Fail cheap - Agile Development, Testing & Delivery

Analist & Product Owner legt de user story uit aan het developerteam

Het team stelt vragen en schrijft de story op als business scenario’s in de How to Demo

Resultaat: het team snapt de story vóórdat de sprint begint -> Fail fast, Fail Cheap

How to Demo

Page 57: Fail fast Fail cheap - Agile Development, Testing & Delivery

Testscenario’s in Gherkin stijl:

Given… When… Then…

mét voorbeelden (specification by example)

How to Test

Agile Development, Testing & Delivery - Léon Tebbens - Lead IT

Page 58: Fail fast Fail cheap - Agile Development, Testing & Delivery

How to TestFunctionaliteit: Login

Als MijnLiander gebruiker, Wil ik kunnen inloggen in de beveiligde omgeving op liander.nl zo dat de voor mij specifieke gegevens zichtbaar worden

Page 59: Fail fast Fail cheap - Agile Development, Testing & Delivery

How to Test

Scenario: Login to MijnLiander

Gegeven Ik heb de Liander site geopend

Als Ik inlog als gebruiker "[email protected]" met wachtwoord “*******”

Dan Zie ik dat ik ben ingelogd

Functionaliteit: Login

Als MijnLiander gebruiker, Wil ik kunnen inloggen in de beveiligde omgeving op liander.nl zo dat de voor mij specifieke gegevens zichtbaar worden

Page 60: Fail fast Fail cheap - Agile Development, Testing & Delivery

How to Test

Scenario: Login to MijnLiander

Gegeven Ik heb de Liander site geopend

Als Ik inlog als gebruiker "[email protected]" met wachtwoord “*******”

Dan Zie ik dat ik ben ingelogd

Functionaliteit: Login

Als MijnLiander gebruiker, Wil ik kunnen inloggen in de beveiligde omgeving op liander.nl zo dat de voor mij specifieke gegevens zichtbaar worden

Scenario: Login zonder gebruikersnaam en wachtwoord

Gegeven Ik heb de Liander site geopend

Als Ik inlog zonder gebruikersnaam en wachtwoord

Dan Zie ik de loginpagina met een foutmelding

Page 61: Fail fast Fail cheap - Agile Development, Testing & Delivery

Tester met developer & Analist/PO (“Three amigo’s”)

Story uitwerken in testscenario’s in Gherkin (given-when-then)

= Acceptatie-criteria van de story = Acceptance Test Driven Design

Resultaat: Geen onduidelijkheden bij bouw -> Fail fast, fail cheap

How to Test

Page 62: Fail fast Fail cheap - Agile Development, Testing & Delivery

David Farley: The people that can break the test, should write the test… developers!

Agile tester: bedenkt test-scenario’s (Gherkin) Agile developer: bouwt de test-code (Cucumber)

Developer bouwt de test in stap 1 “Coding”

Afsluiter: Wie schrijft dan die testen?

Page 63: Fail fast Fail cheap - Agile Development, Testing & Delivery

Samengevat

Fail Fast Deliver Fast Automatiseer zoveel mogelijk Automatisch testen Team-effort / alle disciplines / Samen! Stroom van user stories Altijd met druk op knop live kunnen User Story, How to Demo en How to Test zijn specs

Page 64: Fail fast Fail cheap - Agile Development, Testing & Delivery

Vragen?

@leontebbens - leontebbens.eu

Fail Fast Fail Cheap

Fail Forward

Page 65: Fail fast Fail cheap - Agile Development, Testing & Delivery

Vorige kennissessie: “use cases nodig als documentatie voor later”

Vraag: zouden de How to Demo en How to test de actuele functionele documentatie kunnen zijn?

Simpel voorbeeld van beiden in Serenity BDD for Cucumber: Functionaliteit: Login Als MijnLiander gebruiker, Wil ik kunnen inloggen in de beveiligde omgeving op liander.nl zo dat de voor mij specifieke gegevens zichtbaar worden Scenario: Login to MijnLiander Gegeven Ik heb de Liander site geopend Als Ik inlog als gebruiker "[email protected]" met wachtwoord “*********” Dan Zie ik dat ik ben ingelogd Scenario: Login zonder gebruikersnaam en wachtwoord Gegeven Ik heb de Liander site geopend Als Ik inlog zonder gebruikersnaam en wachtwoord Dan Zie ik de loginpagina

Vraag aan jullie!