Wednesday, January 29, 2014

The Motion Sickness Heuristic

The Motion Sickness Heuristic is a way of combining salient elements of coverage with path testing in parts of systems that permit backtracking through the user workflow.

You may have heard of the Steeplechase Heuristic (from James Bach), where extreme data can test the limits of one input, but there may be other limits further downstream so it's a good idea to take the upper limit of an input and carry it through the workflow.

Well, imagine you're testing a system that has loops, or backwards flows. And don't forget that a browser has a "back" button. The Motion Sickness Heuristic means moving backwards and forwards and round loops until the system throws up a problem.

One can use the Motion Sickness Heuristic to provide the system with extreme or unusual inputs, and move back and forth through the system. It can be used to help learning by uncovering hidden paths/branches in path/branch coverage. It can be used to help uncover unusual behaviour while doing data testing. I use it to remember to go backwards as well as forwards in wizards and to test persistence and processing of data on unused branches. It's also useful to try to violate mandatory input constraints.

It challenges the assumption that users will always move forwards through the workflow, and never go back to change a mistake or to change their mind based on what they see in the current screen. It helps to test that context-sensitive information is displayed correctly in future screens when their trigger is changed. It helps to investigate what happens to data on branches that are subsequently not used.

Have fun!