|
What
"A manifestation of an error in
software. A fault, if encountered may cause a failure." [do178b] BS 7925-1.British Computer
Society Specialist Interest Group in Software Testing (BCS SIGIST)
Why?
Yes, why do we have faults in software? The simple answer is that software
is built by us, and we are only human. Humans make mistakes, known as
errors. Objects and machines from the time of cavemen have had things wrong
with them. It is something we have to accept. We do not have to accept
living with them. That is why we test and fix.
Note, a fault will not always lead to a failure in the system. For
example the analyst specifies bright red code with Red Green Blue (RGB)
value of "FF0000". The developer in coding enters a typo (the error) of
"FF00EE"
Correct colour of FF0000
Error colour of FF0011
This fault will not be apparent to 99.99% of internet browsers for
various reasons. To all intents and purposes they are both red, so in the
general run of events a failure will never occur. A failure will occur if
at some time in the future someone is looking for the string. FF0000.
Who? All faults eventually can be traced back to an error by a
human. Even if the code is written automatically by a tool, which was in
turn configured automatically and so forth, eventually a human will be at
the end of the line.
Who creates the fault? The truth is that a fault can be entered into the
software at any stage. From the customer not understanding his end-user
requirements all the through to a systems integrator forgetting to add in
widget X for final delivery.
Testers may feel smug at this point, as it would seem they have no part
in creating faults. I disagree. If a tester finds a fault repeatedly and
does nothing about preventing it in the future, he is allowing the error to
perpetuate.
Where? The error which triggers off the fault can appear
anywhere. Documentation, coding, integration, installation. The fault
however may appear somewhere else. E.g in our example above the analyst
misreads the requirements, and puts in the functional spec "FF0011" instead
of "FF0000". This is an error. The fault which may lead to failure is
created when "FF0011" is entered into code.
When? Again a fault can be entered at any time in the
lifecycle.
How? Human error. Again.
|