Agile Testing


Published on

This presentation was given by Me (Anand Ramdeo @testinggeek) and Nathan Bain (@nathanbain) at Skills Matter in London.

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Agile Testing

  1. 1. Agile testing tools and approaches Anand Ramdeo Nathan Bain
  2. 2. What we were building?
  3. 3. Adopting Agile.
  4. 4. Scrum Product Owner, Technical Owner, Scrum Master & Team including tester.
  5. 5. Sprint Product Backlog Sprint Backlog 3 Week Sprint Daily Burn New Priority Product Owner Next Sprint Please. Technical Owner
  6. 6. Process Highlights <ul><li>PO, TO and tester to meet before sprint planning to complete stories and acceptance criteria. </li></ul><ul><li>Four column task board to ensure every task is tested. </li></ul><ul><li>Unit testing, code review, show and tell – They were part of every story. </li></ul><ul><li>End of sprint demo, bug bash, retrospective and release (when applicable) were part of every sprint. </li></ul>
  7. 7. Approach to Testing <ul><li>Test automation using open source tools like FitNesse, Selenium, Twill etc. </li></ul><ul><li>Manual exploratory testing. </li></ul><ul><li>Very little emphasis on documented test cases as such. </li></ul><ul><li>Feature capabilities metrics during releases. </li></ul><ul><li>Defect management using Jira. </li></ul>
  8. 8. Feature Capability Metric Can be reported Can be moderated Comments Can be scheduled Can be published Article Comments Opera Safari FF3 FF2 IE8 IE7 IE6 Feature
  9. 9. Environment & Automation <ul><li>Python, Django, PyUnit, Selenium RC (with Python), Twill, FitNesse (With WebTest), .NET etc. </li></ul><ul><li>Continuous Integration for all the projects. </li></ul><ul><li>Continuous and auto deployment for 'demo' environment. </li></ul><ul><li>Manual deployment for 'snapshot' environment. </li></ul>
  10. 10. A bit of Twill <ul><li>Open source library in Python. </li></ul><ul><li>Can be used for testing web application – below browser. </li></ul><ul><li>Best suited for validating at page source, http request / response level. </li></ul><ul><li>Can be used from command line in interactive mode or from Python scripts. </li></ul><ul><li>Extremely powerful if used with other Python libraries. </li></ul>
  11. 11. How we used it? 1. Get Page 2. Get All the links 3. Get first link and if link is not external and crawler has not visited it, open link. 4. Get Page Source 5. Validate all the rules you want to validate on this page 6. Repeat 1 to 5 for all the pages. * Title and meta tags like keywords and description are present for all the pages and is not generic. * Instrumentation code is present on all the pages. * Every image has an alternative text associated with it. * Ad code is coming from the right server and has all the relevant information we need. * Every page contains at least two ads and no more than four ads. * And many more… Pseudo Algorithm Validation Rules Links pointing to content server in stage environment. Editorials not using SEO tools to populate meta tags. Links used by editors are dead. SA Sample Defects
  12. 12. A bit of Selenium <ul><li>Selenium RC was used with Python. </li></ul><ul><li>Domain Specific Language was created for abstraction and robustness. </li></ul><ul><li>Started exploring ui-elements to abstract element locators. </li></ul><ul><li>Automation was driven from feature – capabilities and releases where possible. </li></ul>
  13. 13. Abstraction With UI-Element <ul><li>selenium.type(&quot;q&quot;, “TestingGeek&quot;); </li></ul><ul><li>;btnG&quot;); </li></ul>LOGIN_BUTTON = &quot;css=input[value='Log in']&quot; DELETE_CONFIRMATION = &quot;css=input[value='&quot;Yes, I'm sure&quot;']&quot; myMap.addPageset({     name: 'allPages',     description: 'All WLL Pages',     pathRegexp: '.*' }); myMap.addElement ('allPages', {     name: 'register'     , description: 'Register link on all the pages'     , locator: &quot;xpath=//*[@id='user']/dd/a[1]&quot;    });ui=allPages::register()&quot;)
  14. 14. DSL & Data Driven Testing <ul><li>stations = </li></ul><ul><li>{         'sgrfm' : {                                   'splitter' : '/east/ipswich/sgr-fm.html',      'link' : 'Go to heart ipswich',      'cookie' : 'heart_ipswich'       }, </li></ul><ul><li>More stations… </li></ul>gusto_dsl.login_to_admin(…) gusto_dsl.write.an_article(….) gusto_dsl.goto_sitehome_from_gusto(…) gusto_dsl.open_page(…) gusto_dsl.asserts_for_articles(..) <ul><li>Use power of language for Data Driven Testing </li></ul><ul><li>Invest in creating Domain Specific Language to make your tests readable, maintainable. </li></ul># Go to home page # Go to splitter page for a specific station # Click on the link to go to the new website # Go back. # Ensure that cookies is set up properly. # Go to the home page. # Ensure that home page is redirected automatically based on the information in cookies.
  15. 15. Would have been better if.. <ul><li>Selenium test suite, Twill etc. were also included in CI. </li></ul><ul><li>Automation for stories were included as a task in the story itself. </li></ul><ul><li>Session Based Test Management was used to highlight manual exploratory testing. </li></ul><ul><li>Controlled releases, technical debt management and more test automation. </li></ul>
  16. 16. Key Learning <ul><li>If you have few testers in a team, you can afford to automate. If you do not have, you can not afford to not automate. </li></ul>
  17. 17. Thank You. <ul><li>Anand Ramdeo </li></ul><ul><li> </li></ul><ul><li>@testinggeek </li></ul><ul><li> </li></ul><ul><li>[email_address] </li></ul><ul><li>Nathan Bain </li></ul>
  18. 18. Things I wish I had known as a new Agile Tester
  19. 19. You are the testing expert! <ul><li>Agile is a new practice – the rulebook is still being written </li></ul><ul><li>Software Development Methodologies are not written with testing in mind </li></ul><ul><li>We are just beginning to understand how Agile testing fits in </li></ul><ul><li>Huge amounts of information being published every day on blogs, user groups etc. </li></ul>
  20. 20. You are the testing expert! <ul><li>What should I do? </li></ul><ul><li>Listen and Learn </li></ul><ul><li>Read, Research & Follow </li></ul><ul><li>Discuss, Suggest, Offer an Opinion and come to an Agreement </li></ul>
  21. 21. You are the testing expert! <ul><li>As a non-tester, how can I help? </li></ul><ul><li>Share your opinion on how testing should be approached on your project </li></ul><ul><li>If you disagree, then discuss this with the test team </li></ul><ul><li>Try to be Constructive and Supportive </li></ul>
  22. 22. If you don’t feel involved, then involve yourself! <ul><li>Testing is no longer a phase in a project – it’s a continuous activity – testers should always be involved. </li></ul><ul><li>I found that I wasn’t invited to meetings discussing the fundamental requirements of projects. </li></ul><ul><li>If you don’t capture the requirements early, then how can you test them later? </li></ul>
  23. 23. If you don’t feel involved, then involve yourself! <ul><li>What should I do? </li></ul><ul><li>Invite yourself to meetings </li></ul><ul><li>Explain to team members the importance of capturing requirements early </li></ul><ul><li>Suggest how you can add value </li></ul>
  24. 24. If you don’t feel involved, then involve yourself! <ul><li>As a non-tester, how can I help? </li></ul><ul><li>Keep the tester involved in all phases of product development. </li></ul><ul><li>Invite testers to products meetings. </li></ul><ul><li>Don’t assume that they are not going to be interested. </li></ul><ul><li>Don’t assume that testers have nothing to contribute to certain meetings. </li></ul>
  25. 25. No more quality police! <ul><li>Testing on waterfall was a phase – we were paid to find as many bugs a possible in a short space of time </li></ul><ul><li>Finding a bug was a triumph – but was that how the developers saw things? </li></ul><ul><li>Fostered an Us V’s Them relationship </li></ul><ul><li>Now we are all on the same team </li></ul>
  26. 26. No more quality police! <ul><li>What should I do? </li></ul><ul><li>Keep finding bugs – you will be thanked for it! </li></ul><ul><li>Communicate first, raise a bug report later. </li></ul><ul><li>Get into the team spirit - contribute to the teams efforts. </li></ul>
  27. 27. No more quality police! <ul><li>As a non-tester, how can I help? </li></ul><ul><li>Treat your testers as you would any other team member. </li></ul><ul><li>Discuss bugs with the testers – it may not require a bug report. </li></ul>
  28. 28. Recruit your own deputies <ul><li>There are never enough testers </li></ul><ul><li>There will be times when testing becomes the bottleneck on the project due to the lack of resources </li></ul><ul><li>Other times, testing something becomes the priority – set release dates!! </li></ul>
  29. 29. Recruit your own deputies <ul><li>What should I do? </li></ul><ul><li>Agile teams are multi-disciplined – if one area is suffering, then we should all help put </li></ul><ul><li>Recruit your Developers, Project Managers, Product Managers and anyone else to help out with testing </li></ul>
  30. 30. Recruit your own deputies <ul><li>As a non-tester, how can I help? </li></ul><ul><li>Be open to the idea of testing when needed </li></ul><ul><li>Keep an eye on the project board – if testing is a bottleneck, then offer to help out </li></ul>
  31. 31. ABC – Always Be Communicating <ul><li>No more huge documentation documents. </li></ul><ul><li>Requirements are communicated via emails, wiki’s, presentations, IM conversations, - verbally! </li></ul><ul><li>If you don’t communicate – then the steam train will keep on rolling, and you have missed an opportunity </li></ul>
  32. 32. ABC – Always Be Communicating <ul><li>What should I do? </li></ul><ul><li>At first, you may miss your requirements documents – learn to communicate with team members and stakeholders </li></ul><ul><li>Get involved in meetings </li></ul><ul><li>Don’t be afraid to ask questions – that’s what Product Manager’s are there for </li></ul>
  33. 33. ABC – Always Be Communicating <ul><li>As a non-tester, how can I help? </li></ul><ul><li>Communication is a 2-way process. </li></ul><ul><li>Copy your testers in on all your project emails – don’t assume it’s not relevant to them. </li></ul><ul><li>Invite testers to meetings – formal and informal. </li></ul>
  34. 34. ABC – Always Be Communicating <ul><li>Brett Pettichord “ The reason Agile teams can do with less planning is because feedback allows you to make sure that you are on course. If you don’t have meaningful feedback then you’re not agile. You’re just in a new form of chaos. ” </li></ul><ul><li> </li></ul>
  35. 35. Be Organised, yet Lightweight <ul><li>As the name suggests, Agile team members should be quick to react and not bogged down by paperwork, processes etc. </li></ul><ul><li>However, you cannot work without some kind of structure and planning </li></ul><ul><li>You also need to be able to track your progress and report back to the team </li></ul>
  36. 36. Be Organised, yet Lightweight <ul><li>What should I do? </li></ul><ul><li>You don’t need huge test scripts which detail every button click - lists of features, areas to be tested, browser combinations etc. will help planning/tracking. </li></ul><ul><li>Scenarios in automated test tools can be re-used for manual testing too. </li></ul>
  37. 37. What else? <ul><li>Learn your domain. </li></ul><ul><li>Learn the language of your team. </li></ul><ul><li>Experiment with test tools. </li></ul><ul><li>Keep up to date with the latest news. </li></ul><ul><li>Attend tester meetings (skillsmattter) </li></ul><ul><li>Don’t be afraid to ask for help – from your colleagues, from online bloggers, user groups, authors. </li></ul>
  38. 38. Thank You. <ul><li>Nathan Bain </li></ul><ul><li> </li></ul><ul><li>@nathanbain </li></ul><ul><li>[email_address] </li></ul>