Updated outline for Agile Tests as Documentation

I’ve updated my outline a bit and fleshed it out some. This is the new outline, so please feel free to comment.


  1. Introduction

    1. problem


      1. Documentation is an expensive anchor around a team’s neck
      2. Lots of money to produce (40% on current project)
      3. Expensive to change (increases inertia and cost of change)
      4. Difficult to make comprehensive (need source anyways)

    2. Need something different that will promote minimal inertia, cost, and is accurate and comprehensive.

      <LI>Agile Developers write tests for code as it is developed
      


      1. Tests assert behavior of system (create invariant)
      2. Tests provide record of development stream (thought processes of developer)
      3. Tests change as code changes

    3. Can tests be used as documentation?

  2. Who is our audience and what do they need?

    1. Application programmers — users of our libraries

      1. Concerned with finding out what they want to know and getting back to work quickly.
      2. Concerned with most common usage scenarios most times, but still care about exception cases. Order of tests not important

    2. Maintenance programmers — modifiers and extenders of our libraries

      1. Concerned with understanding underlying design and decisions
      2. Need guide through code. Order of tests important to them.

    3. Evaluators — tire kickers

      1. Want to get moving quickly
      2. Less concerned with tests than sample code and quick starts
      3. Still want to understand architecture and design as part of evaluation, so will act as maintenance programmer in some ways.


  3. My contention is that tests can do part of the job, but some text is still needed
  4. Description of Caching design — equivalent to short text and few UML diagrams

    1. Basic functions (add, remove, get, flush)
    2. Factories and equivalency of CacheManagers
    3. Background operations
    4. Liveliness of cache references (missing test???)

  5. Components of a good test

    1. 3 A-s (Bill Wake)

      1. Arrange
      2. Act
      3. Assert

    2. Strong names for everything

      1. Test name tells what is being tested. Makes interesting tests easier to find
      2. Good variable names inside tests. Makes code easier to read

    3. Clear assertions. Defines purpose of test. Assertion should assert strongest thing that can be said about test. Should show thought into what underlying code does
    4. Suite name should tell reader what task fixture is testing/documenting

  6. Test sufficiency — do I tell the whole story with my tests

    1. Capturing design decisions
    2. Covering interesting use cases
    3. Showing error behavior
    4. Interactions with the environment
    5. Test organization for different audiences

      1. Application Programmers want to find common scenarios easily
      2. Maintenance Programmers want to follow original developer’s train of thought


  7. Conclusion: What prose and UML are needed to supplement these tests
  8. Future directions in Tests as Documentation (Automation topics mostly)
  9. Final question — Did using tests as documentation save me anything?

5 thoughts to “Updated outline for Agile Tests as Documentation”

  1. http://www.greatestjournal.com/users/uk000/306.html

    http://www.greatestjournal.com/users/uk000/668.html

    http://www.greatestjournal.com/users/uk000/966.html

    http://www.greatestjournal.com/users/uk000/1243.html

    http://www.greatestjournal.com/users/uk000/1505.html

    http://www.greatestjournal.com/users/uk000/1763.html

    http://www.greatestjournal.com/users/uk000/1905.html

    http://www.greatestjournal.com/users/uk000/2119.html

    http://www.greatestjournal.com/users/uk000/2522.html

    http://www.greatestjournal.com/users/uk000/2577.html

    http://www.greatestjournal.com/users/uk000/3055.html

    http://www.greatestjournal.com/users/uk000/3226.html

    http://www.greatestjournal.com/users/uk000/3570.html

    http://www.greatestjournal.com/users/uk000/3621.html

    http://www.greatestjournal.com/users/uk000/3970.html

    http://www.greatestjournal.com/users/uk000/4209.html

    http://www.greatestjournal.com/users/uk000/4466.html

    http://www.greatestjournal.com/users/uk000/4838.html

    http://www.greatestjournal.com/users/uk000/4931.html

    http://www.greatestjournal.com/users/uk000/5325.html

    http://www.greatestjournal.com/users/uk000/5538.html

    http://www.greatestjournal.com/users/uk000/5870.html

    http://www.greatestjournal.com/users/yingshi2/494.html

    http://www.greatestjournal.com/users/yingshi2/571.html

    http://www.greatestjournal.com/users/yingshi2/948.html

    http://www.greatestjournal.com/users/yingshi2/1256.html

    http://www.greatestjournal.com/users/yingshi2/1506.html

    http://www.greatestjournal.com/users/yingshi2/1776.html

    http://www.greatestjournal.com/users/yingshi2/2027.html

    http://www.greatestjournal.com/users/yingshi2/2236.html

    http://www.greatestjournal.com/users/yingshi2/2379.html

    http://www.greatestjournal.com/users/yingshi2/2608.html

    http://www.greatestjournal.com/users/yingshi2/2904.html

    http://www.greatestjournal.com/users/yingshi2/3246.html

    http://www.greatestjournal.com/users/yingshi2/3441.html

    http://www.greatestjournal.com/users/yingshi2/3834.html

    http://www.greatestjournal.com/users/yingshi2/4047.html

    http://www.greatestjournal.com/users/yingshi2/4265.html

    http://www.greatestjournal.com/users/yingshi2/4395.html

    http://www.greatestjournal.com/users/yingshi2/4777.html

    http://www.greatestjournal.com/users/yingshi2/5119.html

    http://www.greatestjournal.com/users/yingshi2/5355.html

    http://www.greatestjournal.com/users/yingshi2/5434.html

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.