Bug Reporting Process

Olha Holota from TestCaseLab
7 min readMar 28, 2023

--

Bug reporting process

Bugs are an inevitable part of software development. No matter how experienced or skilled the development team may be, bugs can always sneak their way into the code. These bugs can range from minor cosmetic issues to major functionality problems that can have serious consequences.

Testing is one of the most important processes in software development to catch these bugs before they make it to the end users.

What Is A Bug?

In software testing, a BUG is an error, flaw, or defect in the software that causes it to produce incorrect or unexpected results. Bugs can occur due to various reasons such as coding errors, design flaws, hardware failures, or user input errors.

When software testers come across a bug, they document it by providing detailed information about the bug, including its symptoms, steps to reproduce it, and its impact on the software’s functionality. This information is then passed on to the developers who work to identify and fix the bug.

Fixing bugs is an important part of the software development process as it helps to ensure that the software functions as expected and meets the requirements of the end users.

Types Of Software Bugs

Software bugs can be divided into several groups by type. Let’s outline common types of software bugs.

Syntax errors

These are bugs that occur due to incorrect syntax in the code.

Example

Missing or misplaced punctuation, incorrect capitalization, or misspelled words.

Logic errors

These bugs are caused by flawed logic in the code.

Example

When software that is designed to calculate the area of a rectangle, but instead calculates the perimeter.

Runtime errors

The bugs happen during the execution of the program.

Example

For example, an attempt to divide by zero or access an invalid memory location.

Integration errors

The bugs take place when different software components or modules do not work together as intended.

Example

When a new feature added to a software product conflicts with existing functionality.

Performance errors

Errors happen when the software does not perform as expected.

Example

The software runs too slowly or consumes too much memory.

User interface errors

The bugs take place when the user interface does not function as intended.

Example

A button does not respond when clicked or a dialog box does not display correctly.

Compatibility errors

Errors that occur when the software is not compatible with certain hardware or software configurations.

Example

A software product that only works with a specific operating system or version of a web browser.

Bug Statuses

In order to manage bugs and monitor their reporting process, statuses are used. Bugs own statuses depending on their current state in the bug tracking system.

  • New or Draft

When a bug is first reported, it is assigned the “New” status. It means that the bug has been identified but has not yet been reviewed or assigned to a developer.

  • To Do

Once a developer has reviewed the bug and determined that it is valid, it is assigned the “To Do” status. The developer has acknowledged the issue and plans to work on a fix.

  • In Progress

When a developer is actively working on fixing the bug, it is assigned the “In Progress” status.

  • Resolved

Once a developer has fixed the bug, it is assigned the “Resolved” status. He leaves a comment about what has been fixed and in what way. The testing team has to test the bugfix.

  • Verified

After a bug has been fixed, it is assigned the “Verified” status. The tester leaves a comment, that the bug is not relevant anymore, and outlines the date and environment of the test. This way the tester confirms that the bug is no longer present in the software.

  • Reopened

If the bug still exists after fixing or the bugfix causes a new bug, then the comment is left and the “Reopened” status is set. The developer needs to come back to the ticket.

  • Closed

Finally, when a bug has been fixed and verified, it is assigned the “Closed” status. No further action is needed.

Bug Reporting Process

The bug reporting process called a “pipeline” is the process of reporting, tracking, and fixing bugs in a software product. The common steps refer to statuses.

  1. The first step is to identify the bug by performing various tests.
  2. Once the bug is identified, try to reproduce it by following the steps that led to the issue.
  3. Document the bug by providing detailed information about the issue, such as the steps to reproduce it, screenshots, and log files.
  4. Assign a priority and severity level to the bug based on its impact on the software product and the urgency of the fix. Priority refers to the order in which the bug needs to be fixed, while severity refers to the impact of the bug on the software product.
  5. Assign the bug to a developer who will work on fixing the issue.
  6. The developer fixes the bug by making the necessary changes. Once the bug is fixed, the developer should mark the bug as resolved.
  7. The tester verifies the fix by performing tests to ensure that the bug is fixed and that no new bugs have been introduced as a result of the fix.
  8. If the fix is verified, the bug is closed. If the bug is not fixed, it can be reopened and assigned to a developer for further investigation.

What Can Go Wrong?

  • First of all, it is important to get to know whether the bug found is a real bug.

For a bug to be reported accurately, it must be a real issue that threatens the value of the product. Bugs can refer to faults, failures, annoyances, or even opportunities for improvement. That is why it is important to be aware of the initial requirements and be ready to compare the functionality developed with the documentation.

  • The bug must have the potential to occur.

This is known as producibility. Testers should check whether there is an ability to trigger behavior that leads to the issue. Sometimes project teams skip any issues that cannot be reproduced on demand.

  • The bug must be manifested through observable behavior.

It means operating the product under the appropriate conditions to produce the bug. To ensure thorough testing, it’s essential to cover all aspects of the product, such as functions, data, platform configurations, and interfaces.

However, a bug can be easily producible and yet remain undetected during testing if the testing conditions are different from how real users interact with the product.

  • The bug must be able to be observed.

The ability to observe is crucial for effective testing, and having access to detailed logs and back-end interfaces can improve observability.

While any bug that occurs can be observed in theory, it may not be practically observable during testing due to limitations in tools and methods.

It is possible for something to appear as a bug, but not actually be one. Human perception is not perfect, and testers should be aware of the potential for optical illusions or mistaken memories that could lead them to believe they have observed a bug when there is none.

  • To notice a bug during testing, you must see the bug with your own eyes.

However, just because a bug can be seen, it doesn’t mean it will be noticed. Humans can easily miss bugs that are right in front of them due to inattentional blindness or the belief that there are no bugs to be found. To maximize the chances of observing a bug, testers can test in pairs, perform tests more than once, or record their testing to play it back later.

  • To determine if a behavior is a bug, you need to authenticate the bug using a reliable source.

However, this can be difficult since what appears to be a bug to you may not be perceived as such by others. As a tester, you must understand the users’ perspectives, but it is not always feasible to have them observe your testing. While you may have requirements, sometimes there are no definitive standards to rely on. When reporting a bug, you must be able to justify why it is a bug and why it is important. A bug may be understood but not authenticated if you mistakenly believe that it is incorrect behavior when it is actually correct.

  • To ensure that your client understands the bug, they must receive the report and comprehend its significance.

This is not only a technical problem but also a social problem, as it involves your personal credibility. Before creating a formal report, you should discuss your findings with the developer.

  • In order for your client to take action on a bug, they must believe the bug is important.

Reporting bugs that don’t matter can make testing seem unimportant and undervalued. However, as a tester, you cannot control whether there are important bugs in the product. By testing in a risk-based way, you can focus on finding the bugs that are likely to be important if found.

***

Most QA activities are inevitable and can be avoided during the software development process. In order to ensure that the product covers customers’ needs it is important to review and analyze all the requirements. On the basis of requirements, testers create test scenarios. As soon as test scenarios are approved, testers begin writing the most important QA documentation — test cases. Test cases are inevitable as soon as with their help testers check the functional and non-functional characteristics of the product and verify whether the product is ready for moving forward.

In order to keep your test cases organized and structured it is important to use a test case management tool, as it allows you to avoid writing test cases in google sheets, manage and update test cases in a few clicks; gather test sets, and track test executions. Also, there are opportunities to generate status reports to share with stakeholders. You are welcome to try TestCaseLab with a 30-day free trial. It is very simple and user-friendly. With its help, you are able to save time for testing and managing QA documentation.

--

--

Olha Holota from TestCaseLab

My name is Olha, and I am a Project Manager. At the moment I manage the project TestCaseLab. It is a cutting-edge web tool for manual QA engineers.