SlideShare una empresa de Scribd logo
1 de 179
Descargar para leer sin conexión
Acceptance Test
Driven Development
             Naresh Jain
      naresh@agilefaqs.com
     http://blogs.agilefaqs.com



   Licensed Under Creative Commons by Naresh Jain
                                                    1
Warmup Scenarios




  Licensed Under Creative Commons by Naresh Jain
                                                   2
Warmup Scenarios
Pick one scenario and in relation to your scenario,
what are the specific observable results that will
tell you that the activity has been successfully
completed?




           Licensed Under Creative Commons by Naresh Jain
                                                            2
Warmup Scenarios
Pick one scenario and in relation to your scenario,
what are the specific observable results that will
tell you that the activity has been successfully
completed?
Going out for Movie (THX sound and Digital projection)




           Licensed Under Creative Commons by Naresh Jain
                                                            2
Warmup Scenarios
Pick one scenario and in relation to your scenario,
what are the specific observable results that will
tell you that the activity has been successfully
completed?
Going out for Movie (THX sound and Digital projection)
Going out for meal (one veg.)




           Licensed Under Creative Commons by Naresh Jain
                                                            2
Warmup Scenarios
Pick one scenario and in relation to your scenario,
what are the specific observable results that will
tell you that the activity has been successfully
completed?
Going out for Movie (THX sound and Digital projection)
Going out for meal (one veg.)
Going shopping ($50)



           Licensed Under Creative Commons by Naresh Jain
                                                            2
Warmup Scenarios
Pick one scenario and in relation to your scenario,
what are the specific observable results that will
tell you that the activity has been successfully
completed?
Going out for Movie (THX sound and Digital projection)
Going out for meal (one veg.)
Going shopping ($50)
                                                            [10 Minutes]




           Licensed Under Creative Commons by Naresh Jain
                                                                           2
Warmup Scenarios
Pick one scenario and in relation to your scenario,
what are the specific observable results that will
tell you that the activity has been successfully
completed?
Going out for Movie (THX sound and Digital projection)
Going out for meal (one veg.)
Going shopping ($50)
                                                                   [10 Minutes]

Present back to the group your findings. [3 minutes per group]

                  Licensed Under Creative Commons by Naresh Jain
                                                                                  2
What is a Story?
Story is a smallest piece of functionality that add business value

                   Story Title - Actor Action Context


           As a .. <user who requires this feature>
           I want .. <do something>
           So that... <user goal/business justification>




         Ron Jeffries’ 3 Cs - Card, Conversation and Confirmation

                                                                   3
Story Example



Title: Keen Reader subscribes to a blog
As a keen reader of your blog
I want to subscribe to your blog
So that I can stay up-to-date with the new posts




                                                   4
Another Story Example



Title: Social Networking Enthusiast uploads profile picture
As a Social Networking Enthusiast
I want to upload my profile picture
So my friends can see how I look and recognize me




                                                             5
What makes a good Story?




                           6
What makes a good Story?


Stories should follow the INVEST principle:




                                              6
What makes a good Story?


Stories should follow the INVEST principle:
Independent




                                              6
What makes a good Story?


Stories should follow the INVEST principle:
Independent
Negotiable




                                              6
What makes a good Story?


Stories should follow the INVEST principle:
Independent
Negotiable
Valuable




                                              6
What makes a good Story?


Stories should follow the INVEST principle:
Independent
Negotiable
Valuable
Estimate-able




                                              6
What makes a good Story?


Stories should follow the INVEST principle:
Independent
Negotiable
Valuable
Estimate-able
Small




                                              6
What makes a good Story?


Stories should follow the INVEST principle:
Independent
Negotiable
Valuable
Estimate-able
Small
Testable




                                              6
Stories are fundamental unit of activity




                                       7
Stories are fundamental unit of activity

Business Goals




                                       7
Stories are fundamental unit of activity

Business Goals




                 Inception




                                       7
Stories are fundamental unit of activity

Business Goals                    Product Backlog




                    Inception




                                As a ____, I want to
                                 be able to ____ so
                                     that ____




                 Might have an initial estimate
                  (perhaps for both analysis
                  and development), and an
                  expression of technical and
                 business confidence that this
                    is real and achievable




                                                       7
Stories are fundamental unit of activity

Business Goals                    Product Backlog




                    Inception
                                                       Release planning




                                As a ____, I want to
                                 be able to ____ so
                                     that ____




                 Might have an initial estimate
                  (perhaps for both analysis
                  and development), and an
                  expression of technical and
                 business confidence that this
                    is real and achievable




                                                                          7
Stories are fundamental unit of activity

Business Goals                    Product Backlog                     Release Backlog




                    Inception
                                                       Release planning




                                As a ____, I want to                  As a ____, I want to
                                 be able to ____ so                    be able to ____ so
                                     that ____                             that ____




                                                                     I will know this is done
                                                                          when _______
                 Might have an initial estimate
                  (perhaps for both analysis
                  and development), and an
                  expression of technical and
                 business confidence that this
                    is real and achievable        More detailed estimate, and a
                                                  specific acceptance test – low
                                                   confidence stories might be
                                                     “spiked” or prototyped




                                                                                                7
Stories are fundamental unit of activity

Business Goals                    Product Backlog                     Release Backlog




                    Inception
                                                       Release planning                         Sprint planning




                                As a ____, I want to                  As a ____, I want to
                                 be able to ____ so                    be able to ____ so
                                     that ____                             that ____




                                                                     I will know this is done
                                                                          when _______
                 Might have an initial estimate
                  (perhaps for both analysis
                  and development), and an
                  expression of technical and
                 business confidence that this
                    is real and achievable        More detailed estimate, and a
                                                  specific acceptance test – low
                                                   confidence stories might be
                                                     “spiked” or prototyped




                                                                                                                  7
Stories are fundamental unit of activity

Business Goals                    Product Backlog                     Release Backlog                              Sprint Backlog




                    Inception
                                                       Release planning                         Sprint planning




                                As a ____, I want to                  As a ____, I want to                        As a ____, I want to
                                 be able to ____ so                    be able to ____ so                          be able to ____ so
                                     that ____                             that ____                                   that ____
                                                                                                                                         Possible automation
                                                                                                                                          of the acceptance
                                                                                                                                                 test

                                                                     I will know this is done                 I will know this is done
                                                                          when _______                             when _______
                 Might have an initial estimate
                  (perhaps for both analysis
                  and development), and an                                                                                                Development team
                  expression of technical and                                                                                            breaks out the detail
                                                                                                                   To do this I must:
                 business confidence that this                                                                                            of work needed to
                                                                                                                   1)        _____
                    is real and achievable        More detailed estimate, and a                                                               pass test
                                                                                                                   2)        _____
                                                  specific acceptance test – low
                                                   confidence stories might be
                                                     “spiked” or prototyped




                                                                                                                                                                 7
Acceptance Criteria

Is a set of conditions that the Story must meet for it to be
accepted as complete
Is typically provided by the customer or product owner.


       Is not a replacement for conversation.
          Is the results of the conversation


         Acceptance Criteria are NOT tests


                                                               8
Writing Acceptance Criteria

Acceptance Criteria should contain:
   ACTOR
   VERB – DESCRIBING A BEHAVIOR
   OBSERVABLE RESULT


To accommodate pre-conditions Acceptance Criteria can be expressed as

                Given [Precondition]
                When [Actor + Action]
                Then [Observable Result]


                                                                        9
Example
Social Networking Enthusiast uploads profile picture




                                                      10
Example
      Social Networking Enthusiast uploads profile picture
Given the user has a valid facebook account and a digital picture on her computer,
When she uploads a picture in facebook,
Then her the picture should be visible to all her friends in her network.




                                                                                     10
Example
      Social Networking Enthusiast uploads profile picture
Given the user has a valid facebook account and a digital picture on her computer,
When she uploads a picture in facebook,
Then her the picture should be visible to all her friends in her network.


Given an user is trying to find a friend on facebook,
When the user searches for a person using their name,
Then their profile picture should be displayed along with other details.




                                                                                     10
Example
      Social Networking Enthusiast uploads profile picture
Given the user has a valid facebook account and a digital picture on her computer,
When she uploads a picture in facebook,
Then her the picture should be visible to all her friends in her network.


Given an user is trying to find a friend on facebook,
When the user searches for a person using their name,
Then their profile picture should be displayed along with other details.


As owner of facebook,
I want users to upload authentic, personal profile picture,
So facebook's reputation remains intact and facebook stays out of legal hassles.

                                                                                     10
Acceptance Criteria & Tests: Definition

 Acceptance Tests




 Licensed Under Creative Commons by Naresh Jain
                                                  11
Acceptance Criteria & Tests: Definition

 Acceptance Tests

Acceptance Criteria




 Licensed Under Creative Commons by Naresh Jain
                                                  11
Acceptance Criteria & Tests: Definition

     Acceptance Tests

    Acceptance Criteria
+



     Licensed Under Creative Commons by Naresh Jain
                                                      11
Acceptance Criteria & Tests: Definition

       Acceptance Tests

      Acceptance Criteria
+ Examples (data + scenarios)



       Licensed Under Creative Commons by Naresh Jain
                                                        11
Acceptance Criteria & Tests: Definition

       Acceptance Tests

      Acceptance Criteria
+ Examples (data + scenarios)

     Acceptance Tests
       Licensed Under Creative Commons by Naresh Jain
                                                        11
Tasks
Team members further break down each story into tasks that need
  to be completed to meet the acceptance criteria for the story.




                                                                   12
Tasks
  Team members further break down each story into tasks that need
    to be completed to meet the acceptance criteria for the story.

To accomplish this story:
 we start off with a simple upload and image display




                                                                     12
Tasks
  Team members further break down each story into tasks that need
    to be completed to meet the acceptance criteria for the story.

To accomplish this story:
 we start off with a simple upload and image display
 restrict user to only upload certain image types (gif, jpg and png)




                                                                       12
Tasks
  Team members further break down each story into tasks that need
    to be completed to meet the acceptance criteria for the story.

To accomplish this story:
 we start off with a simple upload and image display
 restrict user to only upload certain image types (gif, jpg and png)
 figure out where to store the image. (performant and fault-tolarent)




                                                                       12
Tasks
  Team members further break down each story into tasks that need
    to be completed to meet the acceptance criteria for the story.

To accomplish this story:
 we start off with a simple upload and image display
 restrict user to only upload certain image types (gif, jpg and png)
 figure out where to store the image. (performant and fault-tolarent)
 scale down (size, resolution, etc.) of the image




                                                                       12
Tasks
  Team members further break down each story into tasks that need
    to be completed to meet the acceptance criteria for the story.

To accomplish this story:
 we start off with a simple upload and image display
 restrict user to only upload certain image types (gif, jpg and png)
 figure out where to store the image. (performant and fault-tolarent)
 scale down (size, resolution, etc.) of the image
 and so on...




                                                                       12
Demo
Roman Numerals to Decimal Conversion Example




        Licensed Under Creative Commons by Naresh Jain
                                                         13
Demo
Real World Domain Forwarding Server




   Licensed Under Creative Commons by Naresh Jain
                                                    14
Thinking in Tables



  Licensed Under Creative Commons by Naresh Jain
                                                   15
Thinking in Tables

Only Tables Execute

                                                  Ignored



                                                  Executed



 Licensed Under Creative Commons by Naresh Jain
                                                             16
Thinking in Tables

        Foundational Table Structure
     Name of Fixture

Interaction with Application




            Table structure depends on type of Fixture




                       Licensed Under Creative Commons by Naresh Jain
                                                                        17
Thinking in Tables

          3 Foundation Fixtures


Column Fixture
Row Fixture
Action Fixture




                 Licensed Under Creative Commons by Naresh Jain
                                                                  18
Thinking in Tables

 Column Fixture




Licensed Under Creative Commons by Naresh Jain
                                                 19
Thinking in Tables

      Row Fixture
                         Analogous to comparing
                         against rows in a
                         database table




Licensed Under Creative Commons by Naresh Jain
                                                  20
Thinking in Tables

                      Action Fixture
        Think GUI window                                  Counter Window
                                                      Counter:
public class CountFixture extends Fixture {
  private int counter = 0;                            Counter: 6

    public void count() {                                           Count
      counter++;
    }

    public int counter() {
      return counter;
    }
}




                   Licensed Under Creative Commons by Naresh Jain
                                                                            21
FitLibrary


Extension to FIT
Written by Rick Mugridge
Adds some handy Fixtures




               Licensed Under Creative Commons by Naresh Jain
                                                                22
FitLibrary

           FitLibrary Fixtures

ArrayFixture for ordered lists
SetFixture for unordered lists
SetUpFixture
Supports
 Graphics
 Tree structures
 Nested Tables


            Licensed Under Creative Commons by Naresh Jain
                                                             23
FitLibrary

DoFixture


•   Broken tables

•   Highly readable

•   Flexibility




                      Licensed Under Creative Commons by Naresh Jain
                                                                       24
Tools

                                  FIT


Framework for Integrated Tests
Created by Ward Cunningham
Open Source
The most accepted solution for agile acceptance testing




                Licensed Under Creative Commons by Naresh Jain
                                                                 25
Tools

                          FitNesse


Environment build around FIT
Makes everything easier
Created by Object Mentor, Inc.
Open Source




               Licensed Under Creative Commons by Naresh Jain
                                                                26
FIT                                              FitNesse
                                                  - Stand alone web server
                                                  - Is a wiki
- Tests written in HTML
                                                  - Tests written in wiki text
- Tests are executed on the command line
                                                  - Tests are executed from within the wiki
- Tables are executed
                                                  - Translates tests into HTML
- Non-table markup is ignored
                                                  - Uses FIT to execute tests
- Tables map to Fixtures
                                                  - Supports test suites
- Fixtures are code that is aware of the
                                                  - Supports variables in tests
system
                                                  - Supports test refactoring
- Supplies foundational Fixtures
                                                  - Written in Java
- Implementations ported to many
                                                  - Supports FIT implementations in any
languages
                                                  language




                        Licensed Under Creative Commons by Naresh Jain
                                                                                              27
Acceptance Criteria
       and Tests:
A Critical Piece of Agile

      Licensed Under Creative Commons by Naresh Jain
                                                       28
Acceptance Criteria & Tests: A Critical Piece of Agile

              Traditional Approach

1 May                1 Jul                  1 Sep                   1 Nov

        Analysis

                             Design

                                                  Implementation
                             ERD
              DFD
                                   DD
                                         ST


                   Licensed Under Creative Commons by Naresh Jain
                                                                            29
Key Questions
                 Business Facing


Are we building the right product?


Are we building the product right?

     Technology/Implementation Facing


   Licensed Under Creative Commons by Naresh Jain


                                                    30
Brian Marick’s Test Categorization
                                     Business Facing
Supports Programming




                                                                        Critique product
                         Technology/Implementation Facing


                       Licensed Under Creative Commons by Naresh Jain


                                                                                           31
It Helps to Think of Tests this way...
                                  Business Facing
Drives Development




                                                                      Critique product
                       Technology/Implementation Facing


                     Licensed Under Creative Commons by Naresh Jain


                                                                                         32
It Helps to Think of Tests this way...
                                       Business Facing
Drives Development




                                                                           Critique product
                     Unit Testing

                            Technology/Implementation Facing


                          Licensed Under Creative Commons by Naresh Jain


                                                                                              32
It Helps to Think of Tests this way...
                                          Business Facing

                     Acceptance Testing
Drives Development




                                                                              Critique product
                     Low-fi prototypes


                        Unit Testing

                               Technology/Implementation Facing


                             Licensed Under Creative Commons by Naresh Jain


                                                                                                 32
It Helps to Think of Tests this way...
                                          Business Facing

                     Acceptance Testing              Exploratory Testing
Drives Development




                                                                               Critique product
                     Low-fi prototypes               UI and Usability Testing


                        Unit Testing

                               Technology/Implementation Facing


                             Licensed Under Creative Commons by Naresh Jain


                                                                                                  32
It Helps to Think of Tests this way...
                                          Business Facing

                     Acceptance Testing              Exploratory Testing
Drives Development




                                                                               Critique product
                     Low-fi prototypes               UI and Usability Testing

                                                       Performance Testing
                        Unit Testing
                                                           System Tests
                               Technology/Implementation Facing


                             Licensed Under Creative Commons by Naresh Jain


                                                                                                  32
Avatars of TDD
                                           Business Facing
Drives Development




                                                                              Critique product
                                   Inside Out




                     Outside In
                                  Technology/Implementation Facing


                             Licensed Under Creative Commons by Naresh Jain


                                                                                                 33
Test Driven Development



TDD Rhythm - Test, Code, Refactor




             Licensed Under Creative Commons by Naresh Jain
                                                              34
Test Driven Development
                                                  Add a Test




TDD Rhythm - Test, Code, Refactor




             Licensed Under Creative Commons by Naresh Jain
                                                               34
Test Driven Development
                                                  Add a Test


                                                 Run the Test


TDD Rhythm - Test, Code, Refactor




             Licensed Under Creative Commons by Naresh Jain
                                                                34
Test Driven Development
                                                  Add a Test

                                          Pass
                                                 Run the Test


TDD Rhythm - Test, Code, Refactor




             Licensed Under Creative Commons by Naresh Jain
                                                                34
Test Driven Development
                                                  Add a Test

                                          Pass
                                                 Run the Test
                                                        Fail
TDD Rhythm - Test, Code, Refactor




             Licensed Under Creative Commons by Naresh Jain
                                                                34
Test Driven Development
                                                  Add a Test

                                          Pass
                                                 Run the Test
                                                         Fail
TDD Rhythm - Test, Code, Refactor                Make a little
                                                   change




             Licensed Under Creative Commons by Naresh Jain
                                                                 34
Test Driven Development
                                                  Add a Test

                                          Pass
                                                 Run the Test
                                                         Fail
TDD Rhythm - Test, Code, Refactor                Make a little
                                                   change


                                                 Run the Test




             Licensed Under Creative Commons by Naresh Jain
                                                                 34
Test Driven Development
                                                  Add a Test

                                          Pass
                                                 Run the Test
                                                         Fail
TDD Rhythm - Test, Code, Refactor                Make a little
                                                   change

                                                                 Fail
                                                 Run the Test




             Licensed Under Creative Commons by Naresh Jain
                                                                        34
Test Driven Development
                                                  Add a Test

                                          Pass
                                                 Run the Test
                                                         Fail
TDD Rhythm - Test, Code, Refactor                Make a little
                                                   change

                                                                 Fail
                                                 Run the Test
                                                         Pass




             Licensed Under Creative Commons by Naresh Jain
                                                                        34
Test Driven Development
                                                  Add a Test

                                          Pass
                                                 Run the Test
                                                         Fail
TDD Rhythm - Test, Code, Refactor                Make a little
                                                   change

                                                                 Fail
                                                 Run the Test
                                                         Pass
                                                   Refactor




             Licensed Under Creative Commons by Naresh Jain
                                                                        34
Test Driven Development
                                                  Add a Test

                                          Pass
                                                 Run the Test
                                                         Fail
TDD Rhythm - Test, Code, Refactor                Make a little
                                                   change

                                                                 Fail
                                                 Run the Test
                                                         Pass
                                                   Refactor




             Licensed Under Creative Commons by Naresh Jain
                                                                        34
Test Driven Development
                                                  Add a Test

                                          Pass
                                                 Run the Test
                                                         Fail
TDD Rhythm - Test, Code, Refactor                Make a little
                                                   change

                                                                 Fail
                                                 Run the Test
                                                         Pass
                                                   Refactor




             Licensed Under Creative Commons by Naresh Jain
                                                                        34
Test Driven Development
                                                  Add a Test

                                          Pass
                                                 Run the Test
                                                         Fail
TDD Rhythm - Test, Code, Refactor                Make a little
                                                   change

                                                                 Fail
                                                 Run the Test
                                                         Pass
                                                   Refactor




             Licensed Under Creative Commons by Naresh Jain
                                                                        34
Acceptance Test Driven Development




        Licensed Under Creative Commons by Naresh Jain
                                                         35
Acceptance Test Driven Development


Story




        Licensed Under Creative Commons by Naresh Jain
                                                         35
Acceptance Test Driven Development

        Acceptance
         Criteria

Story




               Licensed Under Creative Commons by Naresh Jain
                                                                35
Acceptance Test Driven Development
                                Iteration

        Acceptance
         Criteria

Story




               Licensed Under Creative Commons by Naresh Jain
                                                                35
Acceptance Test Driven Development
                                Iteration
                              Automated
        Acceptance            Acceptance
         Criteria                Tests


Story




               Licensed Under Creative Commons by Naresh Jain
                                                                35
Acceptance Test Driven Development
                                Iteration
                              Automated
        Acceptance            Acceptance
         Criteria                Tests


Story         Automated
               Unit Test




               Licensed Under Creative Commons by Naresh Jain
                                                                35
Acceptance Test Driven Development
                                Iteration
                              Automated
        Acceptance            Acceptance
         Criteria                Tests


Story         Automated
               Unit Test



                               Automated
                               Acceptance
                                  Tests




               Licensed Under Creative Commons by Naresh Jain
                                                                35
Acceptance Test Driven Development
                                Iteration
                              Automated
        Acceptance            Acceptance
         Criteria                Tests


Story         Automated
               Unit Test



                               Automated
                               Acceptance
                                  Tests

                               Exploratory
                                 Testing

               Licensed Under Creative Commons by Naresh Jain
                                                                35
Acceptance Test Driven Development
                                Iteration
                              Automated
        Acceptance            Acceptance
         Criteria                Tests


Story         Automated
               Unit Test



                               Automated
                               Acceptance
                                  Tests
                                                       Acceptance
                               Exploratory
                                                        Criteria
                                 Testing

               Licensed Under Creative Commons by Naresh Jain
                                                                    35
Acceptance Test Driven Development
                                Iteration
                              Automated
        Acceptance            Acceptance
         Criteria                Tests


Story         Automated
               Unit Test                               Automated
                                                        UI Tests


                               Automated
                               Acceptance
                                  Tests
                                                       Acceptance
                               Exploratory
                                                        Criteria
                                 Testing

               Licensed Under Creative Commons by Naresh Jain
                                                                    35
Acceptance Test Driven Development
                                Iteration
                              Automated                             P
                              Acceptance                            E
        Acceptance                                                  R
         Criteria                Tests
                                                                    F
                                                                    O
              Automated                                             R
Story                                                               M   T
               Unit Test                               Automated    E   E
                                                        UI Tests    N   S
                                                                    C   T
                                                                    E   S
                               Automated
                               Acceptance
                                  Tests
                                                       Acceptance
                               Exploratory
                                                        Criteria
                                 Testing

               Licensed Under Creative Commons by Naresh Jain
                                                                        35
Mike Cohn’s Testing Pyramid




    Licensed Under Creative Commons by Naresh Jain
                                                     36
Mike Cohn’s Testing Pyramid
   GUI
   Tests




     Licensed Under Creative Commons by Naresh Jain
                                                      36
Mike Cohn’s Testing Pyramid
                                 Small in Number
   GUI            Tools: Selenium, Sahi, Watir, Abbot, Frankenstein
   Tests




     Licensed Under Creative Commons by Naresh Jain
                                                                  36
Mike Cohn’s Testing Pyramid
                                  Small in Number
    GUI            Tools: Selenium, Sahi, Watir, Abbot, Frankenstein
    Tests

 Acceptance
    Tests




      Licensed Under Creative Commons by Naresh Jain
                                                                   36
Mike Cohn’s Testing Pyramid
                                  Small in Number
    GUI            Tools: Selenium, Sahi, Watir, Abbot, Frankenstein
    Tests
                               At least one per story
 Acceptance              Tools: Fit, FitNesse, RSpec, JBehave
    Tests




      Licensed Under Creative Commons by Naresh Jain
                                                                   36
Mike Cohn’s Testing Pyramid
                                  Small in Number
    GUI            Tools: Selenium, Sahi, Watir, Abbot, Frankenstein
    Tests
                               At least one per story
 Acceptance              Tools: Fit, FitNesse, RSpec, JBehave
    Tests


 Unit Tests



      Licensed Under Creative Commons by Naresh Jain
                                                                   36
Mike Cohn’s Testing Pyramid
                                  Small in Number
    GUI            Tools: Selenium, Sahi, Watir, Abbot, Frankenstein
    Tests
                               At least one per story
 Acceptance              Tools: Fit, FitNesse, RSpec, JBehave
    Tests

                                At least one per class or module
 Unit Tests                           Tools: xUnit, TestNG




      Licensed Under Creative Commons by Naresh Jain
                                                                   36
Acceptance Tests: A Critical Piece of Agile

              Criteria for DONE



Every story must have at least one Acceptance Test
A story is not DONE until it passes it’s Acceptance Tests




                Licensed Under Creative Commons by Naresh Jain
                                                                 37
Acceptance Tests: A Critical Piece of Agile

Manual Acceptance Tests




       Licensed Under Creative Commons by Naresh Jain
                                                        38
Acceptance Tests: A Critical Piece of Agile

Manual Acceptance Tests


        Manual
    Acceptance Tests


       Licensed Under Creative Commons by Naresh Jain
                                                        38
Acceptance Tests: A Critical Piece of Agile

Manual Acceptance Tests


        Manual
    Acceptance Tests


       Licensed Under Creative Commons by Naresh Jain
                                                        38
Why Acceptance Tests?


Criteria for Completion
Great Collaboration tool
Source of Feedback
Real data to measure progress




               Licensed Under Creative Commons by Naresh Jain
                                                                39
Data From Acceptance Tests
                Total ATs        Failing ATs           Passing ATs


90



72



54



36



18



 0
     1   2      3           4    5             6   7                 8   9   10



             Licensed Under Creative Commons by Naresh Jain
                                                                                  40
Acceptance Tests Are
    Automated



    Licensed Under Creative Commons by Naresh Jain
                                                     41
Acceptance Tests: A Critical Piece of Agile

                 The Button


How often would you press
it?
When would you press it?
Who would press it?
 Testers, Developers,
 Managers, Customers,
 Spectators, etc.




          Licensed Under Creative Commons by Naresh Jain
                                                           42
Licensed Under Creative Commons by Naresh Jain
                                                 43
Criteria for DONE




Licensed Under Creative Commons by Naresh Jain
                                                 43
Criteria for DONE
+



    Licensed Under Creative Commons by Naresh Jain
                                                     43
Criteria for DONE
+                           Automated



    Licensed Under Creative Commons by Naresh Jain
                                                     43
Criteria for DONE
+                           Automated

Executable Specification

    Licensed Under Creative Commons by Naresh Jain
                                                     43
Acceptance Tests: A Critical Piece of Agile

         Executable Specification


A new paradigm for testing
Puts quality first
Removes ambiguity from requirements




                    Licensed Under Creative Commons by Naresh Jain
                                                                     44
Who Writes
Acceptance Tests?



  Licensed Under Creative Commons by Naresh Jain
                                                   45
Who Writes Acceptance Tests?

             The Customer

The Customer Role
 Stake holder
 Business Analyst
 Quality Assurance
 Product Owner
 Developer



          Licensed Under Creative Commons by Naresh Jain
                                                           46
Who Writes Acceptance Tests?

              Tests Get Technical


The “Customer” may need technical help to write tests
Developers and QAs are technical
Pair test authoring




                Licensed Under Creative Commons by Naresh Jain
                                                                 47
Who Writes Acceptance Tests?

  Business Rules Get Fuzzy


Sometimes developers need help understanding tests
Customers know business rules
Pair test implementation




               Licensed Under Creative Commons by Naresh Jain
                                                                48
Exercise #1




Licensed Under Creative Commons by Naresh Jain
                                                 49
Exercise #1

           The Login Test

Write a test plan, in plain text, for the business
rules of logging in.
Web application
User credentials are stored in relational
database
Successful login redirects to “Welcome” page




           Licensed Under Creative Commons by Naresh Jain
                                                            50
Writing Good
Acceptance Tests



  Licensed Under Creative Commons by Naresh Jain
                                                   51
Writing Good Acceptance Tests

     Login Test Possibilities


1. Direct browser to URL for login page




         Licensed Under Creative Commons by Naresh Jain
                                                          52
Writing Good Acceptance Tests

     Login Test Possibilities


1. Direct browser to URL for login page




         Licensed Under Creative Commons by Naresh Jain
                                                          52
Writing Good Acceptance Tests

      Login Test Possibilities


1. Direct browser to URL for login page
1. Enter the username ‘wallace’




         Licensed Under Creative Commons by Naresh Jain
                                                          52
Writing Good Acceptance Tests

      Login Test Possibilities


1. Direct browser to URL for login page
1. Enter the username ‘wallace’




         Licensed Under Creative Commons by Naresh Jain
                                                          52
Writing Good Acceptance Tests

      Login Test Possibilities


1. Direct browser to URL for login page
1. Enter the username ‘wallace’

Build a Testable Environment First


         Licensed Under Creative Commons by Naresh Jain
                                                          52
Writing Good Acceptance Tests

     Login Test Possibilities


1. Add some users to the system




        Licensed Under Creative Commons by Naresh Jain
                                                         53
Writing Good Acceptance Tests

     Login Test Possibilities


1. Add some users to the system




        Licensed Under Creative Commons by Naresh Jain
                                                         53
Writing Good Acceptance Tests

      Login Test Possibilities


1. Add some users to the system
3. Enter a value into the username field




         Licensed Under Creative Commons by Naresh Jain
                                                          53
Writing Good Acceptance Tests

      Login Test Possibilities


1. Add some users to the system
3. Enter a value into the username field




         Licensed Under Creative Commons by Naresh Jain
                                                          53
Writing Good Acceptance Tests

      Login Test Possibilities


1. Add some users to the system
3. Enter a value into the username field


              Be Specific

         Licensed Under Creative Commons by Naresh Jain
                                                          53
Writing Good Acceptance Tests

              Tests are Examples


Use concrete examples
Specify concrete behavior
No ambiguity allowed




               Licensed Under Creative Commons by Naresh Jain
                                                                54
Writing Good Acceptance Tests

      Login Test Possibilities

1. Insert into User table values (’wallace’,
‘ilikecheeze’)




          Licensed Under Creative Commons by Naresh Jain
                                                           55
Writing Good Acceptance Tests

      Login Test Possibilities

1. Insert into User table values (’wallace’,
‘ilikecheeze’)




          Licensed Under Creative Commons by Naresh Jain
                                                           55
Writing Good Acceptance Tests

      Login Test Possibilities

1. Insert into User table values (’wallace’,
‘ilikecheeze’)
2. Open a browser to the URL http://
localhost/myapp




          Licensed Under Creative Commons by Naresh Jain
                                                           55
Writing Good Acceptance Tests

      Login Test Possibilities

1. Insert into User table values (’wallace’,
‘ilikecheeze’)
2. Open a browser to the URL http://
localhost/myapp




          Licensed Under Creative Commons by Naresh Jain
                                                           55
Writing Good Acceptance Tests

      Login Test Possibilities

1. Insert into User table values (’wallace’,
‘ilikecheeze’)
2. Open a browser to the URL http://
localhost/myapp

Avoid Implementation Details

          Licensed Under Creative Commons by Naresh Jain
                                                           55
Good Acceptable Criteria and Tests




        Licensed Under Creative Commons by Naresh Jain
                                                         56
Good Acceptable Criteria and Tests

 S 	

- SPECIFIC      - Explicitly defined and definite




         Licensed Under Creative Commons by Naresh Jain
                                                          56
Good Acceptable Criteria and Tests

 S 	

- SPECIFIC - Explicitly defined and definite
 M	

- MEASURABLE - Possible to observe and quantify




           Licensed Under Creative Commons by Naresh Jain
                                                            56
Good Acceptable Criteria and Tests

 S 	

- SPECIFIC - Explicitly defined and definite
 M	

- MEASURABLE - Possible to observe and quantify
 A	

 - ACHIEVABLE - Capable of existing or taking place



            Licensed Under Creative Commons by Naresh Jain
                                                             56
Good Acceptable Criteria and Tests

 S 	

- SPECIFIC - Explicitly defined and definite
 M	

- MEASURABLE - Possible to observe and quantify
 A	

 - ACHIEVABLE - Capable of existing or taking place
 R	

 - RELEVANT - Having a connection with the story


            Licensed Under Creative Commons by Naresh Jain
                                                             56
Good Acceptable Criteria and Tests

 S 	

- SPECIFIC - Explicitly defined and definite
 M	

- MEASURABLE - Possible to observe and quantify
 A	

 - ACHIEVABLE - Capable of existing or taking place
 R	

 - RELEVANT - Having a connection with the story
 T	

 - TIME-BOUND – When will the outcome be observed
           Licensed Under Creative Commons by Naresh Jain
                                                            56
Writing Good Acceptance Tests

Avoid Implementation Details
 Acceptance Tests                                    View


                                                    UI
                   Model and Presenter



                       Business Tier



                         Data Store
          Licensed Under Creative Commons by Naresh Jain
                                                            57
Writing Good Acceptance Tests

 Login Test: Possible Solution

Add user to system: (’wallace’, ‘ilikecheeze’)
Process login with username ‘wallace’ and password ‘blah’
Check login failed
Process login with username ‘wallace’ and password ‘ilikecheeze’
Check login succeeded




                 Licensed Under Creative Commons by Naresh Jain
                                                                   58
Tools



Licensed Under Creative Commons by Naresh Jain
                                                 59
Tools

         Commercial Tools

 WinRunner             TestPartner                   EggPlant
 Silk                  QTP                           TestComplete
 RFT
                       Squish                        WindowTester

Are not suitable for Acceptance Testing in
          an Agile environment

             Licensed Under Creative Commons by Naresh Jain
                                                                    60
Tools

        Open Source Options

  FIT                     Sahi                    Frankenstein
  FitNesse                Watir                   Cucumber
  Selenium                Abbot                   RSpec/JBehave



Among the few tools that support Test
       Driven Development

             Licensed Under Creative Commons by Naresh Jain
                                                                  61
Wiki



Licensed Under Creative Commons by Naresh Jain
                                                 62
Wiki

                          What is it?

A collaborative web site
Editable by any
Created by Ward Cunningham
Every project should have one
http://c2.com/wiki
http://en.wikipedia.com




                  Licensed Under Creative Commons by Naresh Jain
                                                                   63
Wiki

             Creating Tests
Use Wiki syntax to create a page with test tables
Label the page as a Test Page
 Use a page name of the form Test…
 Turn on the Test property
Make sure your Fixtures are in the classpath
 Use !path widget
Mechanics
 !path values are concatenated
 Java command to start FitServer is executed
 Testable HTML is passed to FitServer
 FitServer runs the tests
 Results are passed back to FitNesse


         Licensed Under Creative Commons by Naresh Jain
                                                          64
Wiki

           Creating Suites
      There are 2 ways to make Suites
Set the Suite property
 Create a page with the Suite property
 Created test pages inside this page
 When the suite is executed, all child test pages will
   be included in the suite execution
Use the !see widget
 !see <name of test page>
 All “included” tests pages will be included in the
    suite execution
   Run a Suite by clicking the Suite button

         Licensed Under Creative Commons by Naresh Jain
                                                          65
Hands-on Session

Conference Proposal Submission Portal
Some sample Stories
 Should be able to submit new proposal
 Should be able to list all submitted proposal
 Submitting proposal with same title should display appropriate error message
 Should be able to delete submitted proposal based on the title
 Should be able to delete submitted proposal based on the title
 Should be able to search proposals by title
 Should be able to search proposals by ID
 Should be able to find all proposal by an author's name




                  Licensed Under Creative Commons by Naresh Jain
                                                                                66
Break


Licensed Under Creative Commons by Naresh Jain
                                                 67
Patterns



Licensed Under Creative Commons by Naresh Jain
                                                 68
Patterns

                Organizing Tests



Allowing customers to add new tests without breaking the build




               Licensed Under Creative Commons by Naresh Jain
                                                                 69
Patterns

                 Version Control



Keeping the acceptance test in version control with the code.




                Licensed Under Creative Commons by Naresh Jain
                                                                 70
Patterns

        Cross-Functional Pairing



Using FitNesse based acceptance tests for collaboration between cross-
functional team members.




               Licensed Under Creative Commons by Naresh Jain
                                                                         71
Patterns

                            ATDD



Acceptance Test Driven Development




              Licensed Under Creative Commons by Naresh Jain
                                                               72
Patterns

                               CSTT



Cleanup, Setup, Test, Teardown




                Licensed Under Creative Commons by Naresh Jain
                                                                 73
Patterns

                Independent Tests



Tests shouldn’t depend on each other.
Tests leave the system in the same state it started in.




                Licensed Under Creative Commons by Naresh Jain
                                                                 74
Patterns

               Dynamic Stubbing



Avoiding complications of external systems.




                Licensed Under Creative Commons by Naresh Jain
                                                                 75
Patterns

 Non-Production Setup/Teardown



Using non-production light weigh code for setup and teardown.
Helps test only what you want to test.




                Licensed Under Creative Commons by Naresh Jain
                                                                 76
Patterns

                       Suite Levels


Creating different levels of suites depending on the depth/level of
feedback desired.
Smoke, Current Iteration/Sprint, Regression




                Licensed Under Creative Commons by Naresh Jain
                                                                      77
Patterns

                                DRY



Using !include to avoid repeating yourself.




                Licensed Under Creative Commons by Naresh Jain
                                                                 78
Patterns

                      Make it Real



Write ATs as close as possible to the real environment.




                Licensed Under Creative Commons by Naresh Jain
                                                                 79
Patterns

                 Fixture Evolution



Allow Fixture implementation to evolve over time.
Treat fixtures as first class citizens.




                 Licensed Under Creative Commons by Naresh Jain
                                                                  80
Patterns

        At Least One Test/Story



Every story should have at least one acceptance test
Avoid long/multipurpose tests.




                Licensed Under Creative Commons by Naresh Jain
                                                                 81
Anti-Patterns



Licensed Under Creative Commons by Naresh Jain
                                                 82
Anti-Patterns

                   Developer ATs



Developers writing acceptance tests by themselves, for themselves.




                Licensed Under Creative Commons by Naresh Jain
                                                                     83
Anti-Patterns

                       Unit Testing


Don’t write ATs at the unit testing level
 Unit tests are implementation specific
 ATs are NOT implementation specific




                Licensed Under Creative Commons by Naresh Jain
                                                                 84
Anti-Patterns

                 QA Testing Tool



Hard to write tests up front.
Perhaps only on large projects.




                Licensed Under Creative Commons by Naresh Jain
                                                                 85
Anti-Patterns

                       Silver Bullet


Trying to use FitNesse for all types of Acceptance Tests
 UI testing
 XML testing




                Licensed Under Creative Commons by Naresh Jain
                                                                 86
Anti-Patterns

                         Test After



Writing tests after the code is already written.




                Licensed Under Creative Commons by Naresh Jain
                                                                 87
Anti-Patterns

                Hidden Test Data



Hiding test data in the fixtures.




                Licensed Under Creative Commons by Naresh Jain
                                                                 88
Anti-Patterns
 Implementation Dependent ATs



Making test pages (tables) dependent on implementation details and
data structures.




               Licensed Under Creative Commons by Naresh Jain
                                                                     89
Anti-Patterns

         Logging in Your Fixtures



Putting log statements or print statements in the fixture code.
Fixtures are probably too complicated.




                Licensed Under Creative Commons by Naresh Jain
                                                                 90
Reference


Portions of this presentation is adopted from Micah Martin’s
Introduction to Automated Acceptance Tests Presentation
Kent Beck, Test Driven Development By Example.
"Agile Testing Directions" - Brian Marick

http://www.opensourcetesting.org/




                 Licensed Under Creative Commons by Naresh Jain
                                                                  91
The End

        Questions?

      naresh@agilefaqs.com
     http://blogs.agilefaqs.com



Licensed Under Creative Commons by Naresh Jain
                                                 92

Más contenido relacionado

La actualidad más candente

Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOpsMatthew David
 
A New Introduction to Jira & Agile Product Management
A New Introduction to Jira & Agile Product ManagementA New Introduction to Jira & Agile Product Management
A New Introduction to Jira & Agile Product ManagementDan Chuparkoff
 
Agile Performance Metrics
Agile Performance MetricsAgile Performance Metrics
Agile Performance MetricsACM
 
Agile test-management-test-rail-lastest
Agile test-management-test-rail-lastestAgile test-management-test-rail-lastest
Agile test-management-test-rail-lastestOnur Baskirt
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...Simplilearn
 
Agile Testing and Test Automation
Agile Testing and Test AutomationAgile Testing and Test Automation
Agile Testing and Test AutomationNaveen Kumar Singh
 
Functional to Visual: AI-powered UI Testing from Testim and Applitools
Functional to Visual: AI-powered UI Testing from Testim and ApplitoolsFunctional to Visual: AI-powered UI Testing from Testim and Applitools
Functional to Visual: AI-powered UI Testing from Testim and ApplitoolsApplitools
 
Automation test framework with cucumber – BDD
Automation test framework with cucumber – BDDAutomation test framework with cucumber – BDD
Automation test framework with cucumber – BDD123abcda
 
Quality Assurance and Software Testing
Quality Assurance and Software TestingQuality Assurance and Software Testing
Quality Assurance and Software Testingpingkapil
 
Agile Process Introduction
Agile Process IntroductionAgile Process Introduction
Agile Process IntroductionNguyen Hai
 
0 to hero with Azure DevOps
0 to hero with Azure DevOps0 to hero with Azure DevOps
0 to hero with Azure DevOpsChristos Matskas
 

La actualidad más candente (20)

Azure dev ops
Azure dev opsAzure dev ops
Azure dev ops
 
Agile Testing
Agile Testing  Agile Testing
Agile Testing
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Test Automation in Agile
Test Automation in AgileTest Automation in Agile
Test Automation in Agile
 
A New Introduction to Jira & Agile Product Management
A New Introduction to Jira & Agile Product ManagementA New Introduction to Jira & Agile Product Management
A New Introduction to Jira & Agile Product Management
 
Agile Performance Metrics
Agile Performance MetricsAgile Performance Metrics
Agile Performance Metrics
 
Agile test-management-test-rail-lastest
Agile test-management-test-rail-lastestAgile test-management-test-rail-lastest
Agile test-management-test-rail-lastest
 
Agile Testing
Agile TestingAgile Testing
Agile Testing
 
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
DevOps Tutorial For Beginners | DevOps Tutorial | DevOps Tools | DevOps Train...
 
Azure DevOps
Azure DevOpsAzure DevOps
Azure DevOps
 
Agile Testing and Test Automation
Agile Testing and Test AutomationAgile Testing and Test Automation
Agile Testing and Test Automation
 
Agile testing
Agile testingAgile testing
Agile testing
 
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
 
Functional to Visual: AI-powered UI Testing from Testim and Applitools
Functional to Visual: AI-powered UI Testing from Testim and ApplitoolsFunctional to Visual: AI-powered UI Testing from Testim and Applitools
Functional to Visual: AI-powered UI Testing from Testim and Applitools
 
Automation test framework with cucumber – BDD
Automation test framework with cucumber – BDDAutomation test framework with cucumber – BDD
Automation test framework with cucumber – BDD
 
Tour of Azure DevOps
Tour of Azure DevOpsTour of Azure DevOps
Tour of Azure DevOps
 
Quality Assurance and Software Testing
Quality Assurance and Software TestingQuality Assurance and Software Testing
Quality Assurance and Software Testing
 
Agile Process Introduction
Agile Process IntroductionAgile Process Introduction
Agile Process Introduction
 
0 to hero with Azure DevOps
0 to hero with Azure DevOps0 to hero with Azure DevOps
0 to hero with Azure DevOps
 
QA Best Practices in Agile World_new
QA Best Practices in Agile World_newQA Best Practices in Agile World_new
QA Best Practices in Agile World_new
 

Destacado

ATDD in Practice
ATDD in PracticeATDD in Practice
ATDD in PracticeSteven Mak
 
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)Directi Group
 
Refactoring Fest
Refactoring FestRefactoring Fest
Refactoring FestNaresh Jain
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentNaresh Jain
 
The Limited Red Society
The Limited Red SocietyThe Limited Red Society
The Limited Red SocietyNaresh Jain
 
Managing Iterations
Managing IterationsManaging Iterations
Managing IterationsNaresh Jain
 
Distributed Agile
Distributed AgileDistributed Agile
Distributed AgileNaresh Jain
 
Software Development The Trekkers Way
Software Development The Trekkers WaySoftware Development The Trekkers Way
Software Development The Trekkers WayNaresh Jain
 
Waterfall to Agile Demo
Waterfall to Agile DemoWaterfall to Agile Demo
Waterfall to Agile DemoNaresh Jain
 
XP And Scrum Practices
XP And Scrum PracticesXP And Scrum Practices
XP And Scrum PracticesNaresh Jain
 
Agile Maintenance
Agile MaintenanceAgile Maintenance
Agile MaintenanceNaresh Jain
 
Evolution Of Team Interaction Models
Evolution Of Team Interaction ModelsEvolution Of Team Interaction Models
Evolution Of Team Interaction ModelsNaresh Jain
 
Continuous Deployment Demystified
Continuous Deployment DemystifiedContinuous Deployment Demystified
Continuous Deployment DemystifiedNaresh Jain
 
Offshore Agile Maintenance
Offshore Agile MaintenanceOffshore Agile Maintenance
Offshore Agile MaintenanceNaresh Jain
 
Agile Is the New Waterfall
Agile Is the New WaterfallAgile Is the New Waterfall
Agile Is the New WaterfallNaresh Jain
 
Pair Programming
Pair ProgrammingPair Programming
Pair ProgrammingNaresh Jain
 
Introduction to Acceptance Test Driven Development
Introduction to Acceptance Test Driven DevelopmentIntroduction to Acceptance Test Driven Development
Introduction to Acceptance Test Driven DevelopmentElisabeth Hendrickson
 

Destacado (20)

ATDD in Practice
ATDD in PracticeATDD in Practice
ATDD in Practice
 
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
 
Refactoring Fest
Refactoring FestRefactoring Fest
Refactoring Fest
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
TDD Overview
TDD OverviewTDD Overview
TDD Overview
 
The Limited Red Society
The Limited Red SocietyThe Limited Red Society
The Limited Red Society
 
Managing Iterations
Managing IterationsManaging Iterations
Managing Iterations
 
Distributed Agile
Distributed AgileDistributed Agile
Distributed Agile
 
Agile Overview
Agile OverviewAgile Overview
Agile Overview
 
Software Development The Trekkers Way
Software Development The Trekkers WaySoftware Development The Trekkers Way
Software Development The Trekkers Way
 
Waterfall to Agile Demo
Waterfall to Agile DemoWaterfall to Agile Demo
Waterfall to Agile Demo
 
MVP Hacks
MVP HacksMVP Hacks
MVP Hacks
 
XP And Scrum Practices
XP And Scrum PracticesXP And Scrum Practices
XP And Scrum Practices
 
Agile Maintenance
Agile MaintenanceAgile Maintenance
Agile Maintenance
 
Evolution Of Team Interaction Models
Evolution Of Team Interaction ModelsEvolution Of Team Interaction Models
Evolution Of Team Interaction Models
 
Continuous Deployment Demystified
Continuous Deployment DemystifiedContinuous Deployment Demystified
Continuous Deployment Demystified
 
Offshore Agile Maintenance
Offshore Agile MaintenanceOffshore Agile Maintenance
Offshore Agile Maintenance
 
Agile Is the New Waterfall
Agile Is the New WaterfallAgile Is the New Waterfall
Agile Is the New Waterfall
 
Pair Programming
Pair ProgrammingPair Programming
Pair Programming
 
Introduction to Acceptance Test Driven Development
Introduction to Acceptance Test Driven DevelopmentIntroduction to Acceptance Test Driven Development
Introduction to Acceptance Test Driven Development
 

Similar a ATDD - Acceptance Test Driven Development

Welcome to Innovation Territory - ProductCamp Vancouver 2013
Welcome to Innovation Territory - ProductCamp Vancouver 2013Welcome to Innovation Territory - ProductCamp Vancouver 2013
Welcome to Innovation Territory - ProductCamp Vancouver 2013Cynthia DuVal
 
Product backlog stories_acceptancecriteria_size_priority
Product backlog  stories_acceptancecriteria_size_priorityProduct backlog  stories_acceptancecriteria_size_priority
Product backlog stories_acceptancecriteria_size_priorityRussell Pannone
 
Spikes nad SCRUM_Se lect6 btech
Spikes nad SCRUM_Se lect6 btechSpikes nad SCRUM_Se lect6 btech
Spikes nad SCRUM_Se lect6 btechIIITA
 
Story Mapping in a Nutshell
Story Mapping in a NutshellStory Mapping in a Nutshell
Story Mapping in a NutshellVersionOne
 
The BA role in Agile Development
The BA role in Agile Development The BA role in Agile Development
The BA role in Agile Development Agileee
 
Lean Startup for Smart Entrepreneurs
Lean Startup for Smart EntrepreneursLean Startup for Smart Entrepreneurs
Lean Startup for Smart EntrepreneursClaudio Perrone
 
Techniques for Effectively Slicing User Stories by Naresh Jain
Techniques for Effectively Slicing User Stories by Naresh JainTechniques for Effectively Slicing User Stories by Naresh Jain
Techniques for Effectively Slicing User Stories by Naresh JainNaresh Jain
 
Agile 10 Step Story Model
Agile 10 Step Story ModelAgile 10 Step Story Model
Agile 10 Step Story Modelallan kelly
 
Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | Digital ...
Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | Digital ...Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | Digital ...
Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | Digital ...Rebekah Baggs
 
Yes But What Do We Do?
Yes But What Do We Do?Yes But What Do We Do?
Yes But What Do We Do?John Caswell
 
Swiss Dialogue Arena Lausanne, Flexibility and Innovation - Pohle Christoffer...
Swiss Dialogue Arena Lausanne, Flexibility and Innovation - Pohle Christoffer...Swiss Dialogue Arena Lausanne, Flexibility and Innovation - Pohle Christoffer...
Swiss Dialogue Arena Lausanne, Flexibility and Innovation - Pohle Christoffer...Matthias Pohle
 
Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | #DSCHI
Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | #DSCHIBridging Silos Between SEO, UX, and Content for Big Marketing Wins | #DSCHI
Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | #DSCHIRebekah Baggs
 
Maneuver Warfare and Other Badass Habits of a Lean Product Developer

Maneuver Warfare and Other Badass Habits of a Lean Product Developer
Maneuver Warfare and Other Badass Habits of a Lean Product Developer

Maneuver Warfare and Other Badass Habits of a Lean Product Developer
Marko Taipale
 
A Structured Approach to Investing using Toolkit 6
A Structured Approach to Investing using Toolkit 6A Structured Approach to Investing using Toolkit 6
A Structured Approach to Investing using Toolkit 6Doug Gerlach
 
BearingPoint: Beyond the horizon of retail analytics
BearingPoint: Beyond the horizon of retail analyticsBearingPoint: Beyond the horizon of retail analytics
BearingPoint: Beyond the horizon of retail analyticsJari Laine
 
Leading Agile Product Discovery
Leading Agile Product DiscoveryLeading Agile Product Discovery
Leading Agile Product DiscoveryArmond Mehrabian
 

Similar a ATDD - Acceptance Test Driven Development (20)

Welcome to Innovation Territory - ProductCamp Vancouver 2013
Welcome to Innovation Territory - ProductCamp Vancouver 2013Welcome to Innovation Territory - ProductCamp Vancouver 2013
Welcome to Innovation Territory - ProductCamp Vancouver 2013
 
Product backlog stories_acceptancecriteria_size_priority
Product backlog  stories_acceptancecriteria_size_priorityProduct backlog  stories_acceptancecriteria_size_priority
Product backlog stories_acceptancecriteria_size_priority
 
Spikes nad SCRUM_Se lect6 btech
Spikes nad SCRUM_Se lect6 btechSpikes nad SCRUM_Se lect6 btech
Spikes nad SCRUM_Se lect6 btech
 
Story Mapping in a Nutshell
Story Mapping in a NutshellStory Mapping in a Nutshell
Story Mapping in a Nutshell
 
The BA role in Agile Development
The BA role in Agile Development The BA role in Agile Development
The BA role in Agile Development
 
Lean Startup for Smart Entrepreneurs
Lean Startup for Smart EntrepreneursLean Startup for Smart Entrepreneurs
Lean Startup for Smart Entrepreneurs
 
Techniques for Effectively Slicing User Stories by Naresh Jain
Techniques for Effectively Slicing User Stories by Naresh JainTechniques for Effectively Slicing User Stories by Naresh Jain
Techniques for Effectively Slicing User Stories by Naresh Jain
 
Agile 10 Step Story Model
Agile 10 Step Story ModelAgile 10 Step Story Model
Agile 10 Step Story Model
 
Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | Digital ...
Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | Digital ...Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | Digital ...
Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | Digital ...
 
Yes But What Do We Do?
Yes But What Do We Do?Yes But What Do We Do?
Yes But What Do We Do?
 
Swiss Dialogue Arena Lausanne, Flexibility and Innovation - Pohle Christoffer...
Swiss Dialogue Arena Lausanne, Flexibility and Innovation - Pohle Christoffer...Swiss Dialogue Arena Lausanne, Flexibility and Innovation - Pohle Christoffer...
Swiss Dialogue Arena Lausanne, Flexibility and Innovation - Pohle Christoffer...
 
Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | #DSCHI
Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | #DSCHIBridging Silos Between SEO, UX, and Content for Big Marketing Wins | #DSCHI
Bridging Silos Between SEO, UX, and Content for Big Marketing Wins | #DSCHI
 
Maneuver Warfare and Other Badass Habits of a Lean Product Developer

Maneuver Warfare and Other Badass Habits of a Lean Product Developer
Maneuver Warfare and Other Badass Habits of a Lean Product Developer

Maneuver Warfare and Other Badass Habits of a Lean Product Developer

 
A Structured Approach to Investing using Toolkit 6
A Structured Approach to Investing using Toolkit 6A Structured Approach to Investing using Toolkit 6
A Structured Approach to Investing using Toolkit 6
 
User Stories Applied
User Stories AppliedUser Stories Applied
User Stories Applied
 
BearingPoint: Beyond the horizon of retail analytics
BearingPoint: Beyond the horizon of retail analyticsBearingPoint: Beyond the horizon of retail analytics
BearingPoint: Beyond the horizon of retail analytics
 
Effectcup promo en
Effectcup promo enEffectcup promo en
Effectcup promo en
 
Discussionguide
DiscussionguideDiscussionguide
Discussionguide
 
Leading Agile Product Discovery
Leading Agile Product DiscoveryLeading Agile Product Discovery
Leading Agile Product Discovery
 
BI insight newsletter
BI insight newsletterBI insight newsletter
BI insight newsletter
 

Más de Naresh Jain

Problem Solving Techniques For Evolutionary Design
Problem Solving Techniques For Evolutionary DesignProblem Solving Techniques For Evolutionary Design
Problem Solving Techniques For Evolutionary DesignNaresh Jain
 
Agile India 2019 Conference Welcome Note
Agile India 2019 Conference Welcome NoteAgile India 2019 Conference Welcome Note
Agile India 2019 Conference Welcome NoteNaresh Jain
 
Organizational Resilience
Organizational ResilienceOrganizational Resilience
Organizational ResilienceNaresh Jain
 
Improving the Quality of Incoming Code
Improving the Quality of Incoming CodeImproving the Quality of Incoming Code
Improving the Quality of Incoming CodeNaresh Jain
 
Agile India 2018 Conference Summary
Agile India 2018 Conference SummaryAgile India 2018 Conference Summary
Agile India 2018 Conference SummaryNaresh Jain
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 ConferenceNaresh Jain
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 ConferenceNaresh Jain
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 ConferenceNaresh Jain
 
Pilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert VirdingPilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert VirdingNaresh Jain
 
Concurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco CesariniConcurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco CesariniNaresh Jain
 
Erlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco CesariniErlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco CesariniNaresh Jain
 
Anatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur DatarAnatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur DatarNaresh Jain
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppNaresh Jain
 
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdTowards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdNaresh Jain
 
Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas Naresh Jain
 
No Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKennaNo Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKennaNaresh Jain
 
Functional Programming Conference 2016
Functional Programming Conference 2016Functional Programming Conference 2016
Functional Programming Conference 2016Naresh Jain
 
Agile India 2017 Conference
Agile India 2017 ConferenceAgile India 2017 Conference
Agile India 2017 ConferenceNaresh Jain
 
Unleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDTUnleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDTNaresh Jain
 

Más de Naresh Jain (20)

Problem Solving Techniques For Evolutionary Design
Problem Solving Techniques For Evolutionary DesignProblem Solving Techniques For Evolutionary Design
Problem Solving Techniques For Evolutionary Design
 
Agile India 2019 Conference Welcome Note
Agile India 2019 Conference Welcome NoteAgile India 2019 Conference Welcome Note
Agile India 2019 Conference Welcome Note
 
Organizational Resilience
Organizational ResilienceOrganizational Resilience
Organizational Resilience
 
Improving the Quality of Incoming Code
Improving the Quality of Incoming CodeImproving the Quality of Incoming Code
Improving the Quality of Incoming Code
 
Agile India 2018 Conference Summary
Agile India 2018 Conference SummaryAgile India 2018 Conference Summary
Agile India 2018 Conference Summary
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
 
Pilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert VirdingPilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert Virding
 
Concurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco CesariniConcurrent languages are Functional by Francesco Cesarini
Concurrent languages are Functional by Francesco Cesarini
 
Erlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco CesariniErlang from behing the trenches by Francesco Cesarini
Erlang from behing the trenches by Francesco Cesarini
 
Anatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur DatarAnatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur Datar
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile App
 
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdTowards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
 
Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas
 
No Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKennaNo Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKenna
 
Functional Programming Conference 2016
Functional Programming Conference 2016Functional Programming Conference 2016
Functional Programming Conference 2016
 
Agile India 2017 Conference
Agile India 2017 ConferenceAgile India 2017 Conference
Agile India 2017 Conference
 
The Eclipse Way
The Eclipse WayThe Eclipse Way
The Eclipse Way
 
Unleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDTUnleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDT
 

Último

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 

Último (20)

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 

ATDD - Acceptance Test Driven Development

  • 1. Acceptance Test Driven Development Naresh Jain naresh@agilefaqs.com http://blogs.agilefaqs.com Licensed Under Creative Commons by Naresh Jain 1
  • 2. Warmup Scenarios Licensed Under Creative Commons by Naresh Jain 2
  • 3. Warmup Scenarios Pick one scenario and in relation to your scenario, what are the specific observable results that will tell you that the activity has been successfully completed? Licensed Under Creative Commons by Naresh Jain 2
  • 4. Warmup Scenarios Pick one scenario and in relation to your scenario, what are the specific observable results that will tell you that the activity has been successfully completed? Going out for Movie (THX sound and Digital projection) Licensed Under Creative Commons by Naresh Jain 2
  • 5. Warmup Scenarios Pick one scenario and in relation to your scenario, what are the specific observable results that will tell you that the activity has been successfully completed? Going out for Movie (THX sound and Digital projection) Going out for meal (one veg.) Licensed Under Creative Commons by Naresh Jain 2
  • 6. Warmup Scenarios Pick one scenario and in relation to your scenario, what are the specific observable results that will tell you that the activity has been successfully completed? Going out for Movie (THX sound and Digital projection) Going out for meal (one veg.) Going shopping ($50) Licensed Under Creative Commons by Naresh Jain 2
  • 7. Warmup Scenarios Pick one scenario and in relation to your scenario, what are the specific observable results that will tell you that the activity has been successfully completed? Going out for Movie (THX sound and Digital projection) Going out for meal (one veg.) Going shopping ($50) [10 Minutes] Licensed Under Creative Commons by Naresh Jain 2
  • 8. Warmup Scenarios Pick one scenario and in relation to your scenario, what are the specific observable results that will tell you that the activity has been successfully completed? Going out for Movie (THX sound and Digital projection) Going out for meal (one veg.) Going shopping ($50) [10 Minutes] Present back to the group your findings. [3 minutes per group] Licensed Under Creative Commons by Naresh Jain 2
  • 9. What is a Story? Story is a smallest piece of functionality that add business value Story Title - Actor Action Context As a .. <user who requires this feature> I want .. <do something> So that... <user goal/business justification> Ron Jeffries’ 3 Cs - Card, Conversation and Confirmation 3
  • 10. Story Example Title: Keen Reader subscribes to a blog As a keen reader of your blog I want to subscribe to your blog So that I can stay up-to-date with the new posts 4
  • 11. Another Story Example Title: Social Networking Enthusiast uploads profile picture As a Social Networking Enthusiast I want to upload my profile picture So my friends can see how I look and recognize me 5
  • 12. What makes a good Story? 6
  • 13. What makes a good Story? Stories should follow the INVEST principle: 6
  • 14. What makes a good Story? Stories should follow the INVEST principle: Independent 6
  • 15. What makes a good Story? Stories should follow the INVEST principle: Independent Negotiable 6
  • 16. What makes a good Story? Stories should follow the INVEST principle: Independent Negotiable Valuable 6
  • 17. What makes a good Story? Stories should follow the INVEST principle: Independent Negotiable Valuable Estimate-able 6
  • 18. What makes a good Story? Stories should follow the INVEST principle: Independent Negotiable Valuable Estimate-able Small 6
  • 19. What makes a good Story? Stories should follow the INVEST principle: Independent Negotiable Valuable Estimate-able Small Testable 6
  • 20. Stories are fundamental unit of activity 7
  • 21. Stories are fundamental unit of activity Business Goals 7
  • 22. Stories are fundamental unit of activity Business Goals Inception 7
  • 23. Stories are fundamental unit of activity Business Goals Product Backlog Inception As a ____, I want to be able to ____ so that ____ Might have an initial estimate (perhaps for both analysis and development), and an expression of technical and business confidence that this is real and achievable 7
  • 24. Stories are fundamental unit of activity Business Goals Product Backlog Inception Release planning As a ____, I want to be able to ____ so that ____ Might have an initial estimate (perhaps for both analysis and development), and an expression of technical and business confidence that this is real and achievable 7
  • 25. Stories are fundamental unit of activity Business Goals Product Backlog Release Backlog Inception Release planning As a ____, I want to As a ____, I want to be able to ____ so be able to ____ so that ____ that ____ I will know this is done when _______ Might have an initial estimate (perhaps for both analysis and development), and an expression of technical and business confidence that this is real and achievable More detailed estimate, and a specific acceptance test – low confidence stories might be “spiked” or prototyped 7
  • 26. Stories are fundamental unit of activity Business Goals Product Backlog Release Backlog Inception Release planning Sprint planning As a ____, I want to As a ____, I want to be able to ____ so be able to ____ so that ____ that ____ I will know this is done when _______ Might have an initial estimate (perhaps for both analysis and development), and an expression of technical and business confidence that this is real and achievable More detailed estimate, and a specific acceptance test – low confidence stories might be “spiked” or prototyped 7
  • 27. Stories are fundamental unit of activity Business Goals Product Backlog Release Backlog Sprint Backlog Inception Release planning Sprint planning As a ____, I want to As a ____, I want to As a ____, I want to be able to ____ so be able to ____ so be able to ____ so that ____ that ____ that ____ Possible automation of the acceptance test I will know this is done I will know this is done when _______ when _______ Might have an initial estimate (perhaps for both analysis and development), and an Development team expression of technical and breaks out the detail To do this I must: business confidence that this of work needed to 1) _____ is real and achievable More detailed estimate, and a pass test 2) _____ specific acceptance test – low confidence stories might be “spiked” or prototyped 7
  • 28. Acceptance Criteria Is a set of conditions that the Story must meet for it to be accepted as complete Is typically provided by the customer or product owner. Is not a replacement for conversation. Is the results of the conversation Acceptance Criteria are NOT tests 8
  • 29. Writing Acceptance Criteria Acceptance Criteria should contain: ACTOR VERB – DESCRIBING A BEHAVIOR OBSERVABLE RESULT To accommodate pre-conditions Acceptance Criteria can be expressed as Given [Precondition] When [Actor + Action] Then [Observable Result] 9
  • 30. Example Social Networking Enthusiast uploads profile picture 10
  • 31. Example Social Networking Enthusiast uploads profile picture Given the user has a valid facebook account and a digital picture on her computer, When she uploads a picture in facebook, Then her the picture should be visible to all her friends in her network. 10
  • 32. Example Social Networking Enthusiast uploads profile picture Given the user has a valid facebook account and a digital picture on her computer, When she uploads a picture in facebook, Then her the picture should be visible to all her friends in her network. Given an user is trying to find a friend on facebook, When the user searches for a person using their name, Then their profile picture should be displayed along with other details. 10
  • 33. Example Social Networking Enthusiast uploads profile picture Given the user has a valid facebook account and a digital picture on her computer, When she uploads a picture in facebook, Then her the picture should be visible to all her friends in her network. Given an user is trying to find a friend on facebook, When the user searches for a person using their name, Then their profile picture should be displayed along with other details. As owner of facebook, I want users to upload authentic, personal profile picture, So facebook's reputation remains intact and facebook stays out of legal hassles. 10
  • 34. Acceptance Criteria & Tests: Definition Acceptance Tests Licensed Under Creative Commons by Naresh Jain 11
  • 35. Acceptance Criteria & Tests: Definition Acceptance Tests Acceptance Criteria Licensed Under Creative Commons by Naresh Jain 11
  • 36. Acceptance Criteria & Tests: Definition Acceptance Tests Acceptance Criteria + Licensed Under Creative Commons by Naresh Jain 11
  • 37. Acceptance Criteria & Tests: Definition Acceptance Tests Acceptance Criteria + Examples (data + scenarios) Licensed Under Creative Commons by Naresh Jain 11
  • 38. Acceptance Criteria & Tests: Definition Acceptance Tests Acceptance Criteria + Examples (data + scenarios) Acceptance Tests Licensed Under Creative Commons by Naresh Jain 11
  • 39. Tasks Team members further break down each story into tasks that need to be completed to meet the acceptance criteria for the story. 12
  • 40. Tasks Team members further break down each story into tasks that need to be completed to meet the acceptance criteria for the story. To accomplish this story: we start off with a simple upload and image display 12
  • 41. Tasks Team members further break down each story into tasks that need to be completed to meet the acceptance criteria for the story. To accomplish this story: we start off with a simple upload and image display restrict user to only upload certain image types (gif, jpg and png) 12
  • 42. Tasks Team members further break down each story into tasks that need to be completed to meet the acceptance criteria for the story. To accomplish this story: we start off with a simple upload and image display restrict user to only upload certain image types (gif, jpg and png) figure out where to store the image. (performant and fault-tolarent) 12
  • 43. Tasks Team members further break down each story into tasks that need to be completed to meet the acceptance criteria for the story. To accomplish this story: we start off with a simple upload and image display restrict user to only upload certain image types (gif, jpg and png) figure out where to store the image. (performant and fault-tolarent) scale down (size, resolution, etc.) of the image 12
  • 44. Tasks Team members further break down each story into tasks that need to be completed to meet the acceptance criteria for the story. To accomplish this story: we start off with a simple upload and image display restrict user to only upload certain image types (gif, jpg and png) figure out where to store the image. (performant and fault-tolarent) scale down (size, resolution, etc.) of the image and so on... 12
  • 45. Demo Roman Numerals to Decimal Conversion Example Licensed Under Creative Commons by Naresh Jain 13
  • 46. Demo Real World Domain Forwarding Server Licensed Under Creative Commons by Naresh Jain 14
  • 47. Thinking in Tables Licensed Under Creative Commons by Naresh Jain 15
  • 48. Thinking in Tables Only Tables Execute Ignored Executed Licensed Under Creative Commons by Naresh Jain 16
  • 49. Thinking in Tables Foundational Table Structure Name of Fixture Interaction with Application Table structure depends on type of Fixture Licensed Under Creative Commons by Naresh Jain 17
  • 50. Thinking in Tables 3 Foundation Fixtures Column Fixture Row Fixture Action Fixture Licensed Under Creative Commons by Naresh Jain 18
  • 51. Thinking in Tables Column Fixture Licensed Under Creative Commons by Naresh Jain 19
  • 52. Thinking in Tables Row Fixture Analogous to comparing against rows in a database table Licensed Under Creative Commons by Naresh Jain 20
  • 53. Thinking in Tables Action Fixture Think GUI window Counter Window Counter: public class CountFixture extends Fixture { private int counter = 0; Counter: 6 public void count() { Count counter++; } public int counter() { return counter; } } Licensed Under Creative Commons by Naresh Jain 21
  • 54. FitLibrary Extension to FIT Written by Rick Mugridge Adds some handy Fixtures Licensed Under Creative Commons by Naresh Jain 22
  • 55. FitLibrary FitLibrary Fixtures ArrayFixture for ordered lists SetFixture for unordered lists SetUpFixture Supports Graphics Tree structures Nested Tables Licensed Under Creative Commons by Naresh Jain 23
  • 56. FitLibrary DoFixture • Broken tables • Highly readable • Flexibility Licensed Under Creative Commons by Naresh Jain 24
  • 57. Tools FIT Framework for Integrated Tests Created by Ward Cunningham Open Source The most accepted solution for agile acceptance testing Licensed Under Creative Commons by Naresh Jain 25
  • 58. Tools FitNesse Environment build around FIT Makes everything easier Created by Object Mentor, Inc. Open Source Licensed Under Creative Commons by Naresh Jain 26
  • 59. FIT FitNesse - Stand alone web server - Is a wiki - Tests written in HTML - Tests written in wiki text - Tests are executed on the command line - Tests are executed from within the wiki - Tables are executed - Translates tests into HTML - Non-table markup is ignored - Uses FIT to execute tests - Tables map to Fixtures - Supports test suites - Fixtures are code that is aware of the - Supports variables in tests system - Supports test refactoring - Supplies foundational Fixtures - Written in Java - Implementations ported to many - Supports FIT implementations in any languages language Licensed Under Creative Commons by Naresh Jain 27
  • 60. Acceptance Criteria and Tests: A Critical Piece of Agile Licensed Under Creative Commons by Naresh Jain 28
  • 61. Acceptance Criteria & Tests: A Critical Piece of Agile Traditional Approach 1 May 1 Jul 1 Sep 1 Nov Analysis Design Implementation ERD DFD DD ST Licensed Under Creative Commons by Naresh Jain 29
  • 62. Key Questions Business Facing Are we building the right product? Are we building the product right? Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 30
  • 63. Brian Marick’s Test Categorization Business Facing Supports Programming Critique product Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 31
  • 64. It Helps to Think of Tests this way... Business Facing Drives Development Critique product Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 32
  • 65. It Helps to Think of Tests this way... Business Facing Drives Development Critique product Unit Testing Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 32
  • 66. It Helps to Think of Tests this way... Business Facing Acceptance Testing Drives Development Critique product Low-fi prototypes Unit Testing Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 32
  • 67. It Helps to Think of Tests this way... Business Facing Acceptance Testing Exploratory Testing Drives Development Critique product Low-fi prototypes UI and Usability Testing Unit Testing Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 32
  • 68. It Helps to Think of Tests this way... Business Facing Acceptance Testing Exploratory Testing Drives Development Critique product Low-fi prototypes UI and Usability Testing Performance Testing Unit Testing System Tests Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 32
  • 69. Avatars of TDD Business Facing Drives Development Critique product Inside Out Outside In Technology/Implementation Facing Licensed Under Creative Commons by Naresh Jain 33
  • 70. Test Driven Development TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  • 71. Test Driven Development Add a Test TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  • 72. Test Driven Development Add a Test Run the Test TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  • 73. Test Driven Development Add a Test Pass Run the Test TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  • 74. Test Driven Development Add a Test Pass Run the Test Fail TDD Rhythm - Test, Code, Refactor Licensed Under Creative Commons by Naresh Jain 34
  • 75. Test Driven Development Add a Test Pass Run the Test Fail TDD Rhythm - Test, Code, Refactor Make a little change Licensed Under Creative Commons by Naresh Jain 34
  • 76. Test Driven Development Add a Test Pass Run the Test Fail TDD Rhythm - Test, Code, Refactor Make a little change Run the Test Licensed Under Creative Commons by Naresh Jain 34
  • 77. Test Driven Development Add a Test Pass Run the Test Fail TDD Rhythm - Test, Code, Refactor Make a little change Fail Run the Test Licensed Under Creative Commons by Naresh Jain 34
  • 78. Test Driven Development Add a Test Pass Run the Test Fail TDD Rhythm - Test, Code, Refactor Make a little change Fail Run the Test Pass Licensed Under Creative Commons by Naresh Jain 34
  • 79. Test Driven Development Add a Test Pass Run the Test Fail TDD Rhythm - Test, Code, Refactor Make a little change Fail Run the Test Pass Refactor Licensed Under Creative Commons by Naresh Jain 34
  • 80. Test Driven Development Add a Test Pass Run the Test Fail TDD Rhythm - Test, Code, Refactor Make a little change Fail Run the Test Pass Refactor Licensed Under Creative Commons by Naresh Jain 34
  • 81. Test Driven Development Add a Test Pass Run the Test Fail TDD Rhythm - Test, Code, Refactor Make a little change Fail Run the Test Pass Refactor Licensed Under Creative Commons by Naresh Jain 34
  • 82. Test Driven Development Add a Test Pass Run the Test Fail TDD Rhythm - Test, Code, Refactor Make a little change Fail Run the Test Pass Refactor Licensed Under Creative Commons by Naresh Jain 34
  • 83. Acceptance Test Driven Development Licensed Under Creative Commons by Naresh Jain 35
  • 84. Acceptance Test Driven Development Story Licensed Under Creative Commons by Naresh Jain 35
  • 85. Acceptance Test Driven Development Acceptance Criteria Story Licensed Under Creative Commons by Naresh Jain 35
  • 86. Acceptance Test Driven Development Iteration Acceptance Criteria Story Licensed Under Creative Commons by Naresh Jain 35
  • 87. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria Tests Story Licensed Under Creative Commons by Naresh Jain 35
  • 88. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria Tests Story Automated Unit Test Licensed Under Creative Commons by Naresh Jain 35
  • 89. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria Tests Story Automated Unit Test Automated Acceptance Tests Licensed Under Creative Commons by Naresh Jain 35
  • 90. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria Tests Story Automated Unit Test Automated Acceptance Tests Exploratory Testing Licensed Under Creative Commons by Naresh Jain 35
  • 91. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria Tests Story Automated Unit Test Automated Acceptance Tests Acceptance Exploratory Criteria Testing Licensed Under Creative Commons by Naresh Jain 35
  • 92. Acceptance Test Driven Development Iteration Automated Acceptance Acceptance Criteria Tests Story Automated Unit Test Automated UI Tests Automated Acceptance Tests Acceptance Exploratory Criteria Testing Licensed Under Creative Commons by Naresh Jain 35
  • 93. Acceptance Test Driven Development Iteration Automated P Acceptance E Acceptance R Criteria Tests F O Automated R Story M T Unit Test Automated E E UI Tests N S C T E S Automated Acceptance Tests Acceptance Exploratory Criteria Testing Licensed Under Creative Commons by Naresh Jain 35
  • 94. Mike Cohn’s Testing Pyramid Licensed Under Creative Commons by Naresh Jain 36
  • 95. Mike Cohn’s Testing Pyramid GUI Tests Licensed Under Creative Commons by Naresh Jain 36
  • 96. Mike Cohn’s Testing Pyramid Small in Number GUI Tools: Selenium, Sahi, Watir, Abbot, Frankenstein Tests Licensed Under Creative Commons by Naresh Jain 36
  • 97. Mike Cohn’s Testing Pyramid Small in Number GUI Tools: Selenium, Sahi, Watir, Abbot, Frankenstein Tests Acceptance Tests Licensed Under Creative Commons by Naresh Jain 36
  • 98. Mike Cohn’s Testing Pyramid Small in Number GUI Tools: Selenium, Sahi, Watir, Abbot, Frankenstein Tests At least one per story Acceptance Tools: Fit, FitNesse, RSpec, JBehave Tests Licensed Under Creative Commons by Naresh Jain 36
  • 99. Mike Cohn’s Testing Pyramid Small in Number GUI Tools: Selenium, Sahi, Watir, Abbot, Frankenstein Tests At least one per story Acceptance Tools: Fit, FitNesse, RSpec, JBehave Tests Unit Tests Licensed Under Creative Commons by Naresh Jain 36
  • 100. Mike Cohn’s Testing Pyramid Small in Number GUI Tools: Selenium, Sahi, Watir, Abbot, Frankenstein Tests At least one per story Acceptance Tools: Fit, FitNesse, RSpec, JBehave Tests At least one per class or module Unit Tests Tools: xUnit, TestNG Licensed Under Creative Commons by Naresh Jain 36
  • 101. Acceptance Tests: A Critical Piece of Agile Criteria for DONE Every story must have at least one Acceptance Test A story is not DONE until it passes it’s Acceptance Tests Licensed Under Creative Commons by Naresh Jain 37
  • 102. Acceptance Tests: A Critical Piece of Agile Manual Acceptance Tests Licensed Under Creative Commons by Naresh Jain 38
  • 103. Acceptance Tests: A Critical Piece of Agile Manual Acceptance Tests Manual Acceptance Tests Licensed Under Creative Commons by Naresh Jain 38
  • 104. Acceptance Tests: A Critical Piece of Agile Manual Acceptance Tests Manual Acceptance Tests Licensed Under Creative Commons by Naresh Jain 38
  • 105. Why Acceptance Tests? Criteria for Completion Great Collaboration tool Source of Feedback Real data to measure progress Licensed Under Creative Commons by Naresh Jain 39
  • 106. Data From Acceptance Tests Total ATs Failing ATs Passing ATs 90 72 54 36 18 0 1 2 3 4 5 6 7 8 9 10 Licensed Under Creative Commons by Naresh Jain 40
  • 107. Acceptance Tests Are Automated Licensed Under Creative Commons by Naresh Jain 41
  • 108. Acceptance Tests: A Critical Piece of Agile The Button How often would you press it? When would you press it? Who would press it? Testers, Developers, Managers, Customers, Spectators, etc. Licensed Under Creative Commons by Naresh Jain 42
  • 109. Licensed Under Creative Commons by Naresh Jain 43
  • 110. Criteria for DONE Licensed Under Creative Commons by Naresh Jain 43
  • 111. Criteria for DONE + Licensed Under Creative Commons by Naresh Jain 43
  • 112. Criteria for DONE + Automated Licensed Under Creative Commons by Naresh Jain 43
  • 113. Criteria for DONE + Automated Executable Specification Licensed Under Creative Commons by Naresh Jain 43
  • 114. Acceptance Tests: A Critical Piece of Agile Executable Specification A new paradigm for testing Puts quality first Removes ambiguity from requirements Licensed Under Creative Commons by Naresh Jain 44
  • 115. Who Writes Acceptance Tests? Licensed Under Creative Commons by Naresh Jain 45
  • 116. Who Writes Acceptance Tests? The Customer The Customer Role Stake holder Business Analyst Quality Assurance Product Owner Developer Licensed Under Creative Commons by Naresh Jain 46
  • 117. Who Writes Acceptance Tests? Tests Get Technical The “Customer” may need technical help to write tests Developers and QAs are technical Pair test authoring Licensed Under Creative Commons by Naresh Jain 47
  • 118. Who Writes Acceptance Tests? Business Rules Get Fuzzy Sometimes developers need help understanding tests Customers know business rules Pair test implementation Licensed Under Creative Commons by Naresh Jain 48
  • 119. Exercise #1 Licensed Under Creative Commons by Naresh Jain 49
  • 120. Exercise #1 The Login Test Write a test plan, in plain text, for the business rules of logging in. Web application User credentials are stored in relational database Successful login redirects to “Welcome” page Licensed Under Creative Commons by Naresh Jain 50
  • 121. Writing Good Acceptance Tests Licensed Under Creative Commons by Naresh Jain 51
  • 122. Writing Good Acceptance Tests Login Test Possibilities 1. Direct browser to URL for login page Licensed Under Creative Commons by Naresh Jain 52
  • 123. Writing Good Acceptance Tests Login Test Possibilities 1. Direct browser to URL for login page Licensed Under Creative Commons by Naresh Jain 52
  • 124. Writing Good Acceptance Tests Login Test Possibilities 1. Direct browser to URL for login page 1. Enter the username ‘wallace’ Licensed Under Creative Commons by Naresh Jain 52
  • 125. Writing Good Acceptance Tests Login Test Possibilities 1. Direct browser to URL for login page 1. Enter the username ‘wallace’ Licensed Under Creative Commons by Naresh Jain 52
  • 126. Writing Good Acceptance Tests Login Test Possibilities 1. Direct browser to URL for login page 1. Enter the username ‘wallace’ Build a Testable Environment First Licensed Under Creative Commons by Naresh Jain 52
  • 127. Writing Good Acceptance Tests Login Test Possibilities 1. Add some users to the system Licensed Under Creative Commons by Naresh Jain 53
  • 128. Writing Good Acceptance Tests Login Test Possibilities 1. Add some users to the system Licensed Under Creative Commons by Naresh Jain 53
  • 129. Writing Good Acceptance Tests Login Test Possibilities 1. Add some users to the system 3. Enter a value into the username field Licensed Under Creative Commons by Naresh Jain 53
  • 130. Writing Good Acceptance Tests Login Test Possibilities 1. Add some users to the system 3. Enter a value into the username field Licensed Under Creative Commons by Naresh Jain 53
  • 131. Writing Good Acceptance Tests Login Test Possibilities 1. Add some users to the system 3. Enter a value into the username field Be Specific Licensed Under Creative Commons by Naresh Jain 53
  • 132. Writing Good Acceptance Tests Tests are Examples Use concrete examples Specify concrete behavior No ambiguity allowed Licensed Under Creative Commons by Naresh Jain 54
  • 133. Writing Good Acceptance Tests Login Test Possibilities 1. Insert into User table values (’wallace’, ‘ilikecheeze’) Licensed Under Creative Commons by Naresh Jain 55
  • 134. Writing Good Acceptance Tests Login Test Possibilities 1. Insert into User table values (’wallace’, ‘ilikecheeze’) Licensed Under Creative Commons by Naresh Jain 55
  • 135. Writing Good Acceptance Tests Login Test Possibilities 1. Insert into User table values (’wallace’, ‘ilikecheeze’) 2. Open a browser to the URL http:// localhost/myapp Licensed Under Creative Commons by Naresh Jain 55
  • 136. Writing Good Acceptance Tests Login Test Possibilities 1. Insert into User table values (’wallace’, ‘ilikecheeze’) 2. Open a browser to the URL http:// localhost/myapp Licensed Under Creative Commons by Naresh Jain 55
  • 137. Writing Good Acceptance Tests Login Test Possibilities 1. Insert into User table values (’wallace’, ‘ilikecheeze’) 2. Open a browser to the URL http:// localhost/myapp Avoid Implementation Details Licensed Under Creative Commons by Naresh Jain 55
  • 138. Good Acceptable Criteria and Tests Licensed Under Creative Commons by Naresh Jain 56
  • 139. Good Acceptable Criteria and Tests S - SPECIFIC - Explicitly defined and definite Licensed Under Creative Commons by Naresh Jain 56
  • 140. Good Acceptable Criteria and Tests S - SPECIFIC - Explicitly defined and definite M - MEASURABLE - Possible to observe and quantify Licensed Under Creative Commons by Naresh Jain 56
  • 141. Good Acceptable Criteria and Tests S - SPECIFIC - Explicitly defined and definite M - MEASURABLE - Possible to observe and quantify A - ACHIEVABLE - Capable of existing or taking place Licensed Under Creative Commons by Naresh Jain 56
  • 142. Good Acceptable Criteria and Tests S - SPECIFIC - Explicitly defined and definite M - MEASURABLE - Possible to observe and quantify A - ACHIEVABLE - Capable of existing or taking place R - RELEVANT - Having a connection with the story Licensed Under Creative Commons by Naresh Jain 56
  • 143. Good Acceptable Criteria and Tests S - SPECIFIC - Explicitly defined and definite M - MEASURABLE - Possible to observe and quantify A - ACHIEVABLE - Capable of existing or taking place R - RELEVANT - Having a connection with the story T - TIME-BOUND – When will the outcome be observed Licensed Under Creative Commons by Naresh Jain 56
  • 144. Writing Good Acceptance Tests Avoid Implementation Details Acceptance Tests View UI Model and Presenter Business Tier Data Store Licensed Under Creative Commons by Naresh Jain 57
  • 145. Writing Good Acceptance Tests Login Test: Possible Solution Add user to system: (’wallace’, ‘ilikecheeze’) Process login with username ‘wallace’ and password ‘blah’ Check login failed Process login with username ‘wallace’ and password ‘ilikecheeze’ Check login succeeded Licensed Under Creative Commons by Naresh Jain 58
  • 146. Tools Licensed Under Creative Commons by Naresh Jain 59
  • 147. Tools Commercial Tools WinRunner TestPartner EggPlant Silk QTP TestComplete RFT Squish WindowTester Are not suitable for Acceptance Testing in an Agile environment Licensed Under Creative Commons by Naresh Jain 60
  • 148. Tools Open Source Options FIT Sahi Frankenstein FitNesse Watir Cucumber Selenium Abbot RSpec/JBehave Among the few tools that support Test Driven Development Licensed Under Creative Commons by Naresh Jain 61
  • 149. Wiki Licensed Under Creative Commons by Naresh Jain 62
  • 150. Wiki What is it? A collaborative web site Editable by any Created by Ward Cunningham Every project should have one http://c2.com/wiki http://en.wikipedia.com Licensed Under Creative Commons by Naresh Jain 63
  • 151. Wiki Creating Tests Use Wiki syntax to create a page with test tables Label the page as a Test Page Use a page name of the form Test… Turn on the Test property Make sure your Fixtures are in the classpath Use !path widget Mechanics !path values are concatenated Java command to start FitServer is executed Testable HTML is passed to FitServer FitServer runs the tests Results are passed back to FitNesse Licensed Under Creative Commons by Naresh Jain 64
  • 152. Wiki Creating Suites There are 2 ways to make Suites Set the Suite property Create a page with the Suite property Created test pages inside this page When the suite is executed, all child test pages will be included in the suite execution Use the !see widget !see <name of test page> All “included” tests pages will be included in the suite execution Run a Suite by clicking the Suite button Licensed Under Creative Commons by Naresh Jain 65
  • 153. Hands-on Session Conference Proposal Submission Portal Some sample Stories Should be able to submit new proposal Should be able to list all submitted proposal Submitting proposal with same title should display appropriate error message Should be able to delete submitted proposal based on the title Should be able to delete submitted proposal based on the title Should be able to search proposals by title Should be able to search proposals by ID Should be able to find all proposal by an author's name Licensed Under Creative Commons by Naresh Jain 66
  • 154. Break Licensed Under Creative Commons by Naresh Jain 67
  • 155. Patterns Licensed Under Creative Commons by Naresh Jain 68
  • 156. Patterns Organizing Tests Allowing customers to add new tests without breaking the build Licensed Under Creative Commons by Naresh Jain 69
  • 157. Patterns Version Control Keeping the acceptance test in version control with the code. Licensed Under Creative Commons by Naresh Jain 70
  • 158. Patterns Cross-Functional Pairing Using FitNesse based acceptance tests for collaboration between cross- functional team members. Licensed Under Creative Commons by Naresh Jain 71
  • 159. Patterns ATDD Acceptance Test Driven Development Licensed Under Creative Commons by Naresh Jain 72
  • 160. Patterns CSTT Cleanup, Setup, Test, Teardown Licensed Under Creative Commons by Naresh Jain 73
  • 161. Patterns Independent Tests Tests shouldn’t depend on each other. Tests leave the system in the same state it started in. Licensed Under Creative Commons by Naresh Jain 74
  • 162. Patterns Dynamic Stubbing Avoiding complications of external systems. Licensed Under Creative Commons by Naresh Jain 75
  • 163. Patterns Non-Production Setup/Teardown Using non-production light weigh code for setup and teardown. Helps test only what you want to test. Licensed Under Creative Commons by Naresh Jain 76
  • 164. Patterns Suite Levels Creating different levels of suites depending on the depth/level of feedback desired. Smoke, Current Iteration/Sprint, Regression Licensed Under Creative Commons by Naresh Jain 77
  • 165. Patterns DRY Using !include to avoid repeating yourself. Licensed Under Creative Commons by Naresh Jain 78
  • 166. Patterns Make it Real Write ATs as close as possible to the real environment. Licensed Under Creative Commons by Naresh Jain 79
  • 167. Patterns Fixture Evolution Allow Fixture implementation to evolve over time. Treat fixtures as first class citizens. Licensed Under Creative Commons by Naresh Jain 80
  • 168. Patterns At Least One Test/Story Every story should have at least one acceptance test Avoid long/multipurpose tests. Licensed Under Creative Commons by Naresh Jain 81
  • 169. Anti-Patterns Licensed Under Creative Commons by Naresh Jain 82
  • 170. Anti-Patterns Developer ATs Developers writing acceptance tests by themselves, for themselves. Licensed Under Creative Commons by Naresh Jain 83
  • 171. Anti-Patterns Unit Testing Don’t write ATs at the unit testing level Unit tests are implementation specific ATs are NOT implementation specific Licensed Under Creative Commons by Naresh Jain 84
  • 172. Anti-Patterns QA Testing Tool Hard to write tests up front. Perhaps only on large projects. Licensed Under Creative Commons by Naresh Jain 85
  • 173. Anti-Patterns Silver Bullet Trying to use FitNesse for all types of Acceptance Tests UI testing XML testing Licensed Under Creative Commons by Naresh Jain 86
  • 174. Anti-Patterns Test After Writing tests after the code is already written. Licensed Under Creative Commons by Naresh Jain 87
  • 175. Anti-Patterns Hidden Test Data Hiding test data in the fixtures. Licensed Under Creative Commons by Naresh Jain 88
  • 176. Anti-Patterns Implementation Dependent ATs Making test pages (tables) dependent on implementation details and data structures. Licensed Under Creative Commons by Naresh Jain 89
  • 177. Anti-Patterns Logging in Your Fixtures Putting log statements or print statements in the fixture code. Fixtures are probably too complicated. Licensed Under Creative Commons by Naresh Jain 90
  • 178. Reference Portions of this presentation is adopted from Micah Martin’s Introduction to Automated Acceptance Tests Presentation Kent Beck, Test Driven Development By Example. "Agile Testing Directions" - Brian Marick http://www.opensourcetesting.org/ Licensed Under Creative Commons by Naresh Jain 91
  • 179. The End Questions? naresh@agilefaqs.com http://blogs.agilefaqs.com Licensed Under Creative Commons by Naresh Jain 92