Think like a user, but break software like an expert!

Testing From The Trenches...
From Someone Who Has Been There and Done That!

Thursday, March 4, 2010

Method to My Madness

So you might wonder, "What does an exploratory tester do?  Does it really count as testing since it is not automation testing?"

Since leaving Google and starting my own company, I have run into companies that only want to hire automation test engineers or companies that think that exploratory testing can be easily handed off to off-shore teams without having someone from their company monitoring and guiding the testing.  The idea is that exploratory testing is so simple that it can be handled off to teams that don't have in-depth knowledge of the product.  They can just run some test cases while the automation testing covers the 'real' test cases.  Not so!

From my perspective, exploratory testing is an art...plain and simple as that. An outstanding exploratory tester takes great pride in breaking software, in finding the holes in the code, in stressing the system in a way that the software developer did not anticipate.  That is the fun in it, when you really love this type of testing.

Think of it this way.  Would you rather have your users find the bugs or give up using your site because of the bugs, or would you rather have someone with experience find the issues first so that your users will think that your site is awesome and easy to use?

Think like a user, but break the code like an expert!   That's what a great exploratory tester can do.

Let's take a simple example.  You have input fields on your site for people to sign up and get a login name and password. If the code is written properly, the fields will have limitations (number of characters allowed, types of characters accepted and those that are not allowed).

What happens if you haven't set the limits properly?  You leave yourself open to buffer overflows or cross-site scripting attacks, for example.  Also, if there are no limits to the fields, and you accept 200 characters for the username, what happens when you show the next screen that says "Welcome" and then proceeds to print out a name that is 200 characters long?  What happens to all of the nice formatting on the page that you were expecting?  Not looking so good now, is it?

A great exploratory tester thinks 'What if _____? and then proceeds to test it out.
A great exploratory tester truly enjoys this process of not following the expected road.
Anyone can do what is expected.  The interesting results come when you don't follow the expected path and then do what seems 'random'...but actually is well thought out and based on testing skills.

Many companies are using their software developers to test new builds.  Big mistake.
You wouldn't want your physician to do your dentistry, would you?  They are both doctors, but it takes a specialist to do the job right.  Don't let your software developers do all of your testing. Sure they will find some of the issues, but as your company grows, so does the expectation that your site will work all of the time..  People can be fickle.  If your site is down too much, loses data, releases features that are unacceptable to your users, you will have people looking for other options.

So what do I mean "Method to My Madness"?  I mean that exploratory testing may seem like 'madness' and 'randomness' but it is really well researched and thought out, educated 'madness'!

1 comment:

  1. When I've been reading this recently, I've been thinking more about your explanation of exploratory testing. Testing a UI requires a thorough and comprehensive approach. It's not just that it's not random. You probably have a number of structured methods in your exploration toolset, from checklists for coverage to testing for border cases to testing for continuity and implications to using typical user expectations in interacting with the UI. It would be interesting to describe such a categorization in a future blog post.