Test Coverage Parallels in Trash Walking

First, about scope…

As I began my trash walking (see here and here), I quickly found that I needed guidelines on what counts as my work space and work product. I am collecting trash along the road, so what does that entail? Here is what I came up with:

I began with a broad operational definition of trash: “any loose, inanimate object of low value that may disturb the tranquility of the touring experience.” This applies obviously to the tranquility of pedestrians, cyclists, or motorists, and possibly others.

I ignore anything that seems especially toxic or a bio-hazard. Thus no dog poop or road kill (because I am not equipped for that).

I ignore things that seem to be serving a purpose by being there.

I ignore things that are too large for my trash bag.

I ignore things that are too small to pick up.

I ignore things that require substantial digging to free from the ground.

I ignore groups of things that are too numerous (e.g. one thousand toothpicks)

In testing terms, we call all this my oracle (alternatively, you can say that each list item is an oracle, it makes no difference since we never count oracles, we just use them). An oracle is a means to recognize a problem when you encounter it. Oracles define what is and is not your business as a tester in terms of what you are looking for. Notice that I have described my oracles only in a high level sense. The truth is I have a lot more oracles that I don’t know how to describe. For instance I know how to recognize a broken plastic container, and distinguish that from a sea shell, even though I don’t know how to describe that knowledge. Written oracles are almost always approximations or summaries of the real oracles that a tester uses.

Sometimes the oracle is challenging. Examples:

I once found two flipchart markers on the ground next to a driveway and an upright stick. I left them there thinking that maybe someone was putting up a sign. When I returned the next day they were still there, so I decided they must be trash.

I saw a child’s pair of prescription glasses on the beach. I left them in case the owners returned but they also were still there the next day. Conclusion: trash!

I saw two sneakers and socks on the beach, far from any person. I kept my eye on them, and eventually someone collected them. Close one. I really wanted to put those in my trash bag.

I found an envelope taped to a park bench that said “Blue Clue #6.” I left it alone in case it was for some kind of puzzle game that hadn’t yet been played. If it’s still there tomorrow, I’ll get a clue.

Scope is part of mission. My scope is the problem set that belongs to me as opposed to someone else. The totality of my oracles are one aspect of scope, because they dictate what counts as a problem. Another thing that defines scope is what things I am supposed to be looking at. In this case, what is my work surface? What is the place I am searching? I determined this to be:

the road itself

the shoulder and the ditch (one side of the road on each pass)

potentially anywhere visible to a tourist from the road

potentially any property which my wife frequents

NOT anywhere that is too difficult to access, where difficulty is a subjective assessment related to energy (“that’s too far away”), injury risk (“I’m not climbing down that bank”), and social transgression (“there is a no trespassing sign on that tree”)

Finally I decide on a route. I determined that according to the travel patterns of my primary client: my wife, Lenore. You could say I looked at her “use cases” of road use. Apart from exercise, her respect and pleasure is the big reason I’m doing all this. I want her not to see trash anywhere on the island. (Interestingly, I was unconscious of that motivation until I had already done more than 30 miles of trash-walking.)

My scope is therefore anywhere my wife is likely to see from her car or on foot on Orcas Island. My mission is to remove trash from that area.

My coverage, on the other hand, is what I actually look at. Here is a map of my coverage (data collected with Gaia GPS on an iPhone, then exported to Google Earth):

Let’s zoom in and note some parallels with software testing.

1. My coverage analysis tool is not as accurate as I would wish.

According to this I was wiggling all over the road. But I promise I wasn’t. There are several meters of random inaccuracy in the GPS data.

Similarly, in testing, I rarely get the fantastic logging that let’s me say exactly what was and was not tested. Remember also that even if the coverage map were perfectly accurate, I would still not be able to tell whether the tester was paying attention during that testing. The power of the oracles vary depending on the focus of the tester, unless the oracles are automated. And many vital oracles cannot be automated.

2. Sometimes your client asks for specific coverage.

Lenore asked me to clean the beach, since she often walks there. She and I covered this together as a pair. The beach was too wide to do all at once, so we did a pass on the high part and then a pass on the low part. Lenore was a bit obsessive about what counted as trash, so we picked up literally anything that was visible to the naked eye and seemed like trash. This included plastic particles the size of a penny.

This is similar to risk-based testing. You focus on areas more intensively if they are more critical to your client– defined as a person whose opinion of quality matters.

3. Sometimes you test where it’s easy, not where the bugs are.

This is a private property where my wife likes to walk. When I walk with her, I carry a trash bag. We did find a little trash but only a little, because the owners are pretty clean.

4. Sometimes you decide on your own that deeper coverage is needed.

This is a little public park. I couldn’t walk by when I saw the trash there, even though my wife never goes there.

5. Sometimes you get clues from users.

A fellow in a car pulled into the substation and said “hey! you missed something over here!” That was helpful. I think most people look at me and assume I am their tax dollars at work. I like that. Life is better when people appreciate their government.

Reader Interactions

Comments

James, do you think we are we born this way or is this an acquired skill?

[James’ Reply: I’m not sure what you mean by “this way.”]

To me it would seem this is an innate skill of all living organisms: the ability to detect, categorize and seek items of interest (be they food, mating partners or software defects). Some people decide to use this skill in some areas and not in others, thus rendering them less competent at testing computer software for example vs acquiring currency and female partners.

[James’ Reply: Oh that. Yes. We are definitely born this way. Humans (and many other animals) are born to be playful and curious. We are born to learn. Learning is a survival-critical behavior. Apart from that– or a subset of that depending on how you define learning– is foraging. Foraging requires exploring the environment and identifying items of interest (generally food and danger). All living creatures engage in foraging, even fungi. ESPECIALLY fungi.]

The fact that you can put this skill into words, thus rendering it explicable to humans with similar knowledge to yours is even more interesting to me. There lies the kicker I think, what differentiates good testers from good teachers.

[James’ Reply: It’s a teaching skill, yes. I think it’s more of a philosophical habit that I apply to teaching. I can’t help but to analyze and wonder about how and why I do things. Putting that into words help me, and sometimes other people, too.]

Guess my question is “can all humans be good testers”?

[James’ Reply: Yes, anyone CAN be. But not just anyone can WANT to be. Heck, I think my wife could learn to be a professional politician and run for Congress, but I think she would rather swim in a sewage pond than to do that.]

Great article. btw, how did you get the GPS data? [James’ Reply: I used the Gaia GPS app on my iPhone. It records my tracks and allows me to export them to Dropbox as a GPX file, which can be imported into Google Earth.]