Brian Button - One Agile Coder

Blogging on all things .Net, C#, and Agile

My Links

Blog Stats

News

Archives

Post Categories

Agile Solutions Group

Blogs I read

Enterprise Library V1 Team

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.
    3. 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
    4. 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?

posted on Wednesday, September 01, 2004 4:55 AM

Feedback

# re: Updated outline for Agile Tests as Documentation 9/12/2004 11:47 AM Jonathan Kohl

I posted my notes from the Agile Tests as Documentation workshop at XP Agile Universe here: http://www.kohl.ca/blog/archives/000035.html
and added some notes from Jennitta Andrea as well: http://www.kohl.ca/blog/archives/000037.html
You may find some of that useful when thinking about your article.

# re: Updated outline for Agile Tests as Documentation 5/22/2006 9:05 AM 6699

http://perso.wanadoo.es/007dy/chenrdy.htm
http://perso.wanadoo.es/007dy/chenrlt.htm
http://perso.wanadoo.es/007dy/chenrtp.htm
http://perso.wanadoo.es/007dy/chenrwz.htm
http://perso.wanadoo.es/007dy/chenrxs.htm
http://perso.wanadoo.es/007dy/huangsdy.htm
http://perso.wanadoo.es/007dy/huangslt.htm
http://perso.wanadoo.es/007dy/huangstp.htm
http://perso.wanadoo.es/007dy/huangswz.htm
http://perso.wanadoo.es/007dy/huangsxs.htm
http://perso.wanadoo.es/007dy/jiqxdy.htm
http://perso.wanadoo.es/007dy/sanjp.htm
http://perso.wanadoo.es/007dy/seqdy.htm
http://perso.wanadoo.es/007dy/seqlt.htm
http://perso.wanadoo.es/007dy/seqtp.htm
http://perso.wanadoo.es/007dy/seqwz.htm
http://perso.wanadoo.es/007dy/seqxs.htm
http://perso.wanadoo.es/007dy/xiezhen.htm
http://perso.wanadoo.es/007dy/xingady.htm
http://perso.wanadoo.es/007dy/xingalt.htm
http://perso.wanadoo.es/007dy/xinggmn.htm
http://perso.wanadoo.es/007dy/yishu.htm
http://perso.wanadoo.es/007dy/zipai.htm
http://perso.wanadoo.es/007dy/zouguang.htm
http://perso.wanadoo.es/007dy/jiqdy.htm
http://my.opera.com/opdy05/homes/blog/sanjip.htm
http://my.opera.com/opdy05/homes/blog/huangsedy.htm
http://my.opera.com/opdy05/homes/blog/seqingdy.htm
http://my.opera.com/opdy05/homes/blog/jiqingxdy.htm
http://my.opera.com/opdy05/homes/blog/chengrendy.htm
http://my.opera.com/opdy05/homes/blog/xingaidy.htm
http://my.opera.com/opdy05/homes/blog/xiezhen.htm
http://my.opera.com/opdy05/homes/blog/zouguang.htm
http://my.opera.com/opdy05/homes/blog/zipai.htm

# re: Updated outline for Agile Tests as Documentation 7/24/2006 8:30 PM SDRYFHM

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

# re: Updated outline for Agile Tests as Documentation 9/28/2007 12:24 AM biseo

Thank you so much for sharing.

# re: Updated outline for Agile Tests as Documentation 1/9/2008 4:26 AM edongzkisiete

Great outline, nice post.

Title  
Name  
Url
Spam Protection:
Enter the code you see:
If you can't read it, click your refresh button to get a new image.
Comments