About Venkat


Website: http://venkatreddy.in
Venkat has written 20 articles so far, you can find them below.


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

Open Source Testing Tools for Java Applications


Overview

Open Source testing tools are being used aggressively and there are many tools over the web for Java Applications. These tools are great asset to the development teams and provides many features / services over the quality of applications under development. We can use this as the starting point and focus more efforts on the uncovered areas for better quality.

It’s very important to know the context of development and the right tools for quick benefits. However, heavy usages of these tools lead to misleading data and metrics too. So think twice on what is required for the project and which tools might provide the required data / services.

Services Offered

The following services / features are offered from most of the open source tools

  • Continuous Integration for the builds
  • Unit Testing
  • Code Coverage
  • Source Code Metrics (like size, Complexity, design, dependency)
  • Static Analysis for various bug patterns
  • Test Automation
  • Performance Testing

List of Open Source Tools

Quick Benefits from Static Analysis

It’s very easy to integrate static analysis tool(s) with builds and there quick benefits. The following issues can be uncovered

  • Null Pointer Exceptions
  • Other un handled exceptions
  • Infinite Loops
  • Dead code
  • Compliance with Java Coding standards
  • Code Coverage data
  • Trends  / history on the above checks against previous builds
  • Validations against Java coding guidelines from Sun

The following Metrics can be captured

  • Source Code Metrics
  • Coverage Metrics
  • Dependencies with the Design
  • Code complexity metrics

The Resources listed below helps in implementing the same.

Exploring the craft of Software Testing



It’s been a while since i wrote any thing new on my blog. I would like to thank all the readers of my blog for keeping this live as of today. There were no posts for the last two years and still attracts good number of visitors. I have another blog called Tech Bytes and this just contains my reading list over technology and tools. The Tech Bytes now merged into this blog and will be keep the efforts only here. I have recently came to know that this blog has been listed in the MSDN Tester Center Community Blogs. It’s a great feeling to get listed there.

I am back to blogging and will be sharing my views regularly.I will be focusing on the craft of software testing, quality and development. Lot many things happened over the past two years. Quality is the buzz word now every where.

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

Trends in Static Analysis – ENERGY for better java code



I have come across yet another static analysis tool for Java programs. ENERGY is a free static analysis tool to measure code quality & presents overall status on the health of source code. Energy comes with a code quality metric by combining the bug patterns on the source code and rates it between 1 to 10.   The tool tries to identify the symptoms via static analysis and then publish a rating. How it works is an interesting insight.


Check the following video to learn more about the tool.

Video thumbnail. Click to play


Technorati Tags: , , ,

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…)

Tester Center from MSDN


The Microsoft Tester Center showcases the test discipline as an integral part of the application life cycle, describes test roles and responsibilities, and promotes the test investments required to deliver high-quality software.

Some cool stuff here are the videos & articles

At the Tester Center, our goal is to provide a community where software testers can share knowledge and learn from each other about testing, our day-to-day job functions, processes, the tools we use, and the various roles we play. As you look around the site, you’ll see videos, articles, blogs, and other information. With your participation this site could be the start of many a conversation in our Software Testing Discussion Forum, where you can join other test professionals to exchange experiences and knowledge. Additionally, questions you ask at the Software Testing Discussion Forum will help guide the type of content we look to create over time. I hope you participate in this community and share your unique insights into the profession of software testing.

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…)

Non linear paths from Application Code


The applications become complex as their code base increases. This has challenges for the testers to determine the nonlinear paths in the application.Most of the Static Analysis tools over the application code helps us to identify the cyclomatic complexity (nonlinear paths) at a method level. These might be helpful to validate those methods and to achieve good code coverage over the same.

But the Code coverage at a Unit Level may not be a big help since most of the end user scenarios won’t run after unit level paths. These paths is an integration of the above unit level paths.

Since the Testers focus on simulating the end user scenarios, it will be good to identify all the possible nonlinear paths around the application code base and capture the code coverage based on these paths.

You might want to go through some discussion around this on Linkedin Answers

In case you have similar experiences over white box testing drop me a mail at venkatreddyc@gmail.com

Happy Testing…

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..

12»

Twitter Updates

Recent Trackbacks

Google Search