Filed under Software Development, Software Metrics by Venkat Reddy Chintalapudi on October 20, 2009 at 6:20 am
2 comments
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.
Filed under Software Development, Software Metrics by Venkat Reddy Chintalapudi on October 4, 2007 at 2:49 pm
2 comments
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…
Filed under Software Metrics, Software Testing by Venkat Reddy Chintalapudi on September 24, 2007 at 1:15 pm
no comments
Bug Database for the products might have thousands of issues over a period of time against various builds and releases. Though these issues fixed over a period of time, it might be hard to derive meaningful metrics over the release.
We need to support these releases over the production systems & it might be helpful to capture the hot spots / risk elements with the release. Most of the issues here to deal with the respective features, compatibility with other features / technologies & performance related issues.
The usual metrics of number of issues against a module and their severity levels may not be of help always.
How easy is it to derive the following from the Bug Database for a given release
- Identify the issues have originated from Requirements, Design & Implementation
- Identify the issues over their category (Functional, Performance, Security, Compatibility, Usability etc)
- Identify the issues along with their origin & category over the features rather than the modules / components
(more…)
Filed under Software Testing by Venkat Reddy Chintalapudi on September 10, 2007 at 1:23 am
3 comments
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.
- The Bug has been found and logged into the Bug Tracking System. It will be treated as New Bug in the System.
- The Bug will be assigned to the concerned Developer for a Resolution.
- The developer looks in to the possibilities of the resolution & takes a call on Resolution by fixing it or differing over the information provided.
- Tester validates the resolved issue in the build & checks for the regression scenarios over the fix.
- If the issue found fixed, then he choose to Close the issue else he / she will Re-open the same.
- The Cycle follows again for the re-opened issue till it gets closed.

It worth doing the following activities
- Capturing the required and re-usable info to the Bug Report at it’s each stage.
- 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..
Filed under Software Testing by Venkat Reddy Chintalapudi on September 7, 2007 at 2:04 am
2 comments
The popular myths around Blackbox & Whitebox Testing are by it’s name. It’s black since we can’t see it (don’t have access to the code) & it’s white since you have access to all the code. But then, With in the code there are many black boxes inside and it’s tough to have access to that code base.
- We don’t have access to code of a language API. Most of the applications have been built on top of a API & assume that the API works fine
- Most of the application do integrate some third party tools over it’s API. We don’t have access to that code base.
- We don’t have access to the code of Compiler
- We don’t have access to code of rum time engine that executes our application code
- We don’t have access to the code of Operating System Services on top of which the application runs
The list goes on and there are many black boxes in side our code too. We are just testing the code written for the application and it’s better to call it as Code Based Testing rather than Whitebox Testing
– Happy Testing..
Filed under Software Development, Software Testing by Venkat Reddy Chintalapudi on August 10, 2007 at 5:36 pm
5 comments
Today, i have come across an interesting issue with BSNL Portal. I have been using this site for online billing and payments for about an year.
Followed the usual steps and my objective is too see the bill and pay it online. To my surprise, the system says

This error message ” Invalid object name ‘RECEIPT_MASTER’ “ is strange and there is no information for me on how do i proceed further. The application might be unable to get the specified object from the Database.
In case if this happens on the last day of the payment, on line users are liable for late payment charges due to this issue.
Users are familiar with the messages like, Unable to process the information as of now & please check back after some time.
The error messages must be meaningful to the business users and we need to make sure that the technology related terms / phrases are not part of the same.
Happy Testing…
Filed under Software Testing by Venkat Reddy Chintalapudi on July 26, 2007 at 2:02 am
one comment
Context driven information is the need of the hour and there is a huge value associated with the same. It’s good to capture the context driven information in the bug reports. My initial experiences with bug reports way back in early 2000 have taught many lessons to improve upon.
Bug reports used to capture what is the problem with the system familiar to the user (tester) who reported the same. People spend very less time to capture all the details required and there are many reasons for the same. I hope some of the upcoming testers will also be in the similar situations.
Some of the Reasons people quote here
- We need to test more and less time to capture & write more information in the Bug Reports
- It’s tough to capture all the information required
- System is complex & It’s tough for the novice users to understand the bug reports
- You know capturing all the info is process driven & it may not be worth of efforts
- It some times boring activity to collate the info & push it
- I can reproduce it on my machine if developer needs it.
This list can go on…
I hope you have come across this situation at least once in your career.
This is my third post in the Bug Life Cycle Series and it’s good to know the different users of your Bugs and their context with them. The mission of your bug report is to provide details and context of the problem and convey the importance of it with a user driven stories.
Your bug report must be the voice of customer and it need play the role of an advocate against the problem. Bug Advocacy from Cem Kaner is an excellent source to begin with. If the bug report unable to specify the need of the context, then it’s better not to write any report
It’s good to explore & capture some of the following problems
- Productivity
- Performance
- Usability
- Migration
- Stability etc
Try to link your issues with most suited functions listed above. It may not be obvious to other users in the system to explore & analyze the issues in that fashion.
There is another context associated with Bug Reports. That’s with the stake holders of the project. The Bug Tracking system must give the right trends and identify the hot spots. Testers must capture the right kind of data to derive better valuable metrics over the bug repository.
Care must be taken to capture
- Capture all the Test Environment details
- Detailed classification on the feature. Classify to the maximum possible sub feature/component of the system
- Clarity on Severity & Priority
- Versions and Build Numbers (Affected & Fixed)
- Bug Classification (Requirements / Design / Implementation etc)
- Bug Types (Functional, Performance, Usability, Security etc)
- It can go on…
The above info helps a lot to identify the trends in bugs and focus on the unstable components / environments.
Final Thoughts
Push the entire context driven information to the bug repository at least for a release cycle and observe the results. Check back with your repository to identify the trends and risk associated with the release and I am sure that it will be in the similar lines of end user feedback.
Happy Testing…
Filed under Software Development, Software Metrics by Venkat Reddy Chintalapudi on July 19, 2007 at 12:33 am
one comment
Cyclomatic Complexity (CC) is a software metric (mostly code based metric) used to the number of independent path executions in the application. Introduced by Thomas McCabe in 1976, it measures the number of linearly-independent paths through a program module.
It helps the developers to determine the independent path executions and base line unit tests that they need to validate. Using this, the developers can assure that all the paths have been tested atleast once. It’s a great comfort for the developer and their respective managers.
It’s better to write JUnit Tests for all these linearly-independent paths and integrate it with any code coverage tool. These reports help to focus more on the un covered paths and improve the code coverage.
It also helps to evaluate the risk associated with the application. The following are the results published by SEI and they are being followed widely to determine the health of the code base.
Cyclomatic Complexity Risk Evaluation
1-10 A simple program, without much risk
11-20 More complex, moderate risk
21-50 Complex, high risk program
Greater than 50 Un testable program (very high risk)
Explore more at Cyclomatic Complexity in Software Technology Roadmap from SEI.
Further Reading on the topic
Use metrics to evaluate the risk early in the cycle & improve your test coverage.
Happy Testting …
(more…)
Filed under Software Testing by Venkat Reddy Chintalapudi on July 6, 2007 at 6:38 pm
6 comments
Abstract:
Bugs are there every where in the software applications. Almost every one who uses software applications for their day to day activities; do come across different kind of problems while working with them. Each of these problems has different meanings to different people on it. There are many instances where in which, we (as end users of the system) do feel that how come they missed this bug, it’s very important in this context (The context where in which the user operates).
Tester deals with Bugs every day and its good know about other people get affected with them. The list includes Customers, Stake Holders, Sales, Professional Services, Technical Support, Architecture & the Development team.
This is my second post in the Bug Life Cycle Series. Before going more into the Bugs and their life cycle, it’s good to know, what it means to different people across the software application. Based on the contexts, the same bug might mean different things to different people. Do go through Role of Software Testing to understand my mission about Software Testing.
Wikipedia defines Software Bug as the following
A software bug (or “bug”) is an error, flaw, mistake, failure, or fault in a computer program that prevents it from behaving as intended (e.g., producing an incorrect result). Most bugs arise from mistakes and errors made by people in either a program’s source code or its design, and a few are caused by compilers producing incorrect code. A program that contains a large number of bugs, and/or bugs that seriously interfere with its functionality, is said to be buggy. Reports detailing bugs in a program are commonly known as bug reports, fault reports, problem reports, trouble reports, change requests, and so forth.
Tester Perspective
Any deviation from the expected results of the test case will be treated as a bug in the software application.
Customer Perspective
Customer uses the software application to solve his business needs. Any problem while modeling a solution to the business need will be considered as a bug in the software applications. These problems can be classified into two. They are the list of problems that they can live with and the other is the list of problems that need to be addressed to solve the business need.
The second list of problems will be sent to the vendors of the application for the fix. Some times, customer sends only the show stopper problems for his business. It’s true in the fact that as an end user, I will contact the vendor only if the problem is critical for me.
Technical Support Perspective
The Support Team classifies (though it’s critical) the customer requests into New Features, Enhancement, Bug, How to & Enquiries etc with respective severity levels. The decision will be taken by validating the problem with the features in the product.
Developer Perspective
The feature is designed this way and all the cases have passed. The end user might be using some other scenario. Yes, Some times there are bugs in my code. But it functions well if we use the way the application has built.
Management Perspective
Any problem with the application will be treated as Bug if it has impact over the revenue and customer satisfaction.
Final Thoughts
It’s tough to have same perspective across all the people (might happen in an ideal world). The bug for some one may not be the bug for the other person. However there are some set of show stopper bugs for which, the perspective will be the same.
Filed under Software Testing by Venkat Reddy Chintalapudi on June 15, 2007 at 1:20 am
7 comments
It’s almost a month since my last post on this blog and busy with my upcoming release of QuickRules BRMS. I have been talking to the people around on the Software Testing and felt that it’s not communicated well. Though there is enough information on this subject, i would like to describe my own version of the same here.
Testing is about making things better by providing constructive criticism based on the context (we can also say qualitative information and not being nice) at the right time and in the right direction too.
I like the phrase, “Testers, you are the headlights of the project” from the book Lessons Learned in Software Testing.
I have been thinking about this concept helped for the individuals. This revealed lot of crucial information and i hope this helps my fellow testers to motivate them & their teams.
There are many real life testers (incase if we need to list all of them) who contributed & still contributing a lot for us in every phase of life to grow and improve upon (fix the imp bugs among ourselves).Let’s explore some of them below.
My Parents are the first testers in my life. They contributed invaluable information at each stage (Milestone release) of my life. Instead of saying “Sshhhhhh you can’t do that, they used to tell me further implications that might arise”. An insight into this tells us that it’s not an order, but there is context based information for informed decisions.This helped me to stop for a while, analyze the information and work on the required steps to improve upon the current state.
My teachers helped me a lot by providing the constant feedback (just not being nice) through assignments, tests and covey the areas which are good and bad for me in the respective subjects. They are the best testers because they are the ones who taught the concepts and observed my execution towards the same.
There is a tremendous scope for the improvement, incase if we have acted upon the feedback at the right times.
My Boss at work used to evaluate (Test the Tester) me & provide the feedback on the tasks performed by me. This information helps to analyze to identify the next set of steps to be taken for the improvement.
If we look back, there are many testers around us providing the qualitative information to make things better and improve upon.
The Value of this information is tremendous since it came from people who are more experienced and passed through the current stage where we stand. The value lies in the fact that most of the successful people around, learnt a lot from others (learn from others mistakes too rather than your own) and they have become experts in their own fields.
How does this helps Software Testing
Software testing too comes under the similar lines and its role is to provide context driven information for the stake holders to make informed decisions over the application under test (AUT).
So as being testers, we need to provide the constructive criticism at each stage of the Development. If we look back at the above scenarios, the value addition is more because the people involved there have better skills over the context.
That being said, the current industry lacks skilled testers. The true value addition in Software Testing will be more, if and only if the people involved there have better skills over the context they working with.
Do share your views here or send them to me at venkatreddyc@gmail.com
Happy Testing…