11.11.2013

Combinatorial Test Design: Who needs it and what’s it good for?

Eitan Farchi
Editor’s note: This article is by Eitan Farchi, a senior technical staff member at IBM Research – Haifa, who specializes in software testing analysis and reviews.

With existing networks heading towards the limit of their capacity, the need for a new Internet architecture – sometimes referred to as the Future Internet – is becoming critical. Future Internet is the motivation driving breakthrough infrastructures, applications, and services that will make it possible to continue growing the Internet and lay the groundwork for new models we need to help business move forward – whether in the cloud, through more social applications, or via mobile.

But how do we develop applications for the Future Internet, and more importantly, how do we make sure these applications are reliable, secure, and work as intended?

FITTEST, a European project (2010-2013) aimed at developing an integrated environment for the automated and continuous testing of Future Internet applications was created to help solve this challenge. As partners in the project, IBM researchers in Haifa, Israel are contributing unique testing tools based on combinatorial test design (CTD), and using the project’s tools and techniques to test a simulation system for cloud management. 

What is CTD?

Testing applications or services is all about examining how the system will react under different scenarios. The difficult part is making sure you take into account all the different situations that could possibly arise. If you do more intuitive test planning, there’s always a chance you’ll forget a good number of scenarios due to the massive number of combinations that need to be considered. CTD helps testers systematically model the gamut of possible scenarios to be tested, and then works to optimize the number of tests so they cover these situations.

Say, for example, you want to test a banking application that allows users to carry out financial transactions on the Internet. These transactions need to be examined to make sure they transfer the right amount of money from the correct account, at the right time, to the right place. Beyond that, you would need to verify that the application works correctly even if the web site falls under cyber-attack, in which massive amounts of requests are sent at the same time and the system crashes because of the overload. This is a case where CTD can help make sure all possible scenarios are covered.

Aside from validating that testing is effective and of the highest quality, it’s essential that the effort involved does not become impractical. Another great benefit of CTD is its ability to dramatically reduce the amount of testing required. IBM researchers found that CTD has the potential to cut testing from an order of 10,000 hours to 100! In our work with a large European insurance company to test their Internet applications, it would have taken months to do the thousands of tests defined in their testing plan. Using our CTD methods and tool, we managed to reduce the plan to 30 tests – which were carried out in a matter of hours. 

How does it work?

A few years ago, our team decided it was time to tackle the challenges that plague the testing process. There were too many combinations to deal with and it was taking too long to test all of them. We wanted to control the risks we took by leaving out certain tests, yet be sure we covered all the important scenarios. The solution was to find a method that maximizes the value of each tested scenario so we could reduce the number of tests, while controlling the risk of leaving out important scenarios.

To balance the cost and risks, we first define a systematic testing plan that outlines all possible tests and then choose a subset of tests that cover all the interactions of variables at some level of interaction (pairs, three-way, etc.). We developed a CTD algorithm that identifies a small test plan that covers 100 percent of a given interaction level. The end result is what we call IBM FOCUS CTD - the IBM Functional Coverage Unified Solution.

As part of the FITTEST initiative, we contributed the IBM FOCUS CTD tool to help generate high quality, optimized test plans. IBM FOCUS is independent of an application's domain and can be applied at different levels of testing. It can also read existing tests, analyze their functional coverage, select a subset of the tests that maintains the same coverage, and generate new tests to close the coverage gaps.

What’s it good for?

CTD can help businesses carry out testing in all kinds of industries, whether banking, health insurance, retail — essentially, any business that involves a web service. CTD is especially effective in domains where the testing efforts require huge amounts of resources and are expected to cover large areas of complex business processes.

“I believe we’re seeing a new revolution in the area of testing. CTD bridges between formal methods for advanced software specification ... and the current state-of-the-practice in testing.”  
-- Eitan Farchi

CTD bridges between formal methods for advanced software specification—which is difficult for most people to use—and the current state-of-the-practice in testing. Our workshops and training sessions have shown that anyone can use this method, even people who are not programmers. We can teach people to use our tools within a few hours and start to model in just one business day.

The Future Internet will be a complex interconnection of services, applications, content, and media, offering a rich user experience beyond current hyperlink-based navigation. With society becoming increasingly dependent on these services for business, entertainment, government, and education, it’s vital that the applications running on top of the Future Internet meet strict standards for quality and reliability. IBM FOCUS CTD is one tool that is helping make this a reality.

If you're interested in finding out more about IBM FOCUS CTD, contact the author at farchi@il.ibm.com.

No comments:

Post a Comment