Bugs: A Huge Micro-Inconvenience

book cover

Want Us to Email You a Copy?

No problem! Just type in your email address below, so we can send it to you. (You can read the full guide without giving us your email — keep scrolling!)

After reading the title you may think we’re crazy, but believe us when we say this, it’s true that the tiniest of bugs can cause the deadliest amount of damage. In a general context, a bug is any microorganism that harms or damages its host. Now, the host may be a physical entity like the human body but the host may also be software.

That’s right even small pieces of code that cause a program to malfunction or underperform are called bugs. A bug is usually defined to be an element of the computer program that causes it to glitch or produce undesired results that are not in line with the expected output of the program.

Why Is A Bug Called A “Bug”?

We could call it an erroneous piece of code or just simply an error in the code but why do we call it a bug?

The origin of the term “bug” to define anything that doesn’t function ideally in a computer world dates back to 1945. Harvard University was working on an ambitious project the Mark II Aiken Relay Calculator in late 1945. On 9th September 1945, the technical team at the University was testing Relay 70 of the calculator when they found something very unusual between points in the relay. They found a live bug!

bug report

So, the technical team dislodged the bug and fixed it to the computer log that they maintained and wrote down that the calculator misbehaved because of a bug and then they debugged it. That is how the term debugging and bug came into the software world. Even today you’ll find the journal in the Naval Surface Warfare Center in Dahlgren, VA.

what is bug reporting

Well, no one would want to keep a bug in their system right. So, we must learn how to identify, analyze and report a bug properly. It is imperative to get to the root of a bug and decipher what factor caused the bug and how to nullify the factor (unless your bug acts as a very rare feature!).

Trust me bug reporting is not as difficult as it sounds or how other bug hunters make it look.

What’s In A Bug Report?

That’s the quintessential question we are trying to answer here. In layman’s terms, a bug report is like a report card you get after your annuals. It contains all the information and factors that are associated with a particular bug. In Technical terms, it contains diagnostic information like device logs, stack traces, and others that can help zone in on a bug in the system and rectify it.

In any case, bug reporting is important because if there are bugs (which are always present), then the one who has found the bug must be capable of reporting the bug by documenting it precisely. The one in charge is completely dependent on the finder’s report for reproducing the bug and solving it. You can remember the simple logic: – that garbage means garbage will be reproduced and we all know that garbage cannot be solved (it’s garbage!).

Let’s take a microscopic look at what device logs and stack traces are (cause bugs are microscopic too!)

Device Logs: An All-Inclusive Report

Every OS (Operating Software) has an inbuilt utility that keeps a record of all the actions performed by a hardware or a software component. It’s like a God’s eye report of every single process happening in a program.

Thus, it is very obvious that if you feel you have a bug in your program then this should be the first place you look. The device logs won’t specifically highlight a bug activity but if you look carefully you will be able to accurately pinpoint the program and the code where a bug activity is happening.

You can extract and analyze device logs using analysis tools like EventTracker, Splunk, etc.: –

Stack Traces: A Time Frame-Based Analysis

Inside a given time frame, a processor performs a call to a certain number of functions. The “stack” of these functions along with the time stamp is called a stack trace.

Analyzing a stack trace requires a certain level of skill and you must be fluent in the functions that you think have a bug in them.

A sample track trace looks like the image below;

analyze stacktrace 2

Specifically, a bug report must contain these basic elements:

  • Title
  • Environment
  • Reproduction steps
  • Expected Result
  • Actual Result
  • Proof attachments (like screenshots, capture, etc.)
  • Priority
  • Severity

What, When, Where & Who: A Criminal Interrogation

If I went ahead and compared bug reporting to solving a criminal case I wouldn’t be out of mind. In many aspects, bug reporting is a type of crime-solving. The only difference is that the bug is the criminal.

You must be focusing on the intricate details of your system like the architecture you are using, the browser you are using, the type of operations you are performing, the stack of functions you are using etc.: – But it is also crucial that you do not lose sight of the bigger picture like what actions did the bug perform. The answers to the four crucial questions are given below, adhere to them while designing your report and you will soon become a pro bug reporter (or should I say, bug investigator!).

What?

The first question you should think about while writing a bug report. What caused the bug? Did you click on something or pressed a certain key on the keyboard? Every action that you believe caused the bug must be documented.

Thus, you must reproduce the bug at least three times before you start reporting the bug. This allows you to be sure of the exact actions that lead to the occurrence of the bug. Also, it makes it easier for the bug solver to reproduce the bug on their side.

Where?

At this stage, you will be well aware of all the actions that caused the bug. Now you need to answer the question of when did the bug happen? Did it occur after a recent update to your system or maybe you replaced some part of your setup with a new version and that caused the bug?

Newer versions that are released on trial stages to testers rely on their ability to decipher when the bug happened and after which software change. While writing about this in the bug report mention the version level, the security patches applied and also if certain URLs triggered the bug.

When?

At what time frame did the bug occur? Now, this is a very difficult question to answer and often we don’t have the exact moment remembered when the bug occurred. But there are various tools to find out the exact moment when a bug occurred. You can use stack frames to figure out which function call at what time triggered the bug.

Nevertheless, it makes solving a bug a lot easier if the report mentions a time frame so that the solver knows the exact time to anticipate the bug.

Who?

The million-dollar question! Who is the criminal? The boogeyman in your software? Do you know a similar bug that someone has encountered before? These are the questions you want to answer in a bug report.

Also, a who? You want to answer “ who is the finder of the bug? What is his name? What are his email address and point of contact? The answers to these questions can help the solver collaborate with the finder. Collaboration between the finder and the solver helps to easily reproduce the bug and solve it.

Image Filing: an unconventional resort

Not all bug reports have to be in a written down text, often bug reports have a lot of screenshots of browsers and the environment where the bug was encountered. Image filing a bug report is also very beneficial as it helps in explaining the bug better.

But beware of creating a completely image-based report. A mixture of both written text as well as screenshots with annotations creates a very efficient bug report. The best case of using image filing for a bug report is when you face browser bugs. You may see that the search bar on a page doesn’t work, maybe the navigation panel on a university website is not functioning properly or the button to submit is not placed inside the web frame. Such bugs can be reported by a well-annotated screenshot, even a single screenshot with all the necessary annotations works wonders in explaining the bug to the developer side. Remember the developer side is dealing with the source code so they do not have the visual advantage as the bug tracker, so describe all the metadata that you can.

Automatic Bug Reporting: an inbuilt safeguard

Usually, you won’t have to sit in front of a text editor and compile all your findings to create a bug report. Most OS today have an inbuilt tool to report bugs automatically. If you had the dubious luck of encountering a bug while performing some action you might have also come across a warning box that says, “Do you want to report this bug?”. That’s the inbuilt bug reporting software in action.

You may see a similar screen shown below, under the developer options in your phone that allow you to better manipulate debugging options.

usb debugging

Writing A Bug Report: A Necessary Undertaking

So, we have been raving about bug reports in the entire article but how are we supposed to write one? Here are the steps you would want to follow while writing a bug report.

Summarize: Write a summary about the bug in easy-to-understand and crisp language.

Describe: Give a specified bug number that’s non-duplicated and clear. This is important for future troubleshooting and bug solving as you can keep a record of how you solved a particular bug as well as the report of the bug.

Bug reproduction information: Firmly explain the environment, the method, and the outcome of bug reproduction in the report. It helps the other person to reproduce that bug again so that it can be fixed. If the bug cannot be reproduced, it cannot be fixed.

Choose your words carefully: Do not go around writing everything non-essential to the report and turn it into an essay (believe me, Shakespeare would be the least appreciated person while writing a bug report). The report has to contain precisely what’s wrong and how to fix it and therefore, you have to include only the minimum information that is needed.

Incorrect Bug Reporting: An Unfathomable Crisis

Imagine trying to solve a huge polynomial equation and then realizing you miscalculated one step, no matter how much you try, salvaging the problem is impossible and you’ll have to start all over again.

Similarly, an inadequate bug report is unsalvageable. Recognizing a bug requires a huge amount of concentration and so does analyzing and solving it. If your bug report doesn’t contain detailed facts about the factors that influenced the bug or the exact environment in which the bug appeared, then unfortunately your bug report is as worthy as a plain sheet of paper.

Also, make sure that you are sure you have encountered a bug. Often a bug may just be a glitch in the system and may not happen again. To make sure that you have a bug and to save yourself from some embarrassment, always try to reproduce the bug at least thrice. This not only helps you confirm the bug but also allows you to notice any other details that you may have missed the first time. Every bit of information comes in handy while trying to solve a bug.

Incorrect bug reporting is one of the most time-consuming tasks that developers are involved in every day, imagine spending three hours to reproduce a bug only to realize that the bug was a mere system glitch on the bug reporter’s side. So, you must be sure that what you are reporting is not a glitch but a software bug.

7 Tips To Write A Great Bug Report

  1. Use an analytical tool to track and record a bug
  2. Give a unique or specified title to the bug in the report
  3. Make sure to describe the environment and configuration you reproduced the bug in, which includes the system, network connectivity, OS.
  4. Take no time in reporting the problem. Theoretically speaking: the longer you take, the further its roots go.
  5. Specify the defect. Giving a clear title is important as mentioned above. It helps in keeping a record of the bug.
  6. Test the bug occurrence yourself at least three times. Testing the bug as many times as you can give accurate information on it and helps in fixing the same defect again and again.
  7. Note the summary and other key information in the meaningful text so that it can be readable and somebody can fix the bug again after checking your report. Writing a good summary can take up the task of explaining complex parts in simpler ways.

Bug Reporting Tools: Makes Your Life Easier

A good bug tracking tool can make the process of reporting, assigning, and tracking the bugs so much easier. Therefore, it’s important to choose the best tools that can help you in this.

Below listed are some of the best bug reporting tools:

1. monday.com

A very agile and robust software for bug tracking. monday.com also offers a high amount of customizability and collaboration. The developing team behind this great tool have been generous enough to provide a video also displaying how they set up the tool for bug tracking. Though monday.com is designed for virtually any environment it’s best used in software development.

The tool also offers you a high amount of customizability in terms of notifications and automation. You can also create roadmaps to share and visualize your hunt for bugs and bottlenecks with your team. Shareable boards are another feature of this superb tool to help you collaborate better.

2. Wrike

This tool is one you want to get your hands on if you are looking for an award-winning bug tracking tool. Trusted by 20,000+ institutions, this tool is perfect for a team of five individuals to an unlimited member team. With an easy to use and intuitive platform, this tool has a plethora of features like Kanban boards and one-click Gantt charts along with traditional workload views.

With simple navigation and a well-organized system of distinct spaces and folders, users can quickly shift between the home screen, timesheets, dashboards, calendars, reports and notification streams. It also has inbuilt templates for bug tracking reports.

3. BugHerd

This tool is one of the best for non-developers and clients to use. It’s designed to report website bugs and acts as a layer over the webpage. All communication is handled on your website and this makes it easy for project heads to gather reviews from multiple sources in one place.

Bugs can be reported by just clicking on the element that has a bug and the backend organizes all the information including metadata (OS, version, etc.:-) into a Kanban-style workboard. The best part is BugHerd is compatible with mobile devices and can be used for mobile websites debugging. Its visual simplicity and ease to use make working with BugHerd a charm.

4. Backlog

Unlike a conventional bug tracking platform, Backlog is more like a huge online project management tool with a feature-rich bug tracking tool. It has a very intuitive approach and a huge set of features that are not difficult for anyone to learn be it developers, non-developers and clients. It offers a lot of visual and PM tools like burndown graphs, Gantt charts and git graphs.

Much more than a bug tracking tool, Backlog also offers features like pull requests, merge requests and branches. Again, Backlog is available for IOS and Android so your team can access the bug tracking reports from mobile devices also.

5. DebugMe

This tool works best for small to mid-sized teams. It has a minimalistic approach to bug tracking and provides all the premium features for bug tracking without overloading the software with a huge number of modules and functions.

The tool is great for bug tracking but doesn’t do much after that which is kind of obvious but a bit disappointing compared to other competitors who offer auxiliary features too.

One of the most economical choices in the market, this tool also allows pining to debug comments onto webpages itself while providing an auto-capture feature that records all the important metadata (OS, browser version, plug-ins etc.: -) along with the bug.

6. Zoho Bug Tracker

Zoho delivers everything that it promises in its Zoho Bug Tracker. It comes equipped with features that allow customizability, scalability and efficiency. It provides you with an armada of features for bug tracking along with additional tools for time management and project management.

Zoho delivers everything that it promises in its Zoho Bug Tracker. It comes equipped with features that allow customizability, scalability and efficiency. It provides you with an armada of features for bug tracking along with additional tools for time management and project management.

7. Bugyard

This tool allows you to track bugs not just in the development stage but rather also in the live stage. Best for freelancers, small-sized and mid-sized teams this tool is not filled to the brim with bug tracking features but rather only supports the essential bug tracking features (believe me those are enough!).

With tools that allow you to capture feedback directly on your webpages by the user, Bugyard also has an automatic visual bug capture that records the bug along with the metadata (OS, screenshot, browser version etc.: -). It also features some collaboration tools for sharing feedback with the team.

There are tons of bug reporting tools that you can take up for free or buy. Hunt for yourself and find out which tool suits your skillset and turns you into an elite bug hunter (make sure no bugs “bug” your computer).

Tips To Find Bugs In Your Website – ( Click here for Full Article )

  1. Design Bugs – Make sure Design and Developed website both match.
  2. Content – Proof Reading is must.Correction of typos, mechanics issues, and grammar errors in the text. Make sure you check before you publish.
  3. Mobile Responsive – Website are accesed through mobile devices. Double check if website is fully responsive and compatible with mobile devices and browsers.
  4. Cross Browser Testing:check whether your website works as intended when accessed through: Different Browser-OS combinations i.e., on popular browsers like Firefox, Chrome, Edge, Safari
  5. Accessibility Testing: The website should comply with section 508 ADA and other guidelines.
  6. General HTML and CSS checking: The HTML or XHTML is necessary to be error-free, and a W3C Markup Validated
  7. Security Testing for Website Login: Please make sure you have all the security protocols in place before launch.

Sample Bug Reports: A Visual Guide

Following an example is an easy way to learn so here are a few sample bug reports you can refer to while writing a bug report.

1st. Sample Bug Report

  • Bug Name: Application crash on clicking the SAVE button while creating a new user.
  • Bug ID: (It will be automatically created by the BUG Tracking tool once you save this bug)
  • Area Path: USERS menu > New Users
  • Build Number: Version Number 5.0.1
  • Severity: HIGH (High/Medium/Low) or 1
  • Priority: HIGH (High/Medium/Low) or 1
  • Assigned to: Developer-X
  • Reported By: Your Name
  • Reported On: Date
  • Reason: Defect
  • Status: New/Open/Active (Depends on the Tool you are using)
  • Environment: Windows 2003/SQL Server 2005
Description

Application crash on clicking the SAVE button while creating a new
the user, hence unable to create a new user in the application.

Steps to Reproduce:
  1. Login into the Application
  2. Navigate to the Users Menu > New User
  3. Filled all the user information fields
  4. Clicked on the ‘Save’ button
  5. Seen an error page “ORA1090 Exception: Insert values Error…”
  6. See the attached logs for more information (Attach more logs related to the bug. If any)
  7. And also see the attached screenshot of the error page.
Expected Result:

On clicking the SAVE button, should be prompted to a success message “New User has been created successfully”.

(Attach ‘application crash’ screenshot. IF any)

Save the Defect/Bug in the BUG TRACKING TOOL. You will get a Bug id, which you can use for further bug reference.

Default ‘New Bug’ mail will go to the respective developer and the default module owner (Team leader or manager) for further action.

2nd. Sample Bug Report

  • Web Project bug report
  • Summary: In CTR (Click through ratio) ‘Total’ row calculation is wrong
  • Product: Example product
  • Version: 1.0
  • Platform: PC
  • URL: (Provide URL of the page where the bug occurs)
  • OS/Version: Windows 2000
  • Status: NEW
  • Severity: Major
  • Priority: P1
  • Component: Publisher stats
  • Assigned To: developer@example.com
  • Reported By: tester@example.com
  • CC: manager@example.com
Bug Description:

Reproduce steps:

  1. Go to page: (Provide URL of the page where the bug occurs)
  2. Click on the ‘Publisher stats’ link to view the publisher’s revenue detail stats date wise.
  3. On page (Provide URL of the page where the bug occurs) check CTR value in ‘Total’ row of CTR stats table.

Actual result: Calculation of ‘Total’ row in CTR table is wrong. Also, the Individual row CTR for each publisher is not truncated to 2 digits after the decimal point. It’s showing CTR like 0.042556767.

Expected result:

Total CTR= (Total clicks/Total searches) *100

[Attach bug screenshot if any]

Please fix the bug.

Bug Reporting Templates: An Easy-To-Use Script

Many popular websites like GitHub and software tools like Jira, Trello etc.: – provide inbuilt templates that you can use to file your bug report. Beware though, even though templates are easy to use and designed to be user friendly, they require a certain level of technical proficiency for you to be able to file a workable bug report.

You may also require various screenshots and system log files that you will have to upload along with the bug reports to support your bug report. A few samples of these templates are shown below

GitHub:
Jira:
14 3
GitLab:
14 6

Bug Reporter Vs Bug Solver: A Persistent Duel

Every time a bug is found an error by the developer is brought to the limelight. It is obvious that in line with human nature, a developer is bound to reject your claim for a bug and force it onto your improper usage of the software.

As a bug tracker, you must be sure that your bug report contains all the undeniable proof of the bug. Do not miss out on any relevant detail even the smallest one like your computer architecture but also avoid creating a novel out of the bug report. You want to provide bug evidence in the most concise way but efficiently. Sometimes this may make you reproduce the bug several times on your system but that is the way to go.

Once convinced, a bug solver has to work on an efficient solution but also remember that every solution is going to meet some criticism. As a bug solver, you must make sure that you ponder upon all the possible scenarios that a given bug might occur. You may be given just one situation where the bug was found but it may also be possible that another set of actions may result in the same bug occurring. Utilize the bug report given to you and try to reach down to the root cause and then solve the problem from there.

Conclusion: A Few Parting Words

Bug reporting is a very tenacious task that requires efforts from the bug finder without the promise of any gain except better performance. As a co-developer on a team, you may be happy to go through the easy but lengthy task of creating a bug report but as a normal individual creating a bug report is not their go-to option.

It is imperative that no matter our technical qualification every user of software (which is about everyone!) must be aware of the methods involved in reporting a bug when they encounter it. You may choose to ignore the bug too but then; you will also be facing its effects. Reporting bugs have also been given more impetus in today’s time with bug bashes (much like bug hunting parties), bug bounty and monetary gifts being provided to bug reporters that provide an efficient report. With the modern world rapidly shifting to a digital age, bug reporting is a very necessary task and one that requires constant public support.

Bug reporting, to some extent, plays an important role in the development of technology. With more and more efficient bug reporters coming to the lime-light, developers are becoming more vigilant knowing that a section of the society is there to point out their faults. A healthy competition between developers and bug reporters will only be for the betterment of technology and in turn for the world.