Saturday, January 17, 2009

Understanding the EFF

When a person enters into the world of Software Testing, the first thing which he/she learns is about some general terminologies used in Software Testing like; ERROR, FAULT, FAILURE, BUG, DEFECT, MISTAKE, etc. More often, we mix-up all those terminologies and get confused. Here, I have tried to explain all those terms and their exact meaning and hope it would be helpful to everybody.

ERROR
A human action that produces an incorrect result.
FAULT
A manifestation of an error in software.
FAILURE
A deviation of the software from its expected devlivery or service.

Standard glossary of terms used in Software Testing
Version 2.0
ISTQB

All of the products of Software Development including Specifications, Source Codes, and Test documents are written by the human beings and we all human beings are prone to make MISTAKES. When we make MISTAKE while making a software or writing the codes in the computer program, then it is called as an ERROR. The word ERROR is a computer noun which is only used in the world of computer, infact I would say that the word ERROR itself is discovered when the computer was discovered. ERROR is somthing that a human does mistake while making/developing a Software.

When the ERROR made by human being comes in it's effect, then it is known as FAULT. The result of an ERROR being made is a FAULT. FAULTs are also known as a DEFECTs or BUGs. But in Software Testeting world, the word BUG is mostly used. The word FAULT, DEFECTS, and BUGS all these are having the same meaning. We most of the time, get affected by these tricky Synonyms.

When a system or piece of software does not perform as expected or performs somthing which is not expected, then it is called to be a FAILURE and it is caused when a software/product is having FAULT in it.

Lets suppose, we have a requirement in an application that we need add two numbers for a transaction.

This requirement is delivered to a developer to make it in effect. The developer writes the code for it but unknownly he/she has done a MISTAKE that he/she has placed a semi-colon alongside the addtion(+) sign in the program.

Now while debugging the source code he/she detects his/her own MISTAKE in the code, this is called to be an ERROR. Usually ERROR is detected at the developer's end because the ERROR resides only in the program that he/she can view. The MISTAKE done by a developer is detected by himself/herself in the development environment itself then it is called to be an ERROR. The ERROR is never detected by a TESTER because he/she doesn't view or aware of the source code, he/she simply test the functionality implemented in the application.

Now suppose, Developer has done the MISTAKE as mentioned above and he/she doesn't even check/test and simply delivers it to a TESTER for testing the functionality and the TESTER finds it in the Testing environment then, it is called to be a FAULT.

The MISTAKE done by a developer is detected by a TESTER/DEVELOPER/ANYBODY else in the Testing environment then it is called as FAULT. Usually the FAULT is detected by the TESTER in the Testing environment. In the Tester's eye the MISTAKE done by a Developer is called as FAULT. The FAULT usually occurs in the application if a Developer has done MISTAKEs in writing the codes. Due to the developer's MISTAKE, the FAULT arises in the application.

And due to the respective FAULT the application fails to achive the expected requirement and now it is called to be a FAILURE. FAILURE is somthing which makes sure about whether the actual requirement is achived or not !

From the above small discussion, we came to know that ERROR, FAULT, and FAILURE all these three terms are inter-related to each other. Therefore, I have Summarized the actual meaning of all these terminologies in a simple lines as;

ERROR is caused by the MISTAKE.
FAULT is caused by the ERROR.
FAILURE is caused by the FAULT.

No comments:

Post a Comment