Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Agile testing

Despite the belief that a shared context and collaboration drives quality, too often, software testers and quality professionals struggle to find their place within today's integrated agile teams. This session is a practitioner’s view of testing and testing practices within an iterative/incremental development environment. We will begin with a discussion of some of the challenges of testing within an agile environment and delve into the guiding principles of Agile Testing and key enabling practices. Agile Testing necessitates a change in mindset, and it is as much, if not more, about behavior, as it is about skills and tooling, all of which will be explored.

  • Login to see the comments

Agile testing

  1. 1. Agile Testing Guiding Principles & Enabling Practices Raj Indugula
  2. 2. ON-­‐DECK AT-­‐BAT DONE What is the problem context? What are the guiding principles of Agile Tes<ng ? What are the enabling prac<ces? Concluding thoughts. Any ques<ons?
  3. 3. Agile Approach Maximize value and quality within specified project constraints Cost Time Quality Scope
  4. 4. Shared Context drives Quality Individuals and interactions… Working software… Customer collaboration… Responding to change…
  5. 5. Integrated Teams & Iterative Delivery Challenges How do we… Ensure that the evolving software does not regress? Test in-cycle? Bridge the communication gap between Bus./Testing/Dev.? Adopt automation strategies? Deal with performance issues identified late? …
  6. 6. ON-­‐DECK AT-­‐BAT DONE What is the problem context? Concluding thoughts. Any ques<ons? What are the guiding principles of Agile Tes<ng ? What are the enabling prac<ces?
  7. 7. Move Quality Upstream Small paradigm shift with profound implications • Testing not a trailing activity • QA leads the Sprint by providing guidance and feedback on the business needs of the emerging product
  8. 8. Testing is Continuous, Not a Phase Continuous testing is the only way to ensure continuous progress
  9. 9. Testing is Collaborative The whole team can only go as fast as the slowest part • Quality is everyone’s problem, not just of the testers • Testing is the responsibility of the whole team
  10. 10. Tests represent Customer Expectations Oops…that’s not what I intended! • Shared understanding of what it means for a story to be done
  11. 11. Quick Feedback How long does the team have to wait for information about how the software is behaving? • Faster feedback loops increase Agility – the ability to respond to change • Test automation provides rapid feedback on how the software is behaving
  12. 12. “Leave No Broken Windows” Keep the code clean • Fix bugs as they are found • The sooner you find a defect, the cheaper it is to fix
  13. 13. It isn't Done until it’s… “Done Done” Coded Tested Done
  14. 14. Test-Driven Defining tests with the requirements guides development
  15. 15. ON-­‐DECK AT-­‐BAT DONE What is the problem context? Concluding thoughts. Any ques<ons? What are the guiding principles of Agile Tes<ng ? What are the enabling prac<ces? ATDD TDD Other prac<ces
  16. 16. Automated Testing is at the heart of Agility Exploratory Testing GUI Tests Acceptance Tests Unit Tests/ Component Tests Cucumber, FitNesse, SpecFlow xUnit, Mocks Selenium Business-centric (Are we building the right code?) Developer-centric (Are we building the code right?) Adaptation of Mike Cohn's test automation pyramid
  17. 17. But, in reality… Manual Scripted Testing Automated GUI Tests Acceptance Tests Unit Tests Automated Testing is NOT Selenium-type UI record & play tests
  18. 18. What are acceptance tests? • Tests that demonstrate business intent of system from end user’s point of view • Black-box testing
  19. 19. What is Acceptance Test Driven Development (ATDD)? A practice in which the whole team collaboratively discusses acceptance criteria, with examples, and then distills them into a set of concrete acceptance tests before development begins. - Elisabeth Hendrickson
  20. 20. 1. Elicit details from the business stakeholders about their expecta<ons 2. Dis<ll acceptance criteria into automatable tests expressed in a natural language 3. Wire the tests to SUT with “glue” code (as part of implementa<on)
  21. 21. Sample Story Maturation Look-A-Head The tactical act of getting a story ready is often performed as a two sprint look-a-head by an “amigos” (BA, QA, Dev) team Sprint n Sprint n + 1 Sprint n + 2 Select User Story 999 for Sprint n +2 Re-estimate it, sharpen story & acceptance criteria Create testable example and other supporting material for 999 Develop User Story 999 The PO and 3+ Amigos look-a- head and select story 999 for inclusion for Sprint n + 2. They do cleanup on the story. The 3+ Amigos further support the story and the PO gets appropriate sign offs. Story 999 makes it’s way into a sprint and it is built.
  22. 22. Epics, Features, Stories Epics Stories Features Product backlog Priority
  23. 23. Modern Agile Acceptance Model Conditions of Satisfaction – Broad Terms Acceptance Criteria – Further Refined Examples – Actual scenarios or data Executable Examples – Ready to automate
  24. 24. Testable Examples in Gherkin • Executable Example, Making it Repeatable • Examples that can be executed are the final step Given the “Unregistered User” user has navigated to the “register” page When entering “newuser” in the “Username” field And entering “abc123” in the “Password” field And entering “abc123” in the “Confirm Password” field And pressing the “Register” button Then the text “Thank you for Registering” should appear on page And the URL should end with “use/accountPage” Can be used for both manual testing and automation
  25. 25. Automated Acceptance Tests Tool (Cucumber, SpecFlow, FitNesse) Specification expressed in common language “Glue” code that ties specification to System Under Test
  26. 26. Testing Collaboratively Business Analyst Develop usage scenarios Developer Tester Create and execute tests to simulate usage scenarios; Automate regression testing Create and maintain acceptance test “glue” code that ties test specification to system under test • Should be an integral part of every iteration/sprint, not just a trailing activity • Vital not only to prove completeness of a feature in repeatable fashion, but also to prove that software does not regress as it evolves • Success depends on cooperation & collaboration
  27. 27. Benefits of ATDD • Improved requirements elicitation • Consensus between BA/QA/Dev on the story helps prevent bugs & gives clear target for development • Reuse of Acceptance Scenarios for all phases of testing • Creates clear examples that everyone understands; discovers some problems before any development
  28. 28. ON-­‐DECK AT-­‐BAT DONE What is the problem context? Concluding thoughts. Any ques<ons? What are the guiding principles of Agile Tes<ng ? What are the enabling prac<ces? ATDD TDD Other prac<ces
  29. 29. What are unit tests? Developer tests that determine whether the smallest piece of testable software in an application is behaving as expected Key Characteristics • Quick to execute • Easy to execute • Isolated • Leave the system under test unaltered
  30. 30. Test Doubles (Mocks) Used to isolate unit tests form external dependencies Why use them? • Ease of setup • Fast executing • To work with a subsystem that doesn’t exist • Simulate various execution paths of external system
  31. 31. What is Test Driven Development (TDD)? Write a new test Red (Failing Test) Green (Test Passes) Write Code Benefits • Better design • Supports change • Prevents gold-plating • Prevent bugs • Discover bugs
  32. 32. ATDD/TDD Cycle
  33. 33. ON-­‐DECK AT-­‐BAT DONE What is the problem context? Concluding thoughts. Any ques<ons? What are the guiding principles of Agile Tes<ng ? What are the enabling prac<ces? ATDD TDD Other prac<ces
  34. 34. Build Automation & Continuous Integration Continuously commit and merge changes from Requirements gathering Application Development Source Control changes others Poll for changes Pull changes, Build, run tests Deploy to higher environment Continuous Integration (CI) Server Development tasks from requirements test scenarios from business requirements for acceptance criteria Acceptance Test Environment - Test harness - Tests (automated + manual) Execute acceptance tests against the deployed application QA Environment Deployable artifacts
  35. 35. ON-­‐DECK AT-­‐BAT DONE What is the problem context? Concluding thoughts. Any ques<ons? What are the guiding principles of Agile Tes<ng ? What are the enabling prac<ces?
  36. 36. Some Barriers to Adoption Developer : “I’m a developer, not a tester” Tester: “I’m a tester, not a developer” Management: “Why does Dev help with testing, when we have QA?” • Necessitates behavioral change • Requires discipline • Needs generalizing specialists • Needs collaboration across roles
  37. 37. Agile Testing is supported by… MINDSET SKILLSET TOOLSET • Everyone is responsible to ensure quality • Testing is not a phase • Testers are not sole gate-keepers of quality • Customer collaboration • Requirements elicitation • Writing test requirements that assist developers • Skills to do different types of testing • Automation • Effective communicator and team player • Development and build tools (source control, CI, code coverage) • Requirements and examples (mock-ups, testable examples) • Multi-level test automation
  38. 38. Business Req. User Stories Unit Tests SoXware Applica<on Con<nuous Integra<on Automated Unit & Acceptance Tests Business-­‐ facing Tests Fixtures Developer PO/BA Tester
  39. 39. …the job of testing is to prevent defects, not just to find them - Mary Poppendieck
  40. 40. Thanks! 40
  41. 41. Resources 41
  42. 42. Some Tools (open source) • Unit testing: JUnit, Mockito, EasyMock • Acceptance testing: FitNesse Cucumber • GUI testing: Selenium, Sahi • Javascript testing: Jasmine, Qunit • Testing the database: DBUnit, SQLUnit, DBFit • Performance testing: JUnitPerf, JMeter • Usability testing: Manual unfortunately
  43. 43. Some Tools (open source) • Unit testing: MSTest, NUnit, Moq • Acceptance testing: SpecFlow • GUI testing: Selenium • Javascript testing: Chutzpa • Testing the database: Tsqlt, SSDT SQL Test • Performance testing: JetBrains, VisualStudio 2013, SQLServerProfiler, SQLLoadTest • Usability testing: Manual unfortunately
  44. 44. Agile Software Development • Extreme Programming Explained - Kent Beck • TDD: A Practical Guide – Dave Astels • Refactoring – Martin Fowler • Agile Estimating and Planning – Mike Cohn • Pragmatic Project Automation – Pragmatic Prog. 44
  45. 45. Acceptance Testing • Bridging the Communications Gap – Gojko Adzic • Agile Testing – Lisa Crispin and Janet Gregory • The Cucumber Book - Wynne M. and Hellesoy A. Gherkin Cucumber
  46. 46. TDD/Refactoring • TDD: By Example - Kent Beck • TDD: A Practical Guide – Dave Astels § The Art of Agile Development – James Shore • Refactoring – Martin Fowler • Working Effectively with Legacy Code – Mike Feathers • Refactoring to Patterns – Joshua Kerievsky •,,