/ agile

Heuristics

Introduction:

There are a lot of testing techniques which can be applied while testing a product or application. The techniques used is context dependent, meaning it depends on what you are testing.

While a testing technique might work well in one situation, it may not be suitable in another. It is important to know many different testing techniques so that you can apply the right ones, in the right situation.

This blog post series hopes to cover a few of the techniques I use when testing web applications in a fast-paced agile environment.

I have selected some articles and books which are added to the bottom of each blog post, should you choose to gain further understanding on each of these techniques.

What are “heuristics”?

Heuristics can be looked at as a “rule of thumb”, an educated guess, you come up with ideas you might use when testing an application or product. Heuristics does not just apply to software testing, they apply to everyday life.

Katrina Clokie explains heuristics in a practical everyday life scenario:

Imagine that I want to eat a pickle. My pickles are stored in a large glass jar. In my household the last person to eat a pickle was my flatmate. He has closed the jar tight. On my first attempt I fail to open it.

What do I do next?

I check that I’m turning towards the left to loosen the lid and try again. Then I retrieve a tea towel to establish a better grip when twisting the lid of the jar. Finally, in some frustration, I go and locate my husband. He successfully opens the jar.

When faced with a jar that will not open there are a number of things that I know are worth trying. These are my jar opening heuristics. When I am instructed to test a software application there are a number of things that I know are worth trying. These are my test heuristics.

There are many websites that provide detailed heuristics that can be applied in many situations. I suggest following the links below this blog post to help get a fully rounded idea on different heuristics that might be applied while testing.

Let’s look at some examples of heuristics that you might use in your day to day testing activities. This is by no means a detailed list, this is only a snippet to give you an idea.

Data types is a common area that you would apply heuristics.

Data Type Attacks

  • Numbers- Negative

  • Positive

  • Floating Point/Decimal

  • Commas

  • Strings- Long

  • Short

  • Blank

  • Spaces

  • Special characters

  • Time and Date- UTC and Non UTC

  • Leap Years

  • Valid Days (28 February)

  • Invalid days (29 February)

  • Time differences between local PC and servers

Say we want to test the navigation functions on a website, a set of heuristics could be:

Web Tests

  • Back button
  • Forward button
  • Change / remove URL parameters
  • Refresh

These are all types of heuristics that a person can use when learning, discovering or testing an application. An important point here, is that the more you learn about the application the more discovering you do, which in turn leads to increasing the heuristics you use.

Sometimes you could have “testers block”, you might run out of ideas and things to try while testing. This is when having a “cheat sheet” can come in handy. You can use these to help prompt further ideas on testing an area or function of the application. See article below on heuristic cheat sheets.

Exercise – Getting Started with Heuristics

Once you understand what heuristics are and how you can apply them, come up with a list of your own, which you can always refer to. The cheat sheets found in the links below will give you a good starting point, you will find that in each company there will be a set of unique heuristics directly related to that company.

Create the list on your internal collaboration tool and  get others to add to this list, when working collaboratively on a heuristic list you will most likely come up with a much more extensive list. It also has the added benefit of getting discussion going within the company.

Articles on Heuristics