Transcript
Page 1: Flexing your Agile Muscle - Agile Technical Concepts Explained

Agile Technical Practices

Sandy Mamoli

@smamolwww.nomad8.com

Page 2: Flexing your Agile Muscle - Agile Technical Concepts Explained

unit testingacceptance testing

continuous integration

load testingrefactoring

TDD

pair programming

user stories

whole team

collective code ownership

coding standards

Page 3: Flexing your Agile Muscle - Agile Technical Concepts Explained

Quality

• Overview of Agile

• Agile Acceptance Testing

• Deployment pipeline (CI)

Page 4: Flexing your Agile Muscle - Agile Technical Concepts Explained

Agile

Page 5: Flexing your Agile Muscle - Agile Technical Concepts Explained

What is Agile?

• Software development framework

• Based on adaptive planning

• Used since 1995 (Scrum)

Page 6: Flexing your Agile Muscle - Agile Technical Concepts Explained
Page 7: Flexing your Agile Muscle - Agile Technical Concepts Explained

Responding to change

In Changed Form

Not Wanted Anymore

As Defined

In Changed Form Not Wanted Anymore As Defined

Features: 6 months

Standish  Group,  Chaos  Report

Page 8: Flexing your Agile Muscle - Agile Technical Concepts Explained

How does it work?

Page 9: Flexing your Agile Muscle - Agile Technical Concepts Explained

Incrementing one bit at a time

51 2 3 4

© Jeff Patton, all rights reserved, www.AgileProductDesign.com

Page 10: Flexing your Agile Muscle - Agile Technical Concepts Explained

Vertical slices - feedback & innovation

© Johnathan Rasmussen, The Agile Samurai

Page 11: Flexing your Agile Muscle - Agile Technical Concepts Explained

Working, shippable software

Page 12: Flexing your Agile Muscle - Agile Technical Concepts Explained

Build important things first

Page 13: Flexing your Agile Muscle - Agile Technical Concepts Explained

Technical excellence

Page 14: Flexing your Agile Muscle - Agile Technical Concepts Explained

Continuous improvement

Page 15: Flexing your Agile Muscle - Agile Technical Concepts Explained

Agile Quality

Page 16: Flexing your Agile Muscle - Agile Technical Concepts Explained

Cost of bugs

Page 17: Flexing your Agile Muscle - Agile Technical Concepts Explained

0

37.5

75.0

112.5

150.0

A more scientific way of saying this ...

1x 5x 10x20x

50x

>150

Reqs Design Code DevT AccT OpsSource: Standish Group

Page 18: Flexing your Agile Muscle - Agile Technical Concepts Explained

Agile Testing Quadrants

Agile Acceptance TestFunctional TestStory Test

Unit Tests

Page 19: Flexing your Agile Muscle - Agile Technical Concepts Explained

The dev’s view

unit testing

acceptance testing

exploratory testing

Page 20: Flexing your Agile Muscle - Agile Technical Concepts Explained

User Stories

Page 21: Flexing your Agile Muscle - Agile Technical Concepts Explained

“incrementing” builds one bit at a time

51 2 3 4

© Jeff Patton, all rights reserved, www.AgileProductDesign.com

Page 22: Flexing your Agile Muscle - Agile Technical Concepts Explained

Story&ID:&

Descrip/on:

photographerAs&a&...

I&want&to&...

So&that&...make some photo albums private

I can have a backup of my personalphotos online

Priority:

Size:

high

13

Photo album privacy

Page 23: Flexing your Agile Muscle - Agile Technical Concepts Explained

Acceptance(Criteria

1. I can set the privacy of photo albums2. I can see my private albums3. My private albums are not visible to others

Page 24: Flexing your Agile Muscle - Agile Technical Concepts Explained

Agile Acceptance Testing

Page 25: Flexing your Agile Muscle - Agile Technical Concepts Explained

Agile Testing Quadrants

Agile Acceptance TestFunctional TestStory Test

Unit Tests

Page 26: Flexing your Agile Muscle - Agile Technical Concepts Explained

Acceptance tests

• Check that the implementation matches the intent

• Focus on shared understanding by developers, testers and business people

• End to end

Page 27: Flexing your Agile Muscle - Agile Technical Concepts Explained

Scenarios

• Create a new private album

• Make a public album private

• Make a private album public

<vertical slices through the acceptance criteria>

Page 28: Flexing your Agile Muscle - Agile Technical Concepts Explained

Examples

Given I create an album named “My holiday”

When I choose to make it private

Then I can see the album “My holiday”

But Kai cannot see the album

Page 29: Flexing your Agile Muscle - Agile Technical Concepts Explained

Examples

Given ... <something we accept to be true>

When ...<indicates the event in a scenario>

Then ...<indicates the expected outcome>

Page 30: Flexing your Agile Muscle - Agile Technical Concepts Explained
Page 31: Flexing your Agile Muscle - Agile Technical Concepts Explained
Page 32: Flexing your Agile Muscle - Agile Technical Concepts Explained

<Melomel API>

Page 33: Flexing your Agile Muscle - Agile Technical Concepts Explained

Cucumber

• Features

• Scenarios

• Steps

• Cucumber command

Page 34: Flexing your Agile Muscle - Agile Technical Concepts Explained
Page 35: Flexing your Agile Muscle - Agile Technical Concepts Explained

cucumber: example

Page 36: Flexing your Agile Muscle - Agile Technical Concepts Explained

Featurescucumber: example

Page 37: Flexing your Agile Muscle - Agile Technical Concepts Explained

Scenarioscucumber: example

Page 38: Flexing your Agile Muscle - Agile Technical Concepts Explained

Stepscucumber: example

Page 39: Flexing your Agile Muscle - Agile Technical Concepts Explained

Cucumber commandcucumber: example

Page 40: Flexing your Agile Muscle - Agile Technical Concepts Explained

Cucumber commandcucumber: example

Page 41: Flexing your Agile Muscle - Agile Technical Concepts Explained

Cucumber commandcucumber: example

Page 42: Flexing your Agile Muscle - Agile Technical Concepts Explained

Good practices

• Hide unnecessary detail

• Make tests independent

• Don’t test absolutely everything

Page 43: Flexing your Agile Muscle - Agile Technical Concepts Explained

Scenario: transfer money (imperative)  Given I have $100 in checking

  And I have $20 in savings

  When I go to the transfer form

  And I select "Checking" from "Source Account"

  And I select "Savings" from "Target Account"

  And I fill in "Amount" with "15"  And I press "Execute Transfer"  Then I should see that I have $85 in checking  And I should see that I have $35 in savings

Declarative vs. imperative style

Page 44: Flexing your Agile Muscle - Agile Technical Concepts Explained

Declarative vs. imperative style

Scenario: transfer money (declarative)  Given I have $100 in checking  And I have $20 in savings  When I transfer $15 from checking to savings  Then I should have $85 in checking 

Page 45: Flexing your Agile Muscle - Agile Technical Concepts Explained

Make tests independent

• Maintenance

• Where did it fail?

• Parallelise

Page 46: Flexing your Agile Muscle - Agile Technical Concepts Explained

Don’t test absolutely everything

Unit Tests

Acceptance Tests

GUI Tests

Page 47: Flexing your Agile Muscle - Agile Technical Concepts Explained

Why I like ATDD

• Ensures the intent is well understood

• Ensures the implementation matches the intent

• Ensures the implementation keeps matching the intent

Page 48: Flexing your Agile Muscle - Agile Technical Concepts Explained

Living documentation

Page 49: Flexing your Agile Muscle - Agile Technical Concepts Explained

Unit testing

Page 50: Flexing your Agile Muscle - Agile Technical Concepts Explained

Agile Testing Quadrants

Agile Acceptance TestFunctional TestStory Test

Unit Tests

Page 51: Flexing your Agile Muscle - Agile Technical Concepts Explained

Unit tests

• Check that the program behaves as the developer thinks it should

• Tend to be focussed on the structural (internal) quality of the code

• Hard for testers and business people to understand

Page 52: Flexing your Agile Muscle - Agile Technical Concepts Explained

• FlexUnit

• MXUnit

Unit tests/TDD

Page 53: Flexing your Agile Muscle - Agile Technical Concepts Explained

Deployment Pipeline

Page 54: Flexing your Agile Muscle - Agile Technical Concepts Explained

Agile Testing Quadrants

Agile Acceptance TestFunctional TestStory Test

Unit Tests

Page 55: Flexing your Agile Muscle - Agile Technical Concepts Explained

As often as possible to get early and instant feedback

Page 56: Flexing your Agile Muscle - Agile Technical Concepts Explained

Deployment pipeline

Deployment pipeline: Jez Humble, www.continuousdelivery.com

Page 57: Flexing your Agile Muscle - Agile Technical Concepts Explained

Agile deployment pipeline

Deployment pipeline: Jez Humble, www.continuousdelivery.com

Page 58: Flexing your Agile Muscle - Agile Technical Concepts Explained

• Create deployable artifacts

• Or fail fast and notify the team

• Triggered by CI server

• 5 minutes or less to run

• Jenkins, TeamCity, etc

Deployment pipeline: Commit stage

Page 59: Flexing your Agile Muscle - Agile Technical Concepts Explained

Continuous integration is a practice not a tool

• Commit regularly (at least once a day)

• Fix any broken build immediately

• Write automated tests

Page 60: Flexing your Agile Muscle - Agile Technical Concepts Explained

• Verify acceptance criteria have been met

• Verify business value

• Run in parallel

• Refactor

Deployment pipeline: Acceptance test stage

Page 61: Flexing your Agile Muscle - Agile Technical Concepts Explained

How to get started

• Create a walking skeleton with placeholders

• Automate the build and deploy process

• Automate unit tests and code analysis

• Automate acceptance tests

• Evolve the pipeline

Page 62: Flexing your Agile Muscle - Agile Technical Concepts Explained

Recommended reading

++

Page 63: Flexing your Agile Muscle - Agile Technical Concepts Explained

Call to action

• Work on Melomel & Cucumber

• Participate in CI projects (Jenkins)

• Steal from Ruby on Rails :-)

Page 64: Flexing your Agile Muscle - Agile Technical Concepts Explained

Contact meSandy Mamoli

@[email protected]


Top Related