Thursday, August 12, 2010

Geocaching and software testing

Introduction
A few months ago I was introduced by a friend of mine with the phenomenon called Geocaching. Looking at the title of the Geocaching site "The Official Global GPS Cache Hunt Site" you notice the word "Hunt". To me this seems a bit like testing; as testers we are hunting for bugs instead of caches. Below you will find a short introduction to GeoCaching, for more information check out one of the links.

A short introduction to GeoCaching
The definition about geocaching on the main site is: "Geocaching is a high-tech treasure hunting game played throughout the world by adventure seekers equipped with GPS devices. The basic idea is to locate hidden containers, called geocaches, outdoors and then share your experiences online"

I highlighted a few words which have some similarities also with software testing:

High-tech treasure hunting <> in an high tech environment searching for bugs
adventure seekers <> passionate testers
equipped <> with tools and skills
locate hidden containers <> identify issues
share experiences <> share value of the tester/system

You might find more similarities in this definition or you might believe these are not the similarities. You might by right. In my opinion are more relations between testing which goes further then just looking at the definition.

Recently you see testers I value bringing up all kinds of challenges. Challenges to make the tester think. Most of the time those are directly related to testing like the missions in http://weekendtesting.com/.

Geocaching brings you also this challenge, only not just behind the pc, it takes you in the world outside, the caches are most of the time outdoors (Yes, there are some also located behind doors when you search for example in the centre of Amsterdam on caches)

Besides the official geocaching site you can also take a look at the wiki page: http://en.wikipedia.org/wiki/Geocaching

Type of caches
There are several types of caches with all their own purpose and symbols (depending on site and/or tool). Below you see a selection of
Traditional: The basic cache type, a traditional cache must include a log book of some sort
Multi-cache: This variation consists of multiple discoveries of one or more intermediate points containing the coordinates for the next stage; the final stage contains the log book and trade items
Mystery/puzzle: This cache requires one to discover information or solve a puzzle to find the cache
Virtual: Caches of this nature are coordinates for a location that does not contain the traditional box, log book, or trade items
Earthcache: A type of virtual-cache which is maintained by the Geological Society of America. The cacher usually has to perform a task which teaches him/her an educational lesson about the earth science of the cache area
Event Cache: This is a gathering organized and attended by geocachers.

Types of containers
There are several types of containers which contain the logrol. They are from magnetic to nano. from mini to ammo-boxes. Depending on size the purpose is defined and value can be added.
Example of a nano-container



Example of a ammo-box


Example of a re-using containers (foto-container)

An example of a cache hidden behind a location you normaly wont look


A great example of a container can be watched
http://www.youtube.com/watch?v=Lu7IysgaZf8

Coins and travel bugs
When you found a cache, depending on the size it might contain valuable. For some the valuables are trackable like geocoins and travelbugs. For others they are just playable valuables (kids like those stuff, we don't value any more, thought kids have a new toy to play with)

Travelbugs and geocoins have the behaviour to travel around. Sometimes with a preset goal and sometimes just with the goal to travel as much as possible.

There are several ways of selecting your caches.

Some similarities in caching/testing
Similarity 1: Save environment
I started with selecting caches in the neighbourhood. It feels save when you are in your own environment. Like testing you try to start testing in an environment you know, which gives you a save feeling.
Example of caches in my environment at a certain time



Similarity 2: Learn from environment
During my search in my environment I noticed the different levels of difficulty, terrain and also types of caches. Initially the traditionals were easy, then we started to act as a team (family) and walked a multi-cache in our neighbourhood. We joined our effort and watched and learned during the walk.
During testing you have to look further then just your cases. learn from your system/environment.

Similarity 3: Remember patterns/hide outs
While finding traditionals and exploring multi-caches we trained ourselves to identify the types of containers which contains information or the actual caches. In testing you will also learn about the hide-outs of bugs. For example: This can be based on the technology which is used or the process which is involved. You recognize situations.

Example cache hidden in fence. notice that it is under a lit, (you have to look beyond the black box-vision)


Similarity 4: Touring
While I was already active for some weeks I made some trips to my assignment and also to family. before I went to those location I planned my tripped, reserved some additional time to enable myself to search some caches. Sometimes it were short tours picking up just one cache during the route. Other times it were large tours, planning multiple pick-ups during the travel to the north. For this I used the map from geocaching.com to identify possible caches.
Like in testing, you plan and schedule you tour within a certain context.

Example of a map of a long tour (Defocusing)



Similarity 5: Challenges
Like said before, there also mystery caches. These involves some homework. Before you are able to find the cache you have to solve puzzles to calculate the coordinates. You have these also in different types of difficulties. Sometimes you can use the internet for it searching for answers. Sometimes you have to try to think different. This can be challenging, you have to focus and defocus finding the answers. Sometimes you are not able to find an approach to start. Either you leave this cache and continue with another or you ask for help. In testing we also facing challenges which we are not able to solve immediately. it is from these mysteries you learn the most.

Example of a mystery to solve


Example of another mystery to solve





Similarity 6: Pair caching
Recently I cached with a friend of mine. We scheduled a route to pick up as much as caches within a certain time frame. The preparation consisted out a list of caches we wanted to find and some spare caches. We created a tour plan and drove away. With 2 navigation and 2 GPS devices and internet connection we started the day. While caching we noticed that we could be more productive if we split up tasks. Instead of single logging caches etc we came up with an approach where drove the car, while driving he entered the new coordinates and made some pre-work. At the location we both searched for the cache. When it took more then 10 minutes we used both GPS devices. when found, the friend logged the cache in our administration and I on the cachelog. While hiding he entered the next coordinates and we drove of. We managed to adapt our way of working during our mission.
Like in testing we can benefit from pairing up.

Example Preparing a short tour with several types which fits in time frame




Similarity 7: Collecting information and Registration
There are several things to register and collect. I started to print out all the caches I hunted for. On those printouts I wrote down the date, time and nr of cache found. Just for administrative purposes. When needed I also add answers to questions in the cache or the newly calculated coordinates. This is fine when you are acting in small numbers. Now I learned that storing that information takes space, it takes time and sometimes it is not valuable at all. For instance the caches which are just for picking up. Why store that information also offline while it is online available also. it is available on the spot you found out about the cache: geocaching.com

Example of using other techniques




As learned in testing, I learned that registration should be of some value. Sometimes information is needed for an undefined period, sometimes you can delete it when it is used. For example: when a cache is found and no one needs my information, why keep collecting it.
At least I register the found and the not found on the official geocaching site.
There is some value in collecting information when you solved a puzzle and the way you solved it can be usable for other mysteries in the future.
In testing we do the same: we collect information and we register information. And we also do this too much. A lesson I learned again is to collect just information which contributes to the value of the object/system/person

Similarity 8: Find and learn about new spots in the environment
One thing I like about caching is learning about new locations, I was often surprised about the beautiful nature just around the corner. I get a broader vision about my environment were I live in. Also I identify suspicious bricks etc. on locations it is not their nature. Sometimes you see them everywhere. Currently for me there might be caches behind it when I am aware of a possible location in that area. There is the thin border about known known's and the unknown unknowns. You can explore and take the effort to look below the suspicious brick. You also can save the energy.
In testing it is the same: while testing you learn about new spots in the system. You might see suspicious actions in the system. Sometime you focus on them or you leave them as is.
Example of a cache hide-out in a tree


Similarity 9: Valuing your findings
As mentioned before, caches can contain some values like travelbugs or geocoins. You can select caches based on the probably chance of containing those items as mentioned on the website. You know it is there if you spot it in the cache. Sometimes some other person already found it and took it with him.
When you found an item you can decide if you take it with you and register it as taken, or you leave it and register it as discovered. When you decide to take it, be aware that those items might have their own goal, and sometimes that goal is attached to the item, sometimes you have to read it on the website. be careful to take it when you didn't check the goal, you might disturb the purpose of the item and disrespect the owner.

I found this also in testing. Sometimes you check the existence of value in a system based on some information you have. Sometimes you spot items which you were not aware of. you have to be careful if you call it a bug or an issue. Sometimes you were looking for it and sometimes it is not reproducible.

Similarity 10: Addictive
Geocaching is addictive. I enjoy solving puzzles, walking in other environments, spot those caches. Learn other techniques.
This is what I also gain from testing. I like to test, learn about applications, learn from other people. I want to keep testing.

Conclusion
There are similarities in testing and geocaching, in both you tour around an environment where you gain knowledge if you are open for it. You get pleasure if you enjoy it. You have to approach systems/environments and people with respect.
There are always other approaches which you can learn even after asking for help which guides you kin the future.
One of the valuable lessons here is that you have to spend time and energy to make it your own. (often registration is free and there are no certification programs)