Test oracle

ISTQB Glossary definition In Simple English, Field Notes For Test oracle
ISTQB Glossary definition

"A source to determine expected results to compare with the actual result of the software under test. An oracle may be the existing system (for a benchmark), other software, a user manual, or an individual’s specialized knowledge, but should not be the code."  
[After Adrion]

In Simple English,

In short, Where you get your 'expected results' defined form is what a test oracle is.


QA Practitioner's Field Notes

  • Please note here that the test oracle is only a source for the expected result and not the process of getting it.
  • More often even experienced test analyst and QA practitioners confuse the test oracle with other similar systems and roles.
  • AS IS system is another way to talk about the test oracle and AS IS system is still not the test oracle
  • In terms of roles, An SME, BA, user champion or Single point of contact, functional lead all are roles that could help you with figuring out what the expected result is, still they are not the explicit test oracle though they may play that role for some time. The problem is that invariably and quite beyond their control when these roles try to be the test oracle they deviate from expected result based on what their role calls for as their interests in the project.
  • The test oracle is ideally a role that is independent of the other roles.
  • This independence helps them be very objective and just present what the expected result functionally would be independent of the system it is implemented in.
  • When technology re platforming, modernizing and upgrade projects are taken up, the need for a separate test oracle arises as most of the functional outcome is clearly defined. In fact the objective of most of these projects is to provide at the very least the same functional response as the previous system.
  • Interaction with the test oracle is better done at the early stages of the project and particularly the test execution phase.


For Example:

Example 1:

Say a company is upgrading it's leave management system from a 7 year old standalone web based software that they were using to the latest version of the same brand of software. This being a off the shelf product would have evolved and grown in the 7 years to do a lot more that the earlier version. It may even not do some of the functional scenarios that the older version did.


In this situation the upgrade team has 2 options, to document every functional transaction that was handled by the old system and establish the same in the new system or they can take these functional transactions from old system and redesign these to use the new features of the latest software and work with the limitations of the new system.


Only in the first case would a test oracle make sense. in the second case the test oracle would not be of much need or use.



So, what do you think?

Was the explanation clear enough?

Did you understand?

Did you get what you were searching for?


If you have any more questions, comments or compliments please let me know as your comments below.

5 comments: