Share via


The Tao of Testing

Ancient Chinese history is fascinating, and there is incredible insight and wisdom in ancient texts which is just as relevant today as it was more than 2000 years ago. One such book is the Tao Te Ching attributed to Lao Tsu (Laozi) (although factual historical reference is questionable). But, nonetheless, this book has inspired philosophical discussion for generations, and has even spawned religious movements. One of the fundamental maxims in the Tao Te Ching discusses the balance of nature. This is often represented by a symbol commonly referred to as the yin/yang circle. Yin and yang are thought to represent opposite relative principles, however the symbol is designed to illustrate

  • yin and yang contain part of each other - there is no absolute yin and no absolute yang
  • yin and yang complement each other - one cannot exist without the other
  • yin and yang are in constant motion -  change is inevitable and provides balance to relative opposites when one side becomes too dominant

OK...let's connect the dots back to software. When I read about the virtues of the agile development lifecycle it is almost always compared to the notorious V-model development lifecycle, and there is no mention of spiral or other iterative development lifecycles. So, if agile approaches represented yin and the V-model represented yang as its opposite I am thinking the balance lies somewhere between these extremes. Personally, I have never seen a pure V-model development lifecycle in practice, nor have I seen a pure agile development lifecycle applied to a large scale commercial product, but I speculate that in reality most software development lifecycles use some sort of iterative cyclical or spiral type model. In software testing, many exploratory testing pundits often compare the virtues of exploratory testing to "scripted" testing. (I have always been puzzled by the term scripted, and have concluded the connotation by those who use the term describes a test that is highly prescriptive and leaves no room for variance. For example, a test which states, "Enter "Joe" in the first name field" instead of "In the First name field enter a string of Unicode characters within the range of U+nnnn to U+nnnn with a string length between minLength and maxLength." as an example of a validation type test.) Again, I must admit, I have never worked for a company in which exploratory or "scripted" testing were the only approaches to software testing. So, based on personal experience, if exploratory testing and "scripted" testing are opposite principles, then in fact one cannot exist without the other and applied (the actual application of) software testing practices are a symbiosis of both approaches. Neither can exist very well on its own merit, there are benefits and drawbacks to each approach. The truly skilled tester knows the value and limitations of extreme approaches, understands that the "Tao of Testing" is somewhere between the extremes and embodies the best principles of both approaches, and knows when and how to effectively balance the testing effort.

And, perhaps the yin and yang of Taoism provides some perspective regarding the changes in the discipline and the industry at large with regards to hiring highly skilled testers with stronger technical backgrounds versus simply hiring individuals with diverse (generally non-technical) backgrounds. A few years ago the software testing discipline was filled with folks (many of whom were non-technical) whose primary objectives were to find bugs. When finding bugs is the primary objective of testing, the (unstated) goal is to "test in quality." But, many companies have realized that they simply cannot afford to throw greater numbers of bodies towards software which is growing in complexity, and are looking at ways to increase the effectiveness and efficiency of their testing efforts. Testing smarter, not harder! Microsoft, Google, and other companies have now started hiring testers with greater skill sets (generally more technically oriented) which is changing the testing universe and will (hopefully) restore the balance of nature in the discipline. But, obviously there is a balance of between technical skills and business acumen or customer focus, and the hard part for managers going forward is to find the right balance for their project. But, there must be both attributes or skills present in all testers just as the seed of yin exists in yang and the seed of yang exists in yin.