Software Quality and Testing Podcasts


Podcasts are useful resources for testing community. These are free mp3 files you can download and listen to at your convenience. It contains various topics on Software Testing, Quality, & Development. I would like to share some of the podcasts that i follow for my blog readers.

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

Software Requirements are Required Reading by project teams.


I have always challenges with the Software Requirements for the products and would be the same for others too. Most of the time, the requirements talk about just the functional needs and ignore on the non functional aspects of the system. Once the requirements are freezed, we rarely go back to them for any updates required. The development teams always have implementation issues and the behavior changes from the drafted requirements.


Jonathan Erickson, Editor in Chief for DDJ talks about requirements in Software Development projects. It’s interesting article on Requirements & Check this out here – Dr. Dobb’s | Requirements Are Required Reading | May 7, 2008

This leads to more challenges to the testers as we go by the drafted requirements into the documents. The understanding on the non functional needs differs from dev teams to test teams. So, tt’s quite common to receive comments like That’s expected behavior and Not a Bug
from dev teams.

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.


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…

Software Testing – Is it a cost or an Investment for Stakeholders ?


Software Testing is considered as a Cost for some Stakeholders & an Investment for others in their context of operation. It’s good to know the status in your context. I had this query in LinkedIn Answers & thought of sharing the good discussion to my blog readers.

Do you consider Software Testing as an Investment or a Cost in your Context ?

Bug in the BSNL Portal


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…

Use Cyclomatic Complexity to determine the Risk and Test Scenarios


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

12»

Twitter Updates

Recent Trackbacks

Google Search