- QATestLab Blog >
- QA Basics >
- Latent and Masked Software Bugs: What’s the Difference?
Latent and Masked Software Bugs: What’s the Difference?
Note: the article was updated in October 2018
Bugs can attack your software at any time especially when you do not expect to meet them. Some software defects are not identified during testing as they can mask or stay latent. It is important to understand the difference between these two types of bugs and keep them in mind.
So, a software bug is a defection from the requirement that leads to the software failure. Software functions are generally specified in the Software Requirement Specifications (SRS) and all the deviations must be recognized and registered.
A masked bug is an existing error that has not yet caused a failure just because another error has prevented that piece of the code from being performed. The main feature of these bugs is that they hide other system defects.
A latent bug is an existing error that has not yet caused a failure because the accurate set of conditions was never met. Such bugs can stay in a system for a long time and be detected in different software releases.
Practical description of latent errors
Let’s suppose that the application can print a document either by a laser printer or by dot matrix printer. To perform this, the application searches for the laser printer first. In the case the application finds a laser printer, it uses this one and prints. In the case, it does not find a laser printer, the application searches for a dot matrix printer. And if the application finds a dot matrix printer, it prints a document or gives an error.
As a result, this app will never search for the dot matrix printer. And the application has never been tested for the dot matrix printer. It means that the accurate conditions were never met for the dot matrix printer. This is the example of a latent software bug.
Practical description of masked errors
Now the same application has 2 errors:
- the dot matrix printer search
- the dot matrix printer print
As the search of the dot matrix printer fails, the print error of this printer is never detected. That is why the print error of a dot matrix printer is a masked software bug.
Conclusion
Sometimes it is difficult to determine that a certain error is a software deviation. Latent and masked bugs are hard to detect and reproduce as they do not stay on the surface. Regardless, a qualified tester must recognize and identify such bugs by implementing the suitable tools and test cases.
Learn more from QATestLab
Related Posts:
- 2 Groups of Significant Software Bugs
- Main Types of Defects in Software Testing
- Types of Bugs in Software Testing
I do not understand the practical case.
1) look for a laser printer
2a) found > print
2b) not found > look for a dot matrix printer
3a) found > print
3b) not found > error
So, why “this application will never search for the dot matrix printer”?
Many thanks
DotMartix printer is never searched if a Laser printer is found. To unmask the error, remove the Laser printer configuration and run your program. It won’t find Laser and hence tries to find DotMartix printer. If that too not found then the discussed masked error will rise up.
And if you set the DotMartix as the default for first search, and program is unable to find it, then the next Printer, i.e. Laset, is searched for. If none found an error is raised.
The cause of such error is that ignoring other printers if an earlier searches return a found response. Instead if printers are found from a pool of printers, then such masked error will not arise.