Thursday, February 23, 2006

The OTLOTT (One True List of Testing Terms)

I started making a list of Testing terms to help me have a definite vocabulary, and it quickly grew out of hand. I soon realized that what I needed were two lists:

One comprehensive list with all the definitions of all the terms I could find.
&
One definitive list of specific terms for my own use.


This second list would be my own, though I'd draw as much as possible from common usage. I want a specific terminology that can describe what the difference is between a test case and test condition, and what the relationship is between a suite of tests and a set of results.

I see several benefits of this.

Foremost, the act of naming things concentrates your mind on the subject. It allows you to think of something abstractly, and a concrete definition gives you the power to compare it with other abstract things.

This is what I see as the real power of Object Oriented Programming and especially with Design Patterns. The whole idea is to give a name to common patterns to facilitate communication, but even moreso, memory and cognition.

You might have implemented a singleton dozens of times, but until you had a name for it, you had to think about how to solve the particular problem. Once you had a name for it (though you might not have called it a singleton before hearing about GoF), it became obvious that what you needed was a singleton. A little less obvious cognitive test, but one giving even greater power is the ability to decide when you did *not* need a singleton. In fact, you needed a NotSingleton, and eventually this got a name too, perhaps it was a Factory.

And so on until you had a list of patterns with names that helped you remember programming techniques, and definitions that helped you to know when to use (or not use) them, and when to refine your dictionary by adding more terms for things that are definitely *not* whatever.

Even better, if others share your list of names and definitions, you are better able to communicate with each other, and especially, be able to further refine and grow your dictionary.

Which brings me to the first list, the comprehensive one.

Every tester dreams of having the One True List of Test Terms, but it just isn't going to happen. But just the act of making the list is, as I said, a cognitive act with it's own benefits, even if it doesn't result in a general consensus.

It wasn't long before I realized a wiki would be perfect for this, and so I launched one up and started adding terms (as soon as I recovered my password.) As the list grew, I realized that of course, I don't know all the terms, and I know multiple definitions for many, and there are even many terms that I do know that I probably won't think to add to the list.

So I decided it would sure be nice to have some help. And hey! isn't that what wikis are for? So I started one here:

http://wiki.klamathsystems.com/doku.php?id=test-_terms

I'm sure the url will change eventually, but it's a start.*

If you see something that contradicts your own definition, I'd rather see two definitions. We can work on refining the list later and hopefully come to a consensus. Maybe a ranking system to determine preferred usage. And maybe individuals could mark preferred definitions so that they could have there own OTLOTT. I don't know of any existing wiki that has these features, but that doesn't worry me. If the value is there, I'm sure it could be added.


* (On a side note, does anyone know how to get nice URLs in dokuwiki? I'll probably crunch a mod_rewrite script myself if nothing else. I'd also like to have a heirarchy, though wikis aren't supposed to be hierarchical. Something like: http://example.com/wiki/test_resources/terms/foo... I'm not opposed to question marks, but I want all the info to be in the URL. And it seems a shame to implement a local search engine when you could google a site.) **

** Footnotes on a webpage, isn't that what hyperlinks are for? I want a blog that can do hyperlink footnotes.

0 Comments:

Post a Comment

<< Home