As a martial arts practitioner for over 25 years, there’s been a concept I’ve been aware of for a long time that could be easily be loosely applied to software testers making a transition into the world of exploratory testing from what we may refer to as ‘traditional’ testing (dare I say, ISTQB :-)).
This concept is known as Shu Ha Ri
And in very simple terms it deals with three stages of learning – Imitation, Understanding & Transcendence.
In martial arts terms, when you begin training you spend your time blindly copying your instructor, absorbing everything he/she imparts, eager to learn and willing to accept all correction and constructive criticism on offer. Shu stresses basics in an uncompromising fashion so you have a solid foundation for future learning. Most students at this stage perform techniques in identical fashion even though their personalities, body structure, age, and abilities all differ.
In testing terms, this may be indicative (at least for those of us a bit longer in the tooth) of how we were introduced into the world of software testing as newbies. It may even reflect how some people *still* teach software testing today (I therefore use the term in its loosest sense in this particular context). Pillars of flawed wisdom such as
– All knowledge about testing the system is embedded in your test cases.
– To appear to fully test coverage you have requirement-test case mappings.
– The more test cases you have, the better coverage you’re getting.
The above statements are obviously laughable, but in terms of your teachings, I think it’s probably safe to say they were imparted in good faith, and your mentor was trying to provide you with a prescribed approach (however misguided) to testing that would cater for most of the problems you would encounter in your testing career. I’m sure there are people out there who still use this flawed logic and feel they’re doing a pretty good job.
In martial arts terms, when you reach a certain level of proficiency (generally, Dan grade or above), you begin to break free of the fundamentals and apply the principles acquired from the practice of basics in new, freer, and more imaginative ways, as well as beginning to question and discover more through personal experience.
In testing terms, I’m sure we can all appreciate the situation where a project/product has gone live, a critical defect has been discovered that escaped the attentions to the test effort, and your manager has invariably asked “But we tested against all the requirements, how could this have happened?”
It’s at this point when you realise that blindly following your prescribed approach wasn’t going to cut it (although one would hope that the proverbial penny would have dropped some time before) and you understand that your approach will need to be adapted (or better, revamped) to fit in with your current situation. This doesn’t have to be a solo journey either; it can be done in collaboration with your mentor as you seek new ideas and solutions.
In martial arts terms, this is when you reach a high degree of proficiency and have absorbed all you can learn from your teacher. You are now learning and progressing more through self-discovery than by instruction and can provide an outlet to your own creative impulses, and your techniques will be executed with facets from your character and personality.
In testing terms, you will be proficient at constructing and blending approaches to best suit your current context, largely be influenced by your experiences to date which will most likely outweigh the formal teachings handed down in the prescribed approach.
One may be tempted to use terms such as mastery here, but I believe transcendence is more appropriate – why? The term mastery traditionally suggests that there’s nothing else to learn and I firmly believe there’s always something new to learn. Besides, who’d ever want to be in that situation? Learning and the continual opportunity to learn is probably the single most invigorating facet of a career in software testing. The same is true in martial arts, even after 25 years I’m still learning new things as my understanding grows deeper.
I think it’s safe to say that our experiences largely dictate the kind of testers we become and the approaches we take, but we should all continually strive to better ourselves through sharing of experiences and active discussion (amongst other things) and with a thriving online community this is made so much easier.
So wherever you are on your journey, take comfort in the fact that there’s always something new to learn.