Software Testing is more like Fencing

I got into a discussion with my colleague at work the other day about Martial Arts and Fencing. He asked me if they were similar and I said that based on my experiences with both that I didn't think so.

Martial Arts is about the harmony between mind and body. Different Martial Arts stress different skills and techniques but there is always the spiritual side, and with your mind focussed and at peace you can do almost anything. I remember some of my first Kung Fu lessons as a teenager when I was taught that my first reaction to a fight situation should always be to find a quick way out of it. Fighting should only be the last resort.

Fencing, on the other hand, is like both a Science and an Art. I remember learning the blocks (the "parries"), the lunges, and all the other technical maneuvers, but I also remember that when I was in an actual duel my mind almost forgot everything and I went with my instincts. You see, an actual duel is *much* faster than you can imagine. You almost don't have time to think or you're toast. With lots and lots of practice the technical moves become part of your instincts and then you become better at fencing.

So what about Software Testing? Despite the fact that some people amicably refer to it as a Martial Art, I don't see the spiritual side of it. When I see a bad application my first reaction isn't to run away. ;-) I dive in and go with my instincts. And project schedules are almost always faster than you'd like them to be.

With lots and lots of practice, my testing techniques have become part of my gut reaction now, so I usually make my own luck when it comes to dealing with bad programs.

Perhaps Quality Assurance is more like Martial Arts. You need a belief system to keep you motivated when you do *real* QA. You need to believe that you can eliminate the defects, the inefficiencies and the variances from the development process by applying certain methods and models.

I don't believe that. Not for a moment. We could stand here and talk about how we're going to do something or we could just do it and tweak things as we go along. Me? Let's dive in and do the best we can because time is running out. =)

En garde!

A bit about Software Testing Certifications

Recently I was asked about my "certification". Here, more or less, is the response that I gave. I thought I'd note it here in case I was asked again.

Back in June 2002 I received my certification through the American Society for Quality (ASQ) as a "Software Quality Engineer". While I may use the term "Certified Software Quality Engineer" in the US, due to Canadian laws, I may only refer to myself as an ASQ-CSQE here in Canada.

Here is a link where you can find out more information about this certification:

Of particular interest to you may be the Requirements for this certification and the Body of Knowledge covered by it. (FYI: Note that "Software Testing" is merely a subset of section "VI - Software Verification and Validation" to the "QA" folk. Many people use "QA" and "Testing" interchangeably, but to me they are quite different.)

This ASQ certification covers many different aspects of Software Quality throughout a Software organisation (i.e. from defining Quality in the Business Goals, through to the Engineering methods, Requirements, Development, Testing, and Configuration Management). The exam itself was interesting in that many of the questions were designed in such a way as to demonstrate application of knowledge. (So people without experience who can memorise well may not pass the exam.) I spent about 4 years preparing for the ASQ exam by applying the principles, techniques and advice from the reading list materials into my regular work duties.

Why did I get this certification? It was applicable to what I was doing at the time.

Over the last few years I have changed my focus from Quality Assurance to Software Testing.

Most of my energy is currently on the Software Testing profession and I am an active member of the Association for Software Testing (AST). You can find out more about the AST at their web site:

I find it interesting that my ASQ involvement has provided me with a good knowledge of Quality-related issues that are, in general, quite difficult and complex to apply and manage on a day-to-day basis in a Software organisation. By contrast, the AST aims to provide us with the knowledge and support we need to be effective Software Testing practitioners. (i.e. the former is laden with bureaucracy and paperwork while the latter aims to make us useful employees.)

There are several Software Testing certifications available to the public, but none of them are particularly meaningful right now. The AST does not yet have any certification program, but we have discussed the development of a certification that would be based on demonstration of skill and not just one's ability to memorise the terms and definitions from an assigned reading list (which is what all of the current Testing certifications are based upon).

In the past, when I have interviewed candidates for Tester positions, I have used "Testing certifications" as an indicator that someone has more than a passing interest in this profession. Unfortunately, I can confirm to you that the certification itself has absolutely *no correlation* to testing ability whatsoever.

Too bad.