Exploratory Testing: Take a Walk with the Data

Article summary

When doing exploratory testing of an app, the tendency is to focus on the new features and functionality being delivered and forget that no story lives on its own. To guard against this, you can take some “tours” of the app to explore how it’s all fitting together and if there are any issues when features interact.

One of these tours is a Follow The Data tour. You start from where the data gets into the system and go right through to its final destination, asking “what if” at each step.


Where does the data come from? Is it manually entered or from a file? Is there a website and an app feeding data in? If so, are these consistent in their validation of the data being entered?

Use Goldilocks data — too small, too big, and just right. Also, check that only the “just right” is allowed into the system.

Are there any constraints on the data being unique? If so, can these constraints be worked around by editing existing data? Or by users entering the same data at the same time, are there any possible race conditions?

Check for silent truncation. Is all of the data being stored? Take a look in the database or wherever the data is being stored to make sure all of it was stored and not just the first N characters.


Someone should have validated that the input data is correct and in the right ranges, but can this data then be combined to cause problems? Can two maximum values be used to create a bigger than maximum one? Can a 0 or null value be used so that you get a divide by zero or NaN error?

Are all inputs used? If not, why are they being asked for? Is it just because all forms always ask for a middle initial, even though your app is never going to use it?

Does any of the data have to be unique? If so, can you go and edit any existing data so that it’s not?


What uses the data, and can the data make the process go wrong? If it gets displayed on a webpage or printed out, can any special characters in the data cause display problems?

Do any other systems use this data? If so, can this go wrong? Your app might happily accept and deal with a first name such as Josè, but what if an external service does not like the accented “e”?

Following the data through the system can be a useful tour to take. It can also highlight other areas that might be worth taking an exploratory testing tour on as well.