Testing for scrum teams.
      Introduction.
                      Dennis Popov
           depo@berlingskemedia.dk
            denys.popov@gmail.com




  July 2010, Berlingskemedia.dk
Plan

•   The agile values and testing
•   Agile thinking for testers
•   Agile tester itself
•   Bill of rights
•   Goals artifacts and tools
The Agile Values
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more."


                  www.agilemanifesto.org
What is testing

    Software testing is a process of an investigation
    conducted to provide stakeholders with
    information about the quality of the product or
    service under test.
What is it needed for ?

     Software testing provides an objective,
    independent view of the software to allow the
    business to appreciate and understand the risks at
    implementation of the software (thanks to Wikipedia)
Testing and scrum
An agile project is a close team;
everyone shares ownership of the code and of the quality of the product.
If the testers are squeezed, it may be that they are becoming the
    gatekeepers of quality, and that the practice of collective ownership is
    compromised.
Tester's role tends to fall into two main parts:
- enhancing the confirmation tests at unit and acceptance levels. This means
   that developers should help testers to understand unit tests . Testers will
   propose changes and pay attention to the situation when unit test seems
   to be missing.
- identifying, diagnosing and exploiting unexpected behaviors. They also
    bring automation skills to your customer, automating some or part of their
    acceptance testing.
- developers can do Mini-demo to Testers on their local environments
Agile Thinking for testers

    Not a “quality police” but Helps business to express
    their needs

    Constant feedback's to business

    Ready to inner-team communications

    Courage to ask questions and get answers

    Search for simple ways (does not always mean easy
    ones)

    Be ready for frequent changes

    Self organized. Bring value even when there is no
    functionality to test. Use different hats.
SCRUM Testing is Different

    The biggest difference is that in Scrum project, the entire
    development team takes responsibility for quality. This
    means the whole team is responsible for all testing tasks,
    including acceptance test automation. When testers and
    programmers work together, the approaches to test
    automation can be pretty creative!

    SCRUM isn’t about ‘roles’, it’s about a tight integration of
    skills and behaviors. Testing is an integrated activity in
    Scrum team. The development team needs continual
    feedback, with the customer expressing their needs in
    terms of tests, and programmers expressing design and
    code in terms of tests. In Scrum team, the tester will play in
    both the customer and programmer ‘roles’. He’ll focus on
    acceptance testing and work to transfer his testing and
    quality assurance skills to the rest of the team.
The Old Strategies Won’t Work
•Detailed test planning
• Not enough time
•   Too many changes

       Old metrics won't work

•Dedicating a phase for testing
• You don’t get to define entry and exit criteria
•   Iterations will move on without you

•Change control
• Changes are now commonplace
•Being in a position of authority
• You need to learn how to express concerns without really being able to judge
    software correctness authoritatively
What is agile tester. Activities
    * Negotiate quality with the customer (it’s not YOUR standard of quality, it’s what the customer desires and is willing to
      pay for!)

    * Clarify stories, flush out hidden assumptions

    * Enable accurate estimates for both programming and testing tasks

    * Make sure the acceptance tests verify the quality specified by the customer

    * Help the team automate tests

    * Help the team produce testable code

    * Form an integral part of the continuous feedback loop that keeps the team on track.

you will communicate more, with your coders and your customers.

- you will need to have (or will rapidly gain) a deeper understanding of the technology and the code

- you will no longer be the gatekeeper

- you will share more risk, and feel an increased sense of ownership

- you will personally fix more bugs


      State the alternative strategies


      List the pros and cons of each strategy


      Give a forecast of costs

You can be a Bad Customer!
Tester - A bad customer hat.
A bad customer does things that aren’t ‘happy path’ interactions; they perturb and may

break the system. It’s worth considering whether a particular action is that of an incompetent

user, an expert/speedy user or a malicious user. A tester can use his or her knowledge of

possible problems and ware a hat of a bad customer. Some trigger ideas include:

- Empty sets, null inputs

- Invalid parts of input – characters, values, combinations

- Time changes

- Unusual uses

- Too much – long strings, large numbers, many instances

- Stop halfway / Jump in halfway

- Wrong assumptions

- Making lots of mistakes, compounding mistakes

- Using the same information for different entities

- Triggering error messages

- Going too fast
What sort of stories should a tester
                  bring?
- User stories that involve edge cases
- User stories that involve malicious intent
- Stories that aren’t for the users
- Infrastructural stories – ie loading the DB for setup
- Unexpected / unconsidered quality criteria
- Consequences after time / under load
- Experiments, rather than stories – like thought
   experiments?
- Bugs that need fixing, but can’t be fixed right now
Challenge: Are Testers Obsolete?

    With developers doing unit testing, do we still need to have
    “QA” testers?

    Some teams have fired testers when adopting agile. They have then
    regretted this.

    Some teams are using developers for acceptance testing.

    One of the main reasons why we still need dedicated testers – is an
    instant feedback from testing.

    Dedicated testers bring two benefits:
          −    Focus on customer usage over technical implementation
          −    Focus on uncovering flaws over confirming completeness
Tester's Bill of Rights

       You have the right to bring up issues related to quality and
    process at any time.

       You have the right to ask questions of customers and
    programmers and receive timely answers.

        You have the right to ask for and receive help from anyone
    on the project team, including programmers, managers, and
    customers.

        You have the right to make and update your own estimates
    for your own tasks and have these included in estimates for
    stories.

        You have the right to the tools you need to do your job in a
    timely manner.

     You have the right to count that all team is responsible for
    quality of the product
goals for agile teams
•How can we get testers to be part of a team? Doesn’t this force
  them to sacrifice their integrity?
•Testers have been an oppressed group and have often stuck together
   to provide mutual support.
•It’s time to let go of this.
•Testers should co-locate with developers and analysts.
•Agile only works when there is lots of both formal and informal
  communication within a team.

    Each team member should be ready to ware “tester's hat”
artifacts for agile testing p 106

    Metrics that will measure team's progress

    Test strategy rather than test plan – a long
    term plan of actions and activities.
tools for testing
http://www.opensourcetesting.org/unit_php.php

Web Protocol Drivers for Functional Testing

PHPUnit http://www.phpunit.de/

Simple test http://www.lastcraft.com/simple_test.php



Load Testing Tools

Celenium ide

Functional testing: FitNesse

Load testing: LoadUI http://www.loadui.org/

SOAP testing http://www.soapui.org

GreenHopper plugin for Jira.
  http://www.atlassian.com/software/greenhopper/tour/scrum.jsp
Recommendations

    Accept SCRUM

    Love scrum

    Live scrum
Materials

    Agile testing. A practical guide for testers and agile teams. Lisa Crispin, Janet Gregory,
    2010, 464p.

    Testing computer software. Cem Kaner, Jack Falk, 2001, 544p.

    Wikipedia

    Bret Pettichord's blog (http://blogs.stickyminds.com/)

    Lisa Crispin's articles http://www.methodsandtools.com/archive/archive.php?id=2

    www.testingexperience.com

! Testing for agile teams

  • 1.
    Testing for scrumteams. Introduction. Dennis Popov depo@berlingskemedia.dk denys.popov@gmail.com July 2010, Berlingskemedia.dk
  • 2.
    Plan • The agile values and testing • Agile thinking for testers • Agile tester itself • Bill of rights • Goals artifacts and tools
  • 3.
    The Agile Values Individualsand interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more." www.agilemanifesto.org
  • 4.
    What is testing  Software testing is a process of an investigation conducted to provide stakeholders with information about the quality of the product or service under test.
  • 5.
    What is itneeded for ?  Software testing provides an objective, independent view of the software to allow the business to appreciate and understand the risks at implementation of the software (thanks to Wikipedia)
  • 6.
    Testing and scrum Anagile project is a close team; everyone shares ownership of the code and of the quality of the product. If the testers are squeezed, it may be that they are becoming the gatekeepers of quality, and that the practice of collective ownership is compromised. Tester's role tends to fall into two main parts: - enhancing the confirmation tests at unit and acceptance levels. This means that developers should help testers to understand unit tests . Testers will propose changes and pay attention to the situation when unit test seems to be missing. - identifying, diagnosing and exploiting unexpected behaviors. They also bring automation skills to your customer, automating some or part of their acceptance testing. - developers can do Mini-demo to Testers on their local environments
  • 7.
    Agile Thinking fortesters  Not a “quality police” but Helps business to express their needs  Constant feedback's to business  Ready to inner-team communications  Courage to ask questions and get answers  Search for simple ways (does not always mean easy ones)  Be ready for frequent changes  Self organized. Bring value even when there is no functionality to test. Use different hats.
  • 8.
    SCRUM Testing isDifferent  The biggest difference is that in Scrum project, the entire development team takes responsibility for quality. This means the whole team is responsible for all testing tasks, including acceptance test automation. When testers and programmers work together, the approaches to test automation can be pretty creative!  SCRUM isn’t about ‘roles’, it’s about a tight integration of skills and behaviors. Testing is an integrated activity in Scrum team. The development team needs continual feedback, with the customer expressing their needs in terms of tests, and programmers expressing design and code in terms of tests. In Scrum team, the tester will play in both the customer and programmer ‘roles’. He’ll focus on acceptance testing and work to transfer his testing and quality assurance skills to the rest of the team.
  • 9.
    The Old StrategiesWon’t Work •Detailed test planning • Not enough time • Too many changes  Old metrics won't work •Dedicating a phase for testing • You don’t get to define entry and exit criteria • Iterations will move on without you •Change control • Changes are now commonplace •Being in a position of authority • You need to learn how to express concerns without really being able to judge software correctness authoritatively
  • 10.
    What is agiletester. Activities * Negotiate quality with the customer (it’s not YOUR standard of quality, it’s what the customer desires and is willing to pay for!) * Clarify stories, flush out hidden assumptions * Enable accurate estimates for both programming and testing tasks * Make sure the acceptance tests verify the quality specified by the customer * Help the team automate tests * Help the team produce testable code * Form an integral part of the continuous feedback loop that keeps the team on track. you will communicate more, with your coders and your customers. - you will need to have (or will rapidly gain) a deeper understanding of the technology and the code - you will no longer be the gatekeeper - you will share more risk, and feel an increased sense of ownership - you will personally fix more bugs  State the alternative strategies  List the pros and cons of each strategy  Give a forecast of costs You can be a Bad Customer!
  • 11.
    Tester - Abad customer hat. A bad customer does things that aren’t ‘happy path’ interactions; they perturb and may break the system. It’s worth considering whether a particular action is that of an incompetent user, an expert/speedy user or a malicious user. A tester can use his or her knowledge of possible problems and ware a hat of a bad customer. Some trigger ideas include: - Empty sets, null inputs - Invalid parts of input – characters, values, combinations - Time changes - Unusual uses - Too much – long strings, large numbers, many instances - Stop halfway / Jump in halfway - Wrong assumptions - Making lots of mistakes, compounding mistakes - Using the same information for different entities - Triggering error messages - Going too fast
  • 12.
    What sort ofstories should a tester bring? - User stories that involve edge cases - User stories that involve malicious intent - Stories that aren’t for the users - Infrastructural stories – ie loading the DB for setup - Unexpected / unconsidered quality criteria - Consequences after time / under load - Experiments, rather than stories – like thought experiments? - Bugs that need fixing, but can’t be fixed right now
  • 13.
    Challenge: Are TestersObsolete?  With developers doing unit testing, do we still need to have “QA” testers?  Some teams have fired testers when adopting agile. They have then regretted this.  Some teams are using developers for acceptance testing.  One of the main reasons why we still need dedicated testers – is an instant feedback from testing.  Dedicated testers bring two benefits: − Focus on customer usage over technical implementation − Focus on uncovering flaws over confirming completeness
  • 14.
    Tester's Bill ofRights  You have the right to bring up issues related to quality and process at any time.  You have the right to ask questions of customers and programmers and receive timely answers.  You have the right to ask for and receive help from anyone on the project team, including programmers, managers, and customers.  You have the right to make and update your own estimates for your own tasks and have these included in estimates for stories.  You have the right to the tools you need to do your job in a timely manner.  You have the right to count that all team is responsible for quality of the product
  • 15.
    goals for agileteams •How can we get testers to be part of a team? Doesn’t this force them to sacrifice their integrity? •Testers have been an oppressed group and have often stuck together to provide mutual support. •It’s time to let go of this. •Testers should co-locate with developers and analysts. •Agile only works when there is lots of both formal and informal communication within a team.  Each team member should be ready to ware “tester's hat”
  • 16.
    artifacts for agiletesting p 106  Metrics that will measure team's progress  Test strategy rather than test plan – a long term plan of actions and activities.
  • 17.
    tools for testing http://www.opensourcetesting.org/unit_php.php WebProtocol Drivers for Functional Testing PHPUnit http://www.phpunit.de/ Simple test http://www.lastcraft.com/simple_test.php Load Testing Tools Celenium ide Functional testing: FitNesse Load testing: LoadUI http://www.loadui.org/ SOAP testing http://www.soapui.org GreenHopper plugin for Jira. http://www.atlassian.com/software/greenhopper/tour/scrum.jsp
  • 18.
    Recommendations  Accept SCRUM  Love scrum  Live scrum
  • 19.
    Materials  Agile testing. A practical guide for testers and agile teams. Lisa Crispin, Janet Gregory, 2010, 464p.  Testing computer software. Cem Kaner, Jack Falk, 2001, 544p.  Wikipedia  Bret Pettichord's blog (http://blogs.stickyminds.com/)  Lisa Crispin's articles http://www.methodsandtools.com/archive/archive.php?id=2  www.testingexperience.com