A Beginner’s Guide to Software Defect Classification
- September 28, 2021
- maira
Generally speaking, software bug is an error, flaw or failure in a computer program or system that causes it to produce incorrect results and behave in unexpected ways. James Bach, a computer program tester credited with developing session-based testing, defines software defects as “any threat to the value of the product to any stakeholders who matter”.
Most defects occur because of the mistakes in program design, source code, or in the operating systems on which the program is running. While QA experts put constant effort into preventing it from occurring in software programs, defects in products are still a routine occurrence. For a system or program to perform its functionality accurately, it needs to be 100% bug-free.
Finding and Removing Defects
An organized and directed defect management effort is required to identify and remove the bugs in a program. Generally, bug management comprises of the following two methodologies: testing, and debugging.
Testing
Testing is the process of finding bugs in a piece of code or a system. The system is tested against given and unexpected requirements while the resulting behaviors of the system are noted.
Testing can be of two types, manual and automated.
Debugging
Debugging is the manual process of finding and removing a specific bug or defect from a program.
Defect Classification
They are given a priority and severity level to help the development team understand the level and extent. The classification is essential and is absolutely needed as the development team cannot resolve all the issues simultaneously. This classification allows the development team to decide which defects need to be fixed on an immediate basis and to what extent the functionality of the program is affected by the defects.
Priority
How quickly a bug needs to be fixed is determined by priority. If there is a major bug in the program, its priority would be listed as “high”.
Priorities are described by words, such as “critical,” “high,” “low,” or “deferred”. These priorities are described as follows:
- High: Fix it immediately. The system is unable to perform its core functionality, or test execution is blocked by the defect.
- Medium: Fix it soon. The system fails to perform functionality, and the test execution is not blocked.
- Low: Fix “High” and “Medium” priority bugs before fixing this one but don’t neglect this bug as it needs to be fixed too.
- Deferred: The bug prioritized as deferred means that the bug is most likely to be fixed in the upcoming releases. The reasons behind this may be that the priority of the bug is low and there is a lack of time for the release, and/or the bug does not make a major effect on the functionality of the software.
Severity
Severity indicates the extent to which the error affects the program. In other words, it describes the impact on the system.
If an important functionality is blocked or if that functionality functions incorrectly, the highest defect severity is chosen.
Severity is an important feature in the bug management tools as it enables the project managers and teams to determine the priority level of the issues, thereby enabling them to triage the bugs accordingly.
Owing to this feature, the bug tracking, monitoring, and management system becomes more systematic and organized, and managers have increased traceability access.
Moreover, bugs and errors in the software system can also be allocated to the team members with the most relevant skills and experience; for instance, a high priority bug that has a significant impact on the project and is more technical in nature would be assigned to a developer who has the most skills, experience, and bandwidth at the time.
In addition to this, depending on the severity, impact, and frequency of the bugs, the financial resources and testing efforts can be divided and assigned.
A critical bug that has no possible workaround and impedes the system’s functionality would be allocated a higher budget than a minor bug which can be ignored for the moment.
Severity can be of the following types:
- Critical: A core functionality of the system fails or the system doesn’t work at all.
- Major: Has an impact on basic functionality and the system is unable to produce required results.
- Moderate: Causes the system to generate false, inconsistent, or incomplete results.
- Minor: There is an impact on the business, but only in very few cases.
- Cosmetic: Related to the interface and appearance of the application.
While the above-mentioned priority and severity levels can vary among different companies and test engineers, their usage remains the same. Assigning priority and severity is always subjective to the test engineer who measures the impact from their point of view. Nevertheless, the defect .priority and severity must be set carefully because its resolution is both costly and time-consuming.