Get started Bring yourself up to speed with our introductory content.

Four tips for effective software testing


Define expected software testing results independently

Source:  ra2studio/Fotolia
Visual Editor: Sarah Evans/TechTarget

When you run a test, you enter inputs or conditions. (Conditions are a form of inputs that, in production, ordinarily are not explicitly entered, such as time of year. Part of running a test often involves additional actions to create the conditions.) The system under test acts on the inputs or conditions and produces actual results. Results include displayed textual or graphical data, signals, noises, control of devices, database content changes, transmissions, printing, changes of state, links, etc.

But actual results are only half the story for effective software testing. What makes the execution a test, rather than production, is that we get the actual results so we can determine whether the software is working correctly. To tell, we compare the actual results to expected software testing results, which are our definition of software testing correctness.

If I run a test and get actual results but have not defined expected software testing results, what do I tend to presume? Unless the actual results are somehow so outlandish that I can't help but realize they are wrong, such as when the system blows up, I'm almost certain to assume that the expected results are whatever I got for actual results, regardless of whether the actual results are correct.

When expected software testing results are not defined adequately, it is often impossible for the tester to ascertain accurately whether the actual results are right or wrong. Consider how many tests are defined in a manner similar to, "Try this function and see if it works properly." "Works properly" is a conclusion, but not a specific-enough expected result on which to base said conclusion. Yet testers often somewhat blindly take for granted that they can guess needed inputs or conditions and corresponding actual results.

For a test to be effective, we must define software testing correctness (expected software testing results) independently of actual results so the actual results do not unduly influence definition of the expected results. As a practical matter, we also need to define the expected results before obtaining the actual results, or our determination of the expected results probably will be influenced by the actual results. In addition, we need to document the expected results in a form that is not subject to subsequent conscious or unconscious manipulation.

View All Photo Stories