Tao in the Art of the Minimal Test Case
Wednesday, October 21st, 2009

An approach for untangling
The phrase ‘Minimal Test Case’ (MTC) often comes up in problem solving discussions in the TiddlyWiki community. TiddlyWiki is an open source software project which means that the code for the product is freely available to view and to adapt. Like many other open source projects, the majority of users are often software amateurs trying to develop their own adaptions from a core code for their own particular use, sometimes struggling to learn about the technology and methodologies with which the software is made as they continue with their day jobs.
A community forms around software projects when experts or professionals also using the technology generously and patiently give assistance and advice to the amateurs, who then in turn start to answer questions they once asked, and this is definitely the case with TiddlyWiki and a key factor in the project’s success.
The use of a the MTC is something that someone unacquainted with software development is likely not to have come across but I think it can be one of many creative cow paths over which the amateur has to learn to trudge in order to learn a technology, but I think it may have wider applications which I will describe later. It all about stating the problem clearly.
Concept
The MTC is not a particularly difficult concept to understand: remove all the complexity and isolate the problem. But it is often more difficult than it first appears and can be highly frustrating. It can also take a long time to express the problem in a way which others can understand. I have found the exercise is very rewarding though, almost certainly because of the design of TiddlyWiki and how it encourages hypertext writing in a way that allows one to quickly fold complexity into easy to manage chunks. Formulating and communicating the problem is becomes easier.
AHA!
Minimal Test Case Reverie
In some ways I find making a MTC like practicing guitar; playing scales, bending strings, trying different types of vibrato and open tunings. The process of doing the activity somehow becomes secondary and another more abstract problem can seem to melt into a solution to an emerging subconscious problem.
The Aha Reaction – what Wolfgang Kohler refers to as a’ sudden insight that often accompanies the exclamation ‘aha!” [1] – in the my case of the MTC followed defining the problem and presenting it in an easy to read and easy to navigate fashion. I think that my latest TiddlyWiki test case has sparked some personal learning which I can apply outside of the solving of a technical problem concerning Javascript. Perhaps it might be worth while attempting to explain something about the problem. It was one about grammar, language and data structure.
Tiddlers, tags and tangles.
There is an object. An object in TiddlyWiki is called a Tiddler and it contains text. A Tiddler can be tagged with keywords. It can also have ‘custom fields’ which are like tags but in other dimensions. The problem for me was to know how to retrieve the name a custom field which was also a tag for a tiddler and convert it into a hypertext link. But before I could make the statement in the previous sentence, I had to work it out from the real life project in which the problem occurred. Part if this sub problem is converting the language of the problem into the technical language.
If you have read this far, you might well be confused. It is difficult quite to write about relationships in a prose – the keeping track of which ‘this’ refers to which ‘that’ - but hypertext is a language which overcomes these problems. It is easier to describe the problem in hypertext, and the place in which the problem occurred was in a hypertext environment, I think there has been a synergy between tool and mind to produce learning. The three strengths of the TiddlyWiki are the speed in which hypertext can be produced, shared and the ways in which texts can be structured to incrementally unravel the bird’s nest before the reader without overwhelming him or her.
An Unintended Experiment
I started this blog post right after I had produced a MTC and posted it to the Tiddlywiki group. I hoped to write a blog post then return to my task in which the problem existed. The MTC linked to above describes the Tidders, tags and tangles problem in a clearer way. The problem was solved quicker than I imagined, quicker than the time I intended to spend on this blog post.
To me the evidence of the efficacy of the MTC is easy to see in the timestamps from the TiddlyWiki Google in the Timestamp box below. It is of course not a scientific measure but a solution and explanation in half an hour highly responsive, especially to a problem to which I would never have found a solution. Experience and observation has shown me that such problems can take days to solves as users posting questions refine their questions and respondents answer the problem they wrongly perceive to the the issue in focus.
Timestamp Box
Oct 20, 8:29 pm- Question and MTC posted
Oct 20, 9:09 pm- Question answered, solution provided.
Balancing learning with doing
My problem for which the MTC was required was part of an important problem holding back in a larger project. The risk to me was to balance the time spent writing a MTC or finding another way round. I consider the effort I put in has shortened the overall project time and produced some learning. Its a balance between the ‘just do it’ approach and the do it ‘properly and learn why’ method.
But it is this following comment which leads me to believe that my MTC was a success. In fact it made me so happy, that I am wondering if MTCs could have some kind of therapeutic value.
Feedback on a minimal test case from a problem solver
Your MTC was A+!!!! You started with a default tiddler that explained what you were trying to do and how the test case was set up (which
tiddlers, etc). Then, you clearly defined your goals in visual terms, by simulating the desired result through hand-edited TW formatting and went step by step through the various ‘minimal’ cases, building up to the point of error.
Thanks so much! That was a pleasure to read! Now… here’s some answers:
In future posts I hope to get its author Eric Shulman, who has kindly helped me and many other over quite a period of time to contribute to some thoughts to thuis this blog. Looking at the link above, it becomes clear that Eric and the Unamesa charity with which he is involved are involved in a wider project concerning education and learning.
Reflections
I think that somewhere in the learning methodology in communities like TiddlyWiki can transfer to settings outside of software development. The minimal test case is reductionism in practice so hardly a new idea, but I think the writing of hypertext in small chunks makes it easier on the eye and the mind to keep the requisite complexity the situation in mind at the right time. I believe this helps clear thinking and has its own rewards. In my case is has lead to happiness and satisfaction and a abstract feeling of things being a little more ordered.
[1] Statt, D., 1981. A dictionary of human behaviour, London ;San Francisco: Harper & Row.
Photo Credit
http://www.flickr.com/photos/zen/ / CC BY-NC-SA 2.0
Recent Posts
Your Say
- David Whittaker on Spotify, Serendipity and Cybernetics in Cafe Bars in Business Schools
- Mio Navman Spirit V505 on New ways to collecting data and publish charts
- Tudor Rickards on New ways to collecting data and publish charts
- Tudor Rickards on Creativity Corner #1
- FND on Tao in the Art of the Minimal Test Case
* Required. Email address not visible on post
3 Responses to “Tao in the Art of the Minimal Test Case”