Testing defined – or not

What is testing?  There are almost as many definitions of that as there are software testers and I don’t think it can be contained in just one definition (at least not succinct one). However, today I’m going to put forward a definition that helps to point out and emphasize some of what testing is.  This is not intended to be a definitive definition of testing, but is merely something that I’ve been thinking about recently.

Testing is figuring out how to align our judgement with the judgement of the customer and advocating for the product to change in ways customers judge as valuable

I think much of what we do as testers boils down to this.  We are trying to figure out what customers will want and care about and trying to find any areas in the product where it doesn’t match these expectations.  One of the hardest parts of our jobs is figuring out how to do this.  How do we know what the mythical ‘customer’ wants?  What do we do when two different customers want conflicting things?  How do we distinguish between what I want and what a customer would want?  How do we figure out the importance of the things customers don’t even know that they want or those things that have an indirect impact on customers (clean code, or testability features etc.)?

I’ve just raised a lot of questions that I have no intention of answering in the blog post, but come to think of it, these same things are also one of the hardest parts of a coder’s job as well.  Perhaps test and dev really are in the same game.  Maybe as testers a big part of our job is to take what we have learned about what customers want (and the ways we have managed to figure that out) and share that with developers so that they can better write code that meets customer needs the first time around.  Maybe being a ‘tester’ or a ‘developer’ isn’t what is important so much as being part of team that can produce software that meets the customer’s needs.  

Maybe we don’t need to sweat too much about what testing is, but should instead focus on what effective software development is.  If effective software development efficiently produces software that is valuable to the customers, where does testing fit into there?  I guess it depends on your team and how you work and what your skills are.  

For me I think it means learning how to pass on much of what I have learned to the developers.  I have skills that would help my team become more efficient, but sometime those skills are wasted on things like finding bugs.  Finding bugs is helpful of course, but wouldn’t it be far better to work with developers on preventing those bugs?  When I start testing a new feature and find 5 serious bugs in the first hour of testing, is that because I am skilled tester? – it may be, but does this use my skills in a way that maximizes their usefulness to the team?  Could I have helped developers gain a perspective on the feature such that 4 of those bugs were fixed before the developer marked the coding as done?

Food for my thoughts. Let me know yours.

Why Blog

There are so many good blogs out there on software testing so why start another one?  What value do I think I can really add here that isn’t covered by others?  Why bother with this?

I used to blog, back before Facebook and Twitter.  In those days it was what we used as social media.  Things have changed (of course! – we are talking about software here) and I have changed as well.  I’ve been working as a software tester for 8 years now and hopefully I have  learned a few things along the way.  However, I am also discovering that I’m getting to the point in my career where the learning curve has slowed down. The easy stuff has been covered.  What is left now is the stuff that takes a lot more work and effort to learn.  This is the stuff that really stretches me beyond my natural talents and that requires digging deep on different topics.  

In highschool I was homeschooled and this meant that when I was stuck on something I had to figure out my own way out of it.  Sometimes this meant finding someone who could help me (for example, finding a family friend who was an engineer and could help me with my algebra) but one of the most useful skills I found was to explain it to my younger siblings.  I learned very early that one of the best ways to learn something difficult is to explain it to others.  Doing this revealed the flaws in my own thinking and showed me where I wasn’t fully understanding things.  

I think it is time for me to get back into that mode.  It’s time to start explaining things to others so that I can come to clarity for myself.  It’s time to put into words what I am trying to do so I can see where I’m missing things and where I don’t understand concepts that are crucial for me to get if I want to continue to advance in my abilities as a tester.  I’ve been reading and taking in a lot of information on how to be effective at software testing in the past few years, and now it is time to see how well I really know it.

So come on and join me.  If you’re confused, let me know.  If you disagree, let me know.  If you like it, let me know.  Maybe we can learn a few things together!