DEV Community


Posted on • Updated on

A short introduction to heuristics for functional testing

A example of a pattern
A example of a pattern

What are heuristics, really?

While studying testing for my career change, I'm putting the names to techniques I had just sort of ....felt my way to as a digital marketer who was asked to do user acceptance testing often, and learning many more.

Let's start from the top.

When testing, we aim to see that the application works as expected, and also that the application handles invalid input or unexpected user behaviour gracefully.

This is called positive testing and negative testing.

While testing, we notice patterns to the bugs which crop up. These patterns don't work every time, but they're helpful guides that help lead the way. We call them heuristics.

Below is a list of heuristics commonly used in functional testing. With thanks to Elizabeth Hendrickson, Karen N Johnson, Terry Wiegmann, Michael Bolton, Scott Lawrence, James Bach, Alan Giles and Donald Firesmith, who created the heuristics below or helped lead the way to them through their brilliant web content.

Happy path

The typical user. The one we expect to see. Valid input created by the majority of users.

Edge case

Not the typical user, but their input is still valid, and should be accepted.

Pairwise Testing

All possible discrete combinations of 2 input parameters.


At the minimum value, at the maximum value, below the minimum value, above the maximum value, within the range.


Almost too big, almost too small, at the boundary.


Really big number, really small number, just right.

Reasonable data

Too big number, too small number, just right.

Null testing

Receiving null values.

Boolean testing

Accepting true/false with one input. Accepting true/false combinations with multiple inputs.

Date/Time Testing

The End date can't be before the start date.
If the start date and the end date are the same, the start time can't be later than the end time.

Recent, Core, Risky, Configuration, Repaired, Chronic

Recent code, core code, risky code, configuration sensitive code, repaired code, chronically repaired code.


Empty state, Create, Read, Update, Delete.

Follow the Data

Data integrity at every stage of the CRUD process.

Web session

Time-out is accurate, can't access membership pages when logged out.

Input Method

Type, Paste, Keyboard arrows, mouse. Does the system accommodate possible input methods?


Comparable Products
Users’ Desires


Words, Numbers, Pages. Sort stays on pagination.

Violate Constraints


Creating with username/email address already in use.

Null values

Creating with leaving required fields blank.


Before and after deployment. Seems obvious,

Top comments (0)