seven deadly sins of agile testing

Click here to load reader

Upload: hashim

Post on 09-Feb-2016

55 views

Category:

Documents


0 download

DESCRIPTION

Seven Deadly Sins of Agile Testing. About me – Brad Swanson. Test. Deliverable. Deliverable. Time to market. Traditional Development. Analyze. Implement. Agile Development. Risk. traditional. Risk. agile. Time. Schedule Confidence. ?. Productivity. ROI. Early to market advantage. - PowerPoint PPT Presentation

TRANSCRIPT

Slide 1

Seven Deadly Sins of Agile Testing

1About me Brad Swanson2

2Time to market3

DeliverableImplementAnalyze

DeliverableTraditional DevelopmentAgile DevelopmentTest

Agile methods provide a big advantage in time to market. The best and easiest way to get to market faster is to build only the features that people actually need. Prioritize what you build so the most valuable features arent delayed by the other unimportant features. This also saves time on planning, design and overhead, and keeps the system smaller and cleaner so its easier to modify and extend.

The short iterations in agile development drive down the risk of surprises at the end of the project that often delay completion and drive up costs. 3Risk4RiskTimetraditionalagileIterative development allows you to drive down market risk, feature risk and technical risk sooner than with traditional methods. With short iterations, high risk features can be tackled early in the process, allowing you to validate features and designs sooner.4Schedule Confidence5

?Another advantage of agile methods is schedule confidence. Traditional projects measure progress based on the completion of phases, but agile development measures progress based on the number of completed, tested, production-quality features. That transparency makes it very easy to measure true progress.56Productivity

Agile development improves productivity is through a relentless focus on eliminating waste and continually improving the process. Eliminating waste is one of the key principles behind lean thinking, and that principle is also fundamental in agile software development.

[time permitting?In lean manufacturing, seven types of waste have been identified, and in software development, Mary Poppendieck has identified the corresponding seven types of waste in her book Lean Software Development. I dont have time in todays presentation to cover this in more detail, but Agile processes address each of those 7 types of waste.]6ROI7traditionalagiletime+Early to market advantage-$The most important measure of the success of a project is ROI, of course. All the advantages of agile development described earlier combine to improve ROI. By prioritizing features, you reduce time to market to realize ROI sooner. We talked about how agile methods improve productivity and quality Short iterations enable you to refine features based on real user feedback and deliver a more usable, innovative product. Higher quality and faster time to market often translate to a premium price and higher market share. Or if youre delivering an internal project, you can capitalize on your investment sooner.7Quality8OpendefectsTimetraditionalagile

In traditional development, most testing happens at the end of the project, and thus most defects arent discovered until the end. In agile development, we discover problems as each iteration is tested and resolve most of them within the same iteration. Because we dont have a huge list of bugs, we spend less effort managing bug lists. Developers on highly collaborative teams discover and fix most defects within hours or even minutes of those defects being introduced thanks to test-driven development and test automation, so many bugs dont even need to be entered into a bug tracking system. Furthermore, agile shifts the focus of QA to defect prevention, so fewer bugs are introduced in the first place.89

Source: Dr. Dobbs Journal 2008 Agile Adoption Surveyhttp://www.ambysoft.com/surveys/agileFebruary2008.html

Sin #7: Separation of Requirements & Tests10

Req SpecTestsHow much effort is spent tracing tests to requirements?Executable specification

How to avoid:TDD, ATDD, BDD Tools: cucumber, selenium, FIT, Fitnesse, etc. Analysts and testers work together10Penance11Create an executable specification: Spec == Tests Use concrete examples to specify requierementsAnalysts and Testers become best friends!Acceptance Test Driven Development (ATDD, BDD)Cucumber, FIT, Fitnesse, SeleniumOther tools???INVEST in user storiesIndependent, Negotiable, Valuable, Estimable, Small, TestableInclude testing in the Definition of Done for stories & sprintsExpand your skills Sin #6: Testing is one sprint behind12Code sprint 1Test Sprint 1Code sprint 2Code sprint 3Code sprint 4Test Sprint 2Test Sprint 3Test Sprint 4Which agile principles & values are violated?Build quality in defect prevention vs. detection fast feedback whole-team responsibility for quality cross-functional teamsPotentially shippable product increment each sprint

How to avoid: Definition of Done includes testing smaller backlog items or user stories (preferred over longer sprints)

TDD, design for testability close collaboration between programmers and testers at start of each story close collaboration between programmers and testers to reserve time for testing each story12Penance13Include testing in the Definition of Done for stories & sprintsSmaller backlog items & user storieshttp://www.richardlawrence.info/2009/10/28/patterns-for-splitting-user-stories/Testers define & create tests at the start of each story/sprintAutomated testing / TDD / ATDD / BDDSin #5: Unbalanced Testing Quadrants14

Penance15Include the appropriate testing quadrants in the Definition of Done for stories, sprints, and releases.Have a balanced testing plan as part of release planningCreate backlog items for appropriate testing activities, e.g. ility testing.Get management commitment to support effort needed to catch up on test automation; show the ROI on automation.Get real users & stakeholders to participate in acceptance testing early and often.Sin #4: Ignoring Test Failures16

17

Penance18Discipline: stop the line whenever the CI build & tests failInvest in making automated tests robustCreate incentives for team members to have clean check-ins; friendly competition?Take metrics: reward people for improving quality and automated test coverage

Sin #3: Lack of TDD & CI19

TDD leads to a testable design, which leads to a better design.CI ensures the whole system works together.

Which agile principles & values are violated?Build quality in defect prevention vs. detection fast feedback Simple design, YAGNI- Respect people: Let machine do what its good at; enable people to do what the machine cant19Penance20Commit as a team to doing TDD and CIDiscipline: keep it goingExpand your skills Invest in infrastructure, tools, training. Show the ROI.Keep metrics to measure resulting quality improvements

Sin #3: Lack of Test Automation21

Which agile principles & values are violated? Fast feedback Build quality in Potentially shippable product increment every sprint Let machine do what its good at; enable people to do what the machine cant

21Sin #2: Separate QA Team22

QA

Dev

Dev

Dev

Dev

Dev

Dev

QA

QA

QA

QA

QA

Which agile principles & values are violated? Cross-functional teams Collaboration Whole team responsibility for quality Build quality in defect prevention over defect detection Fast feedback22Penance23Form cross-functional teams including QACo-located teams: same roomDo a pilot project with QA dedicated to the team; keep metrics to demonstrate the results.Keep QA fully involved with the team: planning, implementing stories, demos, retrospectivesWhole-team responsibility for product quality

Sin #1: WaterScrumming24

Analysis sprintCode sprintCode sprintCode sprintTest sprintAnalysis sprintTest sprintTest sprintWhich agile principles & values are violated?Shorter time to market Fast feedback on working software features Build quality in defect prevention Focus on business value thru Prioritization of features (maybe) Cross-functional team (maybe)24Penance25Form cross-functional teams including QA & analystsInclude testing in the Definition of Done for stories & sprintsINVEST in user storiesIndependent, Negotiable, Valuable, Estimable, Small, Testablehttp://www.richardlawrence.info/2009/10/28/patterns-for-splitting-user-stories/Testers define & create tests at the start of each story/sprintTDD / ATDD / BDDAllow one hardening sprint before release with all hands on deck [email protected]

2627

License agreementAt least part of the material used in this presentation has been licensed as Creative Common, non-commercial, share-alike content (http://creativecommons.org/licenses/by-nc-sa/3.0/de/deed.en) from agile42 GmbH.

As per the license agreement you are entitled to do whatever you like to the material as far as is not contradicting basic principle of the license. On top of that agile42 GmbH kindly asks you to return any change you will make to this material, for validation and sharing purposes.