Seminar 26.10.2006, Petri Heiramo

  • View

  • Download

Embed Size (px)



Text of Seminar 26.10.2006, Petri Heiramo

  • 1. Oulu Testing Seminar 26.10.2006 Petri Heiramo Process Improvement Manager SysOpen Digia Plc Agile Testing Experiences

2. Contents of the Presentation

  • Current Agile status
  • Overall conclusions
  • Testing-related experiences

3. Current Status

  • Piloting Agile processes since April 2006
    • Majority actual customer projects
  • Tested methodology Scrum
    • Agile project management framework
    • Technical practices from XP
  • Piloting has endeddeployment to general use
    • Training and support
    • Recommendation to evaluate in all new projects

4. Scrum Cycle 5. Overall Conclusions

  • Scrum improves project performance
    • 50% increase in LOC/h
  • Higher customer satisfaction
    • Concrete displays of progress
    • Better opportunities to provide feedback and control project direction
    • Better delivers what the customer really wants
    • Requires commitment from customer for best results
  • Team morale improved
  • Improved visibility and tracking
  • Simpler project management
    • Including requirements management
  • Daily Scrums are a best practice, recommendable even to non-agile projects

6. Waterfall Mindset

  • The waterfall mindset is difficult to eliminate
    • People still view phases as a sequence
    • Mini-waterfalls
  • Agile sprints require embedded phases

Specify Design Code Test Project start Project end Increment start Increment end Sprint end Sprintstart Story 1 Code Test Design Specify Story 2 Code Test Design Specify Story 3 Code Test Design Specify 7. Overall Testing Planning

  • A vision of how testing is made in the project
    • Long-term view
      • Elimination of manual regression test accumulation
    • Individual sprints
      • Ensuring fast feedback
      • Testing in parallel with implementation
  • Degree of automation
  • Tools
    • Dependencies
    • Requirements
    • Addons
  • Management of errors

8. Testing Is a Team Effort

  • An Agile team is a multi-disciplinary team for a reason
    • All roles can, and need to, support others
  • Tests specify acceptance criteria everyone needs to know them
    • Encourage team effort in specifying and creating tests
      • Code is created to fulfill the tests
    • Communication!
  • Testing must be key focus
  • Too easily software developers only consider their work and sort of forget the testing
    • Estimation
    • Task planning

9. Unit / Module Testing Focus

  • Test at correct level
    • Focus on stable interfaces
    • You want to minimize rewriting tests when adding new functionality or refactoring
  • Create simple tests
    • Use setup and teardown functions to hide environmental complexity from the test
    • Easy to change
    • Lower threshold to discard and rewrite
  • Testing the UI has to be made with adequate tool
    • Minimize the UI layer as much as sensibly reasonable (Thin UI)
    • Start unit/module testing underneath that layer
    • Automate UI layer testing through the UI itself (AppTest)
  • Reduce dependencies with stubs and mock objects
  • Preferably Test-Driven Development

10. Test-Driven Development

  • Design testrun testimplement codetestrefactor
  • Changing the way developers work is hard
    • No matter how convincing the benefits, changing peoples behaviour is difficult, even for the people themselves
  • Requires effective tool support
  • Good OO design skills are necessary
    • Creating an elegant, extendable and testable design requires effective use of OO design principles
  • Greatest benefits can be reaped in long projects

11. Summary

  • Agile works
  • Eliminate mini-waterfalls
  • Create overall vision for all testing
  • Make testing is a team effort
  • Focus tests correctly
  • Develop TDD culture

12. Thank You! [email_address]