Testing in an Agile Context    “What he needs is some way to pay back. Not some way to borrow more.”       - Will Rogers  ...
Chris Sterling – Sterling Barton, LLC             Partner, Sterling Barton, LLC             Author of Book “Managing Softw...
Presentation Agenda            Agile - Find Issues Earlier            Effects of Quality Debt            Definition of Done...
Why Use Agile Methods?  © 2009-2010,                4Wednesday, June 8, 2011
“Stuff” Rolls Down Hill...                      Requirements                      Specification                           ...
“Stuff” Rolls Down Hill...                      Requirements                      Specification                           ...
The Agile Manifesto*       We are uncovering better ways of developing software by doing it and           helping others d...
Principles Behind the Agile Manifesto*     1.    Our highest priority is to satisfy the customer through early and continu...
An Agile Method:     Scrum  © 2009-2010,            8Wednesday, June 8, 2011
Effects of Quality Debt    “Promises make debt, and debt makes promises.” - Dutch Proverb                                 ...
Effect of Project Constraints on Quality  © 2009-2010,                                  10Wednesday, June 8, 2011
Effect of Project Constraints on Quality  © 2009-2010,                                  10Wednesday, June 8, 2011
“For every [dollar] of competitive advantage gained by     cutting quality, it costs $4 to restore it; and software is    ...
Lack of emphasis on software quality attributes     contributes to decay  © 2009-2010,                                    ...
Software Quality Attributes Defined  © 2009-2010,                            13Wednesday, June 8, 2011
Software Quality Attributes Rating Tool  © 2009-2010,                                 14Wednesday, June 8, 2011
Sonar: Quality Dashboard  © 2009-2010,                  15Wednesday, June 8, 2011
Agile Test and Integration Strategies  © 2009-2010,                               16Wednesday, June 8, 2011
Definition of Done     Defines work products that will be     delivered with each feature as it is     ready for acceptance....
Definition of Done as a Compliance Checklist                 Acceptance defined criteria for each    Code checked in with re...
Another Definition of Done Example                                                                                         ...
No matter what, the cost of addressing software     debt increases with time.  © 2009-2010,                               ...
Acceptance Test-Driven Development  © 2009-2010,                            21Wednesday, June 8, 2011
Test-Driven Design (TDD) - Basic “Flow”  © 2009-2010,                                 22Wednesday, June 8, 2011
Test-Driven Design (TDD) - Basic “Flow”                             Write	                            Failing	  Test  © 20...
Test-Driven Design (TDD) - Basic “Flow”                             Write	                            Failing	  Test      ...
Test-Driven Design (TDD) - Basic “Flow”                                          Write	                                   ...
Test-Driven Design (TDD) - Basic “Flow”                                          Write	                                   ...
Test-Driven Design (TDD)    Lets go through an example session using TDD to drive the implementation of a    user story to...
Jitter – Example TDD Session             Fake micro-blogging tool named “Jitter” is made by Seattle-             based fict...
Expand LOL to “laughing out loud”     public class WhenMotherWantsToExpandMessagesThatContainShorthandTest {             @...
But wait…what if…?            What if LOL is written in lower case?            What if it is written as “Lol”? Should it b...
Expand LOL If Lower Case     @Test     public void shouldExpandLOLIfLowerCase() {             when(session.getNextMessage(...
Don’t Expand “Lol” – Mixed-Case     @Test     public void shouldNotExpandLOLIfMixedCase() {             String msg = "Do n...
Don’t Expand “LOL” If Inside Word     @Test     public void shouldNotExpandLOLIfInsideWord() {             String msg = "D...
Expand “LOL” If Not Inside Word     @Test     public void shouldExpandIfSurroundingCharactersAreNotLetters() {            ...
The Agile Regression Testing Triangle*  © 2009-2010,            * The Agile Triangle has been modified from Mike Cohn’s ori...
The Agile Regression Testing Triangle*                               Automated Unit Tests                              Mak...
The Agile Regression Testing Triangle*                                        Integration Tests                           ...
The Agile Regression Testing Triangle*Smoke++ TestsRisk-based UI &                                        Integration Test...
Configuration Management Debt    “If releases are like giving birth, then you must be doing something wrong.”       - Rober...
The Power of 2 Scripts: Deploy and Rollback  © 2009-2010,                                     33Wednesday, June 8, 2011
Thank you    Questions and Answers                            34Wednesday, June 8, 2011
Chris Sterling – Sterling Barton, LLC             Partner, Sterling Barton, LLC             Author of Book “Managing Softw...
Upcoming SlideShare
Loading in...5
×

Testing in an Agile Context 2011

3,098

Published on

This is from a webinar that I presented at Boeing.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,098
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
68
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Testing in an Agile Context 2011

  1. 1. Testing in an Agile Context “What he needs is some way to pay back. Not some way to borrow more.” - Will Rogers Chris Sterling VP of Engineering AgileEVM Inc. Web: www.AgileEVM.com Email: chris@agileevm.com Blog: www.GettingAgile.com Follow Me on Twitter: @csterwa Hash Tag for Presentation: #swdebtWednesday, June 8, 2011
  2. 2. Chris Sterling – Sterling Barton, LLC Partner, Sterling Barton, LLC Author of Book “Managing Software Debt: Building for Inevitable Change” Consults on software technology, Agile technical practices, Scrum, and effective management techniques Email: chris@sterlingbarton.com Web: http://www.agileevm.com Certified Scrum Trainer Blog: http://www.gettingagile.com Follow me on Twitter: @csterwa Innovation Games® Trained Facilitator Open Source Developer © 2009-2010, 2Wednesday, June 8, 2011
  3. 3. Presentation Agenda Agile - Find Issues Earlier Effects of Quality Debt Definition of Done Quality Dashboard Agile Test and Integration Strategies Acceptance Test-Driven Development Test-Driven Design Agile Regression Test Triangle Configuration Management Debt Strategy Questions and Answers © 2009-2010, 3Wednesday, June 8, 2011
  4. 4. Why Use Agile Methods? © 2009-2010, 4Wednesday, June 8, 2011
  5. 5. “Stuff” Rolls Down Hill... Requirements Specification Design Construction Testing (Validation) Integration Maintenance © 2009-2010, 5Wednesday, June 8, 2011
  6. 6. “Stuff” Rolls Down Hill... Requirements Specification Design Construction Testing (Validation) This is too late to find issues Integration and respond effectively Maintenance © 2009-2010, 5Wednesday, June 8, 2011
  7. 7. The Agile Manifesto* We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: 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.” Kent Beck James Grenning Robert C. Martin Mike Beedle Jim Highsmith Steve Mellor Arie van Bennekum Andrew Hunt Ken Schwaber Alistair Cockburn Ron Jeffries Jeff Sutherland Ward Cunningham Jon Kern Dave Thomas Martin Fowler Brian Marick 55 6 © 2009-2010, * www.agilemanifesto.orgWednesday, June 8, 2011
  8. 8. Principles Behind the Agile Manifesto* 1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. 2. Welcome changing requirements, even late in development. Agile processes harness change for the customers competitive advantage. 3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. 4. Business people and developers must work together daily throughout the project. 5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done. 6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. 7. Working software is the primary measure of progress. 8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. 9. Continuous attention to technical excellence and good design enhances agility. 10. Simplicity--the art of maximizing the amount of work not done--is essential. 11. The best architectures, requirements, and designs emerge from self-organizing teams. 12. At regular intervals, the team reflects on how to become more effective, then tunes and © 2009-2010, adjusts its behavior accordingly. 56 7 * www.agilemanifesto.org/principlesWednesday, June 8, 2011
  9. 9. An Agile Method: Scrum © 2009-2010, 8Wednesday, June 8, 2011
  10. 10. Effects of Quality Debt “Promises make debt, and debt makes promises.” - Dutch Proverb 9Wednesday, June 8, 2011
  11. 11. Effect of Project Constraints on Quality © 2009-2010, 10Wednesday, June 8, 2011
  12. 12. Effect of Project Constraints on Quality © 2009-2010, 10Wednesday, June 8, 2011
  13. 13. “For every [dollar] of competitive advantage gained by cutting quality, it costs $4 to restore it; and software is an organizational asset and decisions to cut quality must be made by executive management and reflected in the financial statements.” - Ken Schwaber © 2009-2010, 11Wednesday, June 8, 2011
  14. 14. Lack of emphasis on software quality attributes contributes to decay © 2009-2010, 12Wednesday, June 8, 2011
  15. 15. Software Quality Attributes Defined © 2009-2010, 13Wednesday, June 8, 2011
  16. 16. Software Quality Attributes Rating Tool © 2009-2010, 14Wednesday, June 8, 2011
  17. 17. Sonar: Quality Dashboard © 2009-2010, 15Wednesday, June 8, 2011
  18. 18. Agile Test and Integration Strategies © 2009-2010, 16Wednesday, June 8, 2011
  19. 19. Definition of Done Defines work products that will be delivered with each feature as it is ready for acceptance. Typical entries... Code includes unit tests, reviewed, checked in Tests described and executed Build, release notes Compliance documentation updated to include current functionality Example  of  “average”  DoD What else? © 2009-2010, 17Wednesday, June 8, 2011
  20. 20. Definition of Done as a Compliance Checklist Acceptance defined criteria for each Code checked in with reference to user story US#/Task# Unit tests written and passed Tested on FE Code compiles with no errors and no Integration test written & passes warnings Test code reviewed New code doesn’t break existing code Environment requirements documented Test case review (Dev to review test case written) Interface document updated/added and checked in to SVN Architectural impact assessed and artifacts updated if necessary Acceptance criteria verified complete Comments in code All P1-P3 bugs for the story are closed Error codes added Test approves user story Code reviewed by peer Story demonstrated to product owner © 2009-2010, 18Wednesday, June 8, 2011
  21. 21. Another Definition of Done Example Story and Unit Tests Functional Acceptance Build System Task Status Passed Tests Passed Tests Passed Compiles Updated Story Code Code Code is Code Meets Published to Implements Comments Reviewed Standards Dev Server Logging Updated Product Past Product No Compile Demo Owner Acceptance Owner Warnings in Prepared Sprint Demo Tests Passed Acceptance Code Bugs Deployment Release Code Committed in Docs Notes Repository Sprint Resolved Updated Updated is Tagged Release to Deployment Deployment Release Stage Testing Docs Notes Release Server Passed Delivered Delivered Infrastructure Integrated Build Change Notes Stress Testing Requirements Delivered Passed Met © 2009-2010, 19Wednesday, June 8, 2011
  22. 22. No matter what, the cost of addressing software debt increases with time. © 2009-2010, 20Wednesday, June 8, 2011
  23. 23. Acceptance Test-Driven Development © 2009-2010, 21Wednesday, June 8, 2011
  24. 24. Test-Driven Design (TDD) - Basic “Flow” © 2009-2010, 22Wednesday, June 8, 2011
  25. 25. Test-Driven Design (TDD) - Basic “Flow” Write   Failing  Test © 2009-2010, 22Wednesday, June 8, 2011
  26. 26. Test-Driven Design (TDD) - Basic “Flow” Write   Failing  Test Make  Test   Pass © 2009-2010, 22Wednesday, June 8, 2011
  27. 27. Test-Driven Design (TDD) - Basic “Flow” Write   Failing  Test Refactor  to   Make  Test   Acceptable   Design Pass © 2009-2010, 22Wednesday, June 8, 2011
  28. 28. Test-Driven Design (TDD) - Basic “Flow” Write   Failing  Test Refactor  to   Make  Test   Acceptable   Design Pass © 2009-2010, 22Wednesday, June 8, 2011
  29. 29. Test-Driven Design (TDD) Lets go through an example session using TDD to drive the implementation of a user story to meeting its acceptance criteria. 23Wednesday, June 8, 2011
  30. 30. Jitter – Example TDD Session Fake micro-blogging tool named “Jitter” is made by Seattle- based fictitious company that focuses on enabling coffee injected folks to write short messages and have common online messaging shorthand expanded for easy reading. The user story we are working on is: So it is easier to read their kid’s messages, Mothers want to automatically expand common shorthand notation The acceptance criteria for this user story are: LOL, AFAIK, and TTYL are expandable Expand lower and upper case versions of shorthand © 2009-2010, 24Wednesday, June 8, 2011
  31. 31. Expand LOL to “laughing out loud” public class WhenMotherWantsToExpandMessagesThatContainShorthandTest { @Test public void shouldExpandLOLToLaughingOutLoud() { JitterSession session = mock(JitterSession.class); when(session.getNextMessage()).thenReturn("Expand LOL please"); MessageExpander expander = new MessageExpander(session); assertThat(expander.getNextMessage(), equalTo("Expand laughing out loud please")); } } © 2009-2010, 25Wednesday, June 8, 2011
  32. 32. But wait…what if…? What if LOL is written in lower case? What if it is written as “Lol”? Should it be expanded? What if some variation of LOL is inside a word? What if characters surrounding LOL are symbols, not letters? Write these down as upcoming programmer tests as comments so I don’t forget them. // shouldExpandLOLIfLowerCase // shouldNotExpandLOLIfMixedCase // shouldNotExpandLOLIfInsideWord // shouldExpandIfSurroundingCharactersAreNotLetters © 2009-2010, 26Wednesday, June 8, 2011
  33. 33. Expand LOL If Lower Case @Test public void shouldExpandLOLIfLowerCase() { when(session.getNextMessage()).thenReturn("Expand lol please"); MessageExpander expander = new MessageExpander(session); assertThat(expander.getNextMessage(), equalTo("Expand laughing out loud please")); } This forced use of java.util.regex.Pattern to handle case insensitivity. public String getNextMessage() { String msg = session.getNextMessage(); return Pattern.compile("LOL”, Pattern.CASE_INSENSITIVE) .matcher(msg).replaceAll("laughing out loud"); } © 2009-2010, 27Wednesday, June 8, 2011
  34. 34. Don’t Expand “Lol” – Mixed-Case @Test public void shouldNotExpandLOLIfMixedCase() { String msg = "Do not expand Lol please"; when(session.getNextMessage()).thenReturn(msg); MessageExpander expander = new MessageExpander(session); assertThat(expander.getNextMessage(), equalTo(msg)); } This forced me to stop using Pattern.CASE_INSENSITIVE flag in pattern compilation. Only use “LOL” or “lol” for now. public String getNextMessage() { String msg = session.getNextMessage(); return Pattern.compile("LOL|lol").matcher(msg) .replaceAll("laughing out loud"); } © 2009-2010, 28Wednesday, June 8, 2011
  35. 35. Don’t Expand “LOL” If Inside Word @Test public void shouldNotExpandLOLIfInsideWord() { String msg = "Do not expand PLOL or LOLP or PLOLP please"; when(session.getNextMessage()).thenReturn(msg); MessageExpander expander = new MessageExpander(session); assertThat(expander.getNextMessage(), equalTo(msg)); } The pattern matching is now modified to use spaces around each variation of valid LOL shorthand. return Pattern.compile("sLOLs|slols").matcher(msg) .replaceAll("laughing out loud"); © 2009-2010, 29Wednesday, June 8, 2011
  36. 36. Expand “LOL” If Not Inside Word @Test public void shouldExpandIfSurroundingCharactersAreNotLetters() { when(session.getNextMessage()).thenReturn("Expand .lol! please"); MessageExpander expander = new MessageExpander(session); assertThat(expander.getNextMessage(), equalTo("Expand .laughing out loud! please")); } Final implementation of pattern matching code: return Pattern.compile("bLOLb|blolb").matcher(msg) .replaceAll("laughing out loud"); © 2009-2010, 30Wednesday, June 8, 2011
  37. 37. The Agile Regression Testing Triangle* © 2009-2010, * The Agile Triangle has been modified from Mike Cohn’s original version 31Wednesday, June 8, 2011
  38. 38. The Agile Regression Testing Triangle* Automated Unit Tests Make up largest portion of regression tests and are developed by programmers © 2009-2010, * The Agile Triangle has been modified from Mike Cohn’s original version 31Wednesday, June 8, 2011
  39. 39. The Agile Regression Testing Triangle* Integration Tests Automated & Exploratory Automated Unit Tests Make up largest portion of regression tests and are developed by programmers © 2009-2010, * The Agile Triangle has been modified from Mike Cohn’s original version 31Wednesday, June 8, 2011
  40. 40. The Agile Regression Testing Triangle*Smoke++ TestsRisk-based UI & Integration Tests API Automated Automated & Tests Exploratory Automated Unit Tests Make up largest portion of regression tests and are developed by programmers © 2009-2010, * The Agile Triangle has been modified from Mike Cohn’s original version 31Wednesday, June 8, 2011
  41. 41. Configuration Management Debt “If releases are like giving birth, then you must be doing something wrong.” - Robert Benefield 32Wednesday, June 8, 2011
  42. 42. The Power of 2 Scripts: Deploy and Rollback © 2009-2010, 33Wednesday, June 8, 2011
  43. 43. Thank you Questions and Answers 34Wednesday, June 8, 2011
  44. 44. Chris Sterling – Sterling Barton, LLC Partner, Sterling Barton, LLC Author of Book “Managing Software Debt: Building for Inevitable Change” Consults on software technology, Agile technical practices, Scrum, and effective management techniques Email: chris@sterlingbarton.com Web: http://www.agileevm.com Certified Scrum Trainer Blog: http://www.gettingagile.com Follow me on Twitter: @csterwa Innovation Games® Trained Facilitator Open Source Developer © 2009-2010, 35Wednesday, June 8, 2011
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×