Monday, August 5, 2013

Refresh on Basics: 99 Ways Workshop #37

The Software Testing Club recently put out an eBook called "99 Things You Can Do to Become a Better Tester". Some of them are really general and vague. Some of them are remarkably specific.


My goal for the next few weeks is to take the "99 Things" book and see if I can put my own personal spin on each of them, and make a personal workshop out of each of the suggestions.


Suggestion #37: Every year or 2 - Refresh on basics - Read ISTQB Syllabus, TheTestEye SW Quality Characteristics, BBST material, etc. again. (Every time you have different perspective thus gain different insights from same material) - Halperinko


In martial arts, there is the notion of the "kata". It's a formalized set of steps, done in a very specific order. It is customary to demonstrate your knowledge of these kata as you progress through the ranks. Even when testing for black belt and higher level "dan" ranks, it's not uncommon to be asked to demonstrate your knowledge of even the earliest kata learned.

Many things in life are automatic, but even exploring autonomous actions can yield great insights. In meditation, we are asked to focus on and review the way we breath. Yes, even the most basic and automatic of systems can offer insights when we consider what we are doing, and how we do it. Our testing should be no different. What is the central and core knowledge we should know? How often do we think about it? What can we learn when we take a step back and consider old skills applied to new problems? What are the most essential things we need?


Workshop #37: Take a "wilderness survival" approach to software testing


In the Boy Scouts, one of the most filled merit badge courses at Scout Camp each year is "Wilderness Survival". One of the requirements involves spending a night out in semi-remote areas, and the scout in question is allowed to bring only a few items. They bring a pocket knife, a water bottle, and the clothes they are wearing. Most of the scouts that go into this experience come back with huge smiles on their faces. They realize that with just a little knowledge and some basic tools, they can accomplish a great deal, at least for a limited amount of time.  The longer they are exposed, or under greater environmental variance, they will nee to adapt or consider other options.

We likewise can do a great deal of software testing with just a few elemental tools. Imagine you needed to look at a product, and your automation suite was not available to you. All of the tools that you are customarily used to having are not accessible. The API hooks can't be used. No external apparatus was available to you. Just a closed system, and you. 

What would you test? 
What makes for a good test?
How would you verify what you see?
How would you explain a pass or fail condition? 

In my view, the top essential Software Testing Wilderness Survival tool (outside of curiosity, tenaciousness, and desire) is the Oracle Heuristic. A heuristic, however, will only be effective if you understand how to use it and in what circumstances. Understanding the oracles that are available to you to make a determination is important, and this becomes more pronounced the less infrastructure you have at your beck and call. Automated scripts are designed with key oracles in mind, and those oracles as PASS/FAIL criteria are built into the test design (ideally, in any rate). When you don't have automation to use, or other specialized tool to help you out, you then have to figure out mentally if an oracle is appropriate. This is why I consider the Oracle Heuristic the Swiss Army knife of software testing, and I recommend every tester spend time honing, sharpening and practicing.

Back to being outdoors... there are, of course, many other tools you can bring with you as you are dealing with less "survival mode" excursions. Can I survive with just a pocket knife, some water, my clothes and my wits? Sure, for a time. Can I fare better with a backpack that has even more essentials? 

What if I bring:

- my pocket knife
- a waterproof sack
- some prepared fire starters (sawdust and paraffin are beautiful for this purpose, plus some matches or, if you want to be slightly more daring, carry a piece of flint and a small piece of steel)
- a flashlight (I personally prefer using a headlamp)
- a compass
- a convenient water container, such as a Camelback bladder and hose
- water purification tablets (in case I run out of the water I brought with me, I can get more and make sure it's safe to drink)
- a hat, to protect me from the sun and keep my head war if it gets cold
- a waterproof jacket (windbreaker is fine, but waterproof will be a huge blessing
- a first aid kit

These are an example of what is often touted as the "10 Essentials". Throw in a backpacking stove (I'm personally a fan of JetBoil, but there's lots of other methods as effective or even more so), a small sleeping bag, a bed roll, a tarp, some backpacking food and an insulated bag that I can pour hot water into so I can keep the food warm and let it cook, a simple sierra cup and a spork… I could be self sufficient for weeks :).

As we test, and as we have more time and flexibility, we also have our own set of essentials that will come into play. The shell prompt in our operating system can often be scripted. Various tools and app ca can be used to monitor applications and discover their inner workings. NOte taking apps can help us quickly define what we are seing and capture images to help us communicate what we see to others. Scripting languages and frameworks may allow us to automate repeatable steps, etc. With time and preparation, we can determine which of these tools are most important and when. From there, we give priority to those that will be the most effective in the given circumstances.

Bottom Line:


As an backpacker, I value the ability to travel light, but remain effective. As a tester, it's important to know that we too can travel light and be effective. Take the time to look over your most basic testing skills, and practice them regularly. Sure, you may think of using them as automatic, like breathing, but even breathing is a process we can learn new things about under the right (read "trying" ) experiences. Taking the Wilderness Survival mode helps us hone in on what's essential, and then work out from there. 

No comments: