Wednesday, July 3, 2013

The Tao of Testing

Heyhey!

Yin and Yang, the symbol of Taoism
For some time now I have had a constantly growing interest in Taoism. Don't get me wrong; I'm not in it for religious reasons. It's not about higher powers or entities that should be followed or even worshipped. It's just something that resonates with the values that I have and the way I see the world. In work, freetime, jujutsu, etc. I constantly see connections and analogies to Taoism.

How Taoism turns into testing is a fascinating mind game. Let's play some of that, shall we... ;)


The basics of Taoism

Taoism was founded by Laozi, a philosopher of ancient China. It has profound effect on Asian cultures, religions and of course martial arts. Whether you practice kungfu, karate, taekwondo, ancient samurai arts, whatnot, the presence of Taoism is strong. For example jujutsu, which I practice, is based on balance between gentleness and application of force. Instead of confronting opponent's force directly, it's received in gentle fashion and manipulated to opponent's disadvantage. A throw, lock, strike, whatnot can be applied after the opponent has been unbalanced. After the opponent has lost its Tao, so to speak.

The way I see it, in it's simplest form, Taoism is about force and counterforce. About balance. You have good and bad, light and dark, up and down, soft and hard, etc. etc. Yin and Yang. These forces do not however object each other, but instead they complement each other, forming the basis of universe. The balance between everything.

All there is to it?
Now, we westerners tend to think things through atomistically. We divide objects and concepts into separate, fundamentally distinct parts. Very common western habit is to divide complex problem into smaller, solvable parts. But Taoism is not based on these foundations. It's actually not that black and white. The dots in Yin and Yang symbol mean that there's Yin in Yang, and vice versa. They don't just complement each other, they mix with each other. The approach is holistic; The emphasis is on the importance of the whole and the interdependence of its parts.

The atomistic approach on jujutsu would be the balance between gentleness and application of force. But there's so much more to it. You have to constantly consider your actions and their repercussions. You breathe a certain way so it has an effect on your body and its ability to perform. You take a step and it shifts your balance a certain way. Your every action creates a repercussion that affects on your ability to make more actions. And it gets really complicated when the opponent steps in. You have to feel his/her force and adapt to it, find the limits of his/her bodyparts in order to manipulate them, prepare for counterstrikes, you name it. And this is just the physical level. Even more happens on mental level. The situation alone where you either kill or get killed is a handful. Not that easy to practice in peacetime.

In many Asian cultures this holistic approach applies on everything, and it has done so for ages. The way people interact, work, make food, build gardens, whatnot is very different from our way of doing those things. One could endlessly contemplate on the differences between holistic and atomistic cultures, but I'll leave it here. If you want more in-depth analysis to Taoism and form your own opinions about it, visit Wikipedia and Stanford Encyclopedia of Philosophy, or better yet, read Tao Te Ching by Laozi.


The Tao of Testing

Now, if we come to think of testing and Taoism, it's tempting to think things through atomistically. The most black and white approach is comparing checking and exploration. A while back I wrote about this. More confrontation can be sought from discussions about certification zombies and sapient testers, processes and skill, automatic testing and manual testing, etc. etc. If we want to keep things civil, we might want to discuss about bug triage or in general change management where the balance between soft and hard approaches must be maintained. The point is that the conventional way of doing testing was invented by westerners, and it's all about dividing objects and concepts into separate, fundamentally distinct parts.

Let's try to shake this thinking a bit.

Software Testing Naturalist
Think about test cases. Aren't they just separate, fundamentally distinct parts of something bigger? What bigger? A whole? This something that has worried me for almost ten years, but in the last years I've managed to form internal and external models from all of this. Thanks to people like James Bach, Michael Bolton, Cem Kaner, Doug Hoffman, Elisabeth Hendrickson, Maaret Pyhäjärvi, just to name a few, I've started to understand the holistic side of testing.

When you execute a test under a set of rules, guidelines or mission statement you must consider your actions and their repercussions. You have to consider the program states, system states, configuration, system resources, cooperating processes/clients/servers and data before the test and the impacts on all of them after the test, all the possible inputs and interrupts, and possible expected and unexpected outcomes. You have to consider whether to focus the testing into structure, functions, data, integrations, platform, operations or time. You have to constantly crosscut with quality aspects such as performance, usability, reliability and testability. You have to consider different stakeholders and information objectives. You have to consider a lot of things.

You have to consider the importance of the whole and the interdependence of its parts.

This is a daunting task. Without any help an overwhelming one. To manage it I use the combination of atomistic and holistic approaches. Focusing and defocusing, which I learned from Michael Bolton in RST course in 2011 and refined with James Bach in Rapid Testing Intensive a year later. In practice it's a map about every part entwined together, containing elaborate hierarchies, relationship, informative visual elements, etc. In one glimpse I SEE the whole and the individual parts of it, and so do others. Especially those who make decisions.

Here's one example (the content is confidential, which is why it's so small):


This is basically one hour of testing work. A session report. It contains only a tiny fraction of what I should test. The purple color indicates a risk area that needs more testing. But bare in mind that the testing will never end. After each session some purple is removed and more is added. More areas of unknown sprout as we speak. I make constant decisions what to test and what not to test. I prioritize based on findings and stakeholder needs for information, and I live and breathe tradeoffs. At some point someone has to decide that testing has to stop. The reasons vary, but completeness is not one of them. There's always more to test.

Holistic approach is about taking individual responsibility over the entirety of testing. But at the same time it's about understanding that you see only so far. As you move, you see more. You should consider what you know and accept that there is the whole world of unknown waiting. Draw a map or whatever that helps you in your endeavours.

Be in balance with yourself and your ever-changing surroundings. That is The Tao of Testing.

...or something like this. :) The fact is that I don't know. I only believe. I'm in a situation which is way better than the situation before understanding all this. It's easier to be good at work, but at the same time a new set of challenges have emerged. The options and directions have multiplied. I have to consider a lot more than I used to. I have to take more responsibility over what I do. But I'm glad I have the tools for it, and the means to create balance. In work and in freetime. Next steps will be interesting, to say the least.

Stay tuned! ;)

Quote time! Translations from ancient scriptures are often quite suspicious, but regardless I'll go with this brilliant string of words:

"A good traveler has no fixed plans, and is not intent on arriving." -Laozi

Yours truly,

Sami


PS: That's me and my wife Malin after five days of hard training in Hontai Yoshin Ryu European Taikai 2013. Yin and Yang... :)


4 comments:

  1. Great post, Sami! The thought about atomic vs holistic and the ability to see everything gave me a couple of ideas... I've been considering how to report the testing status so that it wouldn't just focus on the details in front of me. I'm not sure I'll use mindmaps for this... but I need to show how what we're doing is just a small part of what has to be done :)

    ReplyDelete
    Replies
    1. Thank you, Helena! The idea is really hard to put into words. A mixture of tacit knowledge and feelings. But it's very concrete and always there. Perhaps when time goes by I grow wiser in this subject and manage to write something better. In the mean time you'll have to settle for this. :)

      Delete
  2. Hello Sami. Any idea who holds the copyright to the atom image in this post? If it's you, please reply via jdstillwater at gmail. I seek permission to use the image in a non-profit educational slideshow. Thanks, JD

    ReplyDelete
    Replies
    1. Hi JD! Unfortunately I don't have the copyright. It's one of the many images I've just snagged from internet. Here's the original source:

      http://looklistenandlearn.wordpress.com/2011/02/05/life-at-the-indefinite-level-and-atomistic-level/

      Delete