Effective Bug Reports



 I have been writing a series of articles on Bug life cycle and some thoughts are still pending. In this article, I will describe my views on effective bug reports and how the same might help to improve the productivity of software development teams. There are many stories around the web on this topic, but still I would like to add my two cents here.

 

Objective

The bug reports must help to reproduce the problem with minimum efforts and help the developer to debug and fix the problem. The good bug reports contain most of the information required to stake holders to reproduce, analyze, debug and fix the problem in a given context.

 

Concerns

There are many instances in my experience where in which the bugs were returned to the testers or the bug reporters seeking more information / clarifications / steps etc.

  • How often the developers says that the issue is non reproducible at their end and seek clear steps to reproduce the bug?
  • How often the developers require more information from the bug reporters which is not part of Bug report?
  • How often do we spend more time on investigating the bug even after the bug has been reported?
  • How often, we were asked to provide test data for the issues
  • How often, we were asked for test environment details around the issue
  • And the list goes on …

 

We are often a hurry or excitement to report the issue and may provide just basic info and ignore. Some of us are also under the impression that we don’t need to spend so much time of the bug reports and might be waste of time too. Most of the information around the issue will be available only when the issue has been found. It would be tough to provide the same data at a later time.

 

But in reality, we spend more time even after reporting the problem and try to provide the information asked by stake holders.

 

The problem lies with the quality of the bug report. We often tend to report the bug with minimum details around the problem and tend to ignore context driven information required for other stake holder to save time.

 

The Bug Summary

Make it simple and point to the actual problem. Keep in mind that its developer’s initial interaction & the same must grab the attention and points to the actual problem.

 

Steps to Reproduce

Describe the state of application and the pre-requisites. The flow of user actions and data provided is important.  All the steps must be logical and we can remove redundant steps. It’s a good idea to have a relook on all the steps and try it on a fresh system.

 

Expected Behavior & Actual Behavior

The perceptions and views tend to differ always. It’s good the document the expected behavior and actual behavior of the system under test.

 

Test data

We provide lot of data to the systems under test at specific user actions. It’s important to list down this data and also capture data around the issue.  Provide the following as part of bug report

  1. The input data to the application
  2. Screenshots around the Issue
  3. The Log files

 

Test Environment

Test Environment plays key role in reproducing the issues and it’s the root cause for many of the non reproducible issues. We must take that extra mile to capture all the environment details like OS, databases, build numbers, browsers. There are no best practices here and we must capture information based on the context.

 

Bug Tracking Systems

We log bugs in bug tracking tool and assumes that all the things have been taken care. But if try to look at history and pattern of these bugs based releases or environments etc via bug databases, all the issues may not be present. We do miss out many attributes of bug databases that might help us to derive patterns, categorize over specific need in the long term.

 

Final words

The purpose of a bug report is to showcase that there is a problem that exists and let the developers see the failure.  It must defend and advocate the reasons around the problem and finally helps to resolve the bug in the system

Sitemap

Blog Archive

All the blog posts are listed here for your convenience.

BLOG SITEMAP:
Pages (3)  

   1.  About
   2.  Code Quality Series
   3.  Sitemap
Posts (49)  
   1.  Effective Bug Reports
   2.  Open Source Testing Tools for Java Applications
   3.  Exploring the craft of Software Testing
   4.  Testuff – The Test Management Tool for small and medium projects
   5.  Software Quality and Testing Podcasts
   6.  Explore the Testability aspect for Java Code
   7.  Software Requirements are Required Reading by project teams.
   8.  Trends in Static Analysis Tools and Code Quality Metrics
   9.  Trends in Static Analysis – ENERGY for better java code
   10.  Communicating the Value of Testing Throughout the Organization
   11.  Test 2008 – Software Testing Conference
   12.  My quest towards Code Quality Metrics
   13.  Tester Center from MSDN
   14.  CRAP4J for Java Code Quality
   15.  What Jar – Solution to NoClassDefFoundError
   16.  Non linear paths from Application Code
   17.  Software Testing – Is it a cost or an Investment for Stakeholders ?
   18.  Ability to identify the hot spots of release from Bug Database
   19.  The Life Cycle of a Bug – Different Stages in it.
   20.  Whitebox Testing – Is it really white ?
   21.  Bug in the BSNL Portal
   22.  Context driven information for Bug Reports
   23.  Use Cyclomatic Complexity to determine the Risk and Test Scenarios
   24.  An insight into Bugs in the Software Applications
   25.  Life Beyond Code
   26.  Hey Testers, Communicate the Value of Testing
   27.  The Role of Software Testing
   28.  The Bug Life Cycle Series
   29.  Non Reproducible Bugs – How to deal with them ?
   30.  Software Testing Courses and Certifications
   31.  Lessons to be Learned from the Bugs
   32.  Seven Habits of Effective programmers
   33.  Open Source Test Management Tools
   34.  Taking on “Testing Triangles – A classic excercise”
   35.  Role of a Tester – An interesting discussion with an upcoming tester.
   36.  JavaNCSS – A source code metrics suite for Java
   37.  Testing Magazines
   38.  Tester is not a Quality Police
   39.  KLOC – What does it mean to Software Testing
   40.  Is Counting a Bad Idea for Test Effort?
   41.  That’s expected behavior and Not a Bug
   42.  Testing World 2006
   43.  Applying Static Analysis for Software Testing
   44.  Static Analysis for Code Quality
   45.  Sorting it all Out – Blog on Technology by Michael
   46.  Chasing Bugs in Software Applications
   47.  Top Five Reasons on why we don’t have dedicated testers
   48.  Dealing with NonReproducible Issues – The James Bach way
   49.  Yet Another Blog on Software Testing

Page 1
Generated by: WP Archive-Sitemap Generator

Testuff – The Test Management Tool for small and medium projects


Almost an year ago, I have evaluated some low cost and open source Test Management Tools. Managing the Test Efforts & Test documentation is always an issue for small and medium companies.

The following were my requirements for Test Management Tool

  • Capture the Requirements
  • Design & Prepare Test Cases
  • Map Test Cases with Requirements
  • Link Bug reports with Test Case ID after the test execution
  • Test Execution Reports
  • Version Management for the Test Cases
  • Search Feature

Testuff comes with all the above features and some additional capabilities to record the test execution and link them with the issue tracker. It comes free for single user. Check out the testuff blog for more updates

Explore the Testability aspect for Java Code


The Testability Explorer is an open source project that lets you measure the testability of Java code. This is an interesting idea: a metric not of direct quality, or of testing, or of test coverage, but of ease of testing. Presumably code that is easy to test will get tested, and will therefore be of higher quality, other things being equal.

The following information over Testability Explorer is useful

My quest towards Code Quality Metrics


 

The term quality might mean different things to different people based on their context of operation and it’s tough to have universal definition for the same.My experiments with software development started over a decade ago & exploring the ways the helps to build & deliver good quality code.The quest towards Code Quality Metrics started with the above objectives.

The discussion around Useful Code Quality Metrics at Linkedin started two months ago. I am excited over the response around the internet to this thread & there are some excellent articles around subject.

In the recent past Agitar comes up with CRAP4J as a code quality metric by combining Cyclomatic Complexity and Code Coverage.

In the process, we do use Static Analysis and Dynamic Analysis to derive the above mentioned metrics. Some more good articles around Code Quality are here

I wish that the info around Code Quality is helpful for my blog readers

Happy Testing…

(more…)

CRAP4J for Java Code Quality


I have been talking about Code Quality through Static Analysis for a while here, here & here. The quality for any application development must begin from it’s gross roots and the Application Code is one of it’s starting point to begin with.Static Analysis techniques help us to identify some metrics over the application code base

  • Cyclomatic Complexity
  • Application Design & Dependency Metrics
  • Exception Handling
  • Infinite Loops
  • Dead Code
  • Performance Issues
  • Programming Language guidelines & best practices in their context

The above information will be useful and it’s easy to get the same via Test Framework with a single click.

Code Coverage along with a bunch of unit tests is one widely used technique to help regression testing for the dev & test teams.

Now it’s good to see that Agitar combines Code Coverage & Cyclomatic Complexity to derive risk metrics for Java Code Base. They call it as a code Change Risk Analyzer and Predictor (i.e. CRAP) for Java.

Though it’s a prototype and see how the industry receives the same, i see it as a good initiative on the code quality front and might be a metric going forward for white box testing.

Some useful links for CRAP4J

Update on Oct 23rd

Now we have a dedicated site for CRAP4J. This contains latest news, forum discussions and many more. I would say that this a good resource for Code Quality lovers & the good news is that they are designed to be open source tools.

Crap4j is a Java implementation of the CRAP (Change Risk Analysis and Predictions) software metric – a mildly offensive metric name to help protect you from truly offensive code.

The CRAP metric combines cyclomatic complexity and code coverage from automated tests (e.g. JUnit tests) to help you identify code that might be particularly difficult to understand, test, or maintain – the kind of code that makes developers say: “This is crap!” or, if they are stuck maintaining it, “Oh, crap!”.

The best way to learn more about CRAP and Crap4j is to check the various articles, newsgroups and blogs about them.

(more…)

What Jar – Solution to NoClassDefFoundError


As a Tester & Developer, it’s pretty common to see NoClassDefFoundError. It’s not that easy always to figureout the required jars for the application.

Whatjar comes with a lot of search capabilities to identify and download the required jars.

Whatjar is a high-performance, search engine written using Java and MySQL to index and search Java JAR contents. Its primary goal is to provide a tool to help the developer find the JAR file required when faced with a class not found exception. In addtion to act as searchable resource of open source java jars.

Whatjar is free, there is no cost to upload a jar or to search our existing database of JARS.


The Life Cycle of a Bug – Different Stages in it.


In this post, i will explore different stages of the Bug from it’s inception to closer. The Bug has been found and logged into the Bug Tracking System. It’s my fourth post in the Bug Life Cycle series.

  1. The Bug has been found and logged into the Bug Tracking System. It will be treated as New Bug in the System.
  2. The Bug will be assigned to the concerned Developer for a Resolution.
  3. The developer looks in to the possibilities of the resolution & takes a call on Resolution by fixing it or differing over the information provided.
  4. Tester validates the resolved issue in the build & checks for the regression scenarios over the fix.
  5. If the issue found fixed, then he choose to Close the issue else he / she will Re-open the same.
  6. The Cycle follows again for the re-opened issue till it gets closed.

Bug Life Cycle

It worth doing the following activities

  1. Capturing the required and re-usable info to the Bug Report at it’s each stage.
  2. Check for all the closed bugs of Severity 1 & 2 against final build for the release.

In the next post, I will share my thoughts on the useful metrics over the Bug Tracking Repository.

Happy Testing..

Open Source Test Management Tools


 

In this post, i will share my views & findings with Open Source Test Management Tools. Usage of tools in the Test Management is becoming the basic need & It will be tough to manage the activities associated there with out any support from the tools.

 

The commercial tools in this segment are costly and may not fit into upcoming organizations budget. So i have been looking at Open Source Test Management tools. In the last week, I have evaluated some open source test management tools.

 

The following are my requirements for Test Management Tool

  1. Capture the Requirements

  2. Design Test Cases

  3. Map Test Cases with Requirements

  4. Link Bug reports with Test Case ID after the test execution

  5. Test Execution Reports

  6. Version Management for the Test Cases

  7. Search Feature

The following tools are evaluated after the initial screening.

The above tools work with Apache, MySQL & PHP. Both the tools looks promising and the Test Link has some additional benefits in-terms of better reports and linking with popular issue trackers.

 

JavaNCSS – A source code metrics suite for Java


I have been working on Java Projects for quite some time and interested in exploring the source code metrics like size and complexity across project not specific to perticular package or class and looking after LOC (Line of Code) counters to capture some metrics of the source code.

Explored some tools and found that JavaNCSS is a good match for the context of sizing metrics on Java. JavaNCSS is a command line utility which measures some standard source code metrics for the Java programming language. The metrics are collected globally, for each class and/or for each function.

The following are some of the advantages that i have seen

  1. Support for Ant Tasks, so easy to integrate with build process
  2. Reports can be in Text, XML, HTML etc
  3. Support for Stylsheets and easy to get nice HTML reports
  4. Metrics at each level Package / Class / Method
  5. Cyclomatic Complexity Number
  6. List the number of packages / classes / functions / LOC counter at each level

 

Further Reading:

  1. JavaNCSS Home
  2. LOC Counters for C++ / Java on Joel Software Discussion group
  3. SLOC on Wikipedia

Twitter Updates

Recent Trackbacks

Google Search