Dr. Dobb's is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them. Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.


Channels ▼
RSS

Tools

The Proof Is Out There


Surviving rigorous testing is one of the last major hurdles any serious software project must overcome to deliver a stable, trustworthy product. Methodologies may vary depending on an application's scope and intention, but many developers are unaware of the plethora of tools available to assist in this process. Fortunately, vendors and the open source community have created a range of solutions that operate within many development environments.

Software testing comprises several subclasses, commonly defined as unit, functional, performance, load, smoke and integration testing—but there are many others. For instance, Mock Client is a testing methodology for exploring the unpredictable ways customers might interact with the application. (See the interview with Ship It! authors Jared Richardson and William Gwaltney Jr. for more details.)

Most testing tool vendors focus on unit, functional, performance and load testing, as they're the easiest to automate into a build/test/debug cycle, with the first three frequently combined into a single offering. Testing can also be decoupled from the coding process via a centralized organization exclusively focused on software testing—a trend gaining popular acceptance in large enterprises with numerous ongoing application development projects, but one that runs contrary to the agile focus on developer testing via test-first programming.

Unit and Functional Testing
For the single developer responsible for the integrity of the source code he writes, unit tests are a way to ensure quality prior to checking work into a project repository. Future versions of popular IDEs may someday dynamically generate and execute unit tests on-the-fly with each new line of code written, but for now, most developers still need education and practice in writing effective unit test cases. Many commercial offerings are based on the open source JUnit for Java projects and NUnit for the .NET framework. Tools such as Parasoft's Jtest and .TEST (the company's .NET equivalent to its immensely popular Java-based testing tool) are especially helpful and usually integrate well with popular IDEs.

Functional testing determines whether or not the application behaves as intended. Do the GUI elements position themselves where they're supposed to? Does the application logic execute exactly the way the designer's UML sequence diagrams dictate it should? Tools such as Infragistics' TestAdvantage 2005 (designed to work with Mercury Interactive's WinRunner) can settle these and other GUI issues, and IBM/Rational's Functional Tester can answer questions about application logic flow. Often, these unit and functional testing tools extend their product's abilities to perform code analysis and formatting, link checking, regression testing, static analysis and test coverage.

Performance and Load Testing
Performance and load testing tools take the functionally approved application and iterate through its execution to identify bottlenecks in the code. These can be caused by inefficient algorithms, excessive external resource polling, slow network access and a host of other reasons. Rather than spending weeks hunting down the troublesome needle in the virtual haystack, performance testing tools can analyze any portion of an application's execution and locate the problem areas in a matter of hours, minutes or even seconds. The cost for such tools is inconsequential compared to the time saved by locating and abolishing the trouble spots. Load-testing tools complement performance analysis by simulating multiple application instances vying for resources such as database connections and queries, Web application server availability and transaction speed. Vendors such as IBM/Rational have distinct product offerings for functional versus performance testing, while others such as AutomatedQA's TestComplete combine these intentions into a single package.

Integrated Testing Suites

The growing practice of centralized testing within large IT enterprises depends on test experts who apply rigorous, repeatable methods to a wide array of software projects. Enterprise-class testing suites that integrate testing priorities, schedules and results provide stakeholders a view of the health of the development lifecycle. Integrated testing suites, such as Compuware's impressive QA Center and Segue's prioritization-ranking Silk Central Test Manager, aggregate and summarize test results into the grand production picture and offer report dashboards that can predict project failure or success. While their primary function is to roll up and report on the overall testing status of a project, most of these suites can execute the particular test in question by loading up the test parameters, targeting a selection of resources, running the test and reporting on the results. All that's missing is a human being to acknowledge the test results and decide on the level of perfection that qualifies as success.

Evaluation Criteria
Hundreds of testing tools are available, ranging from open source one-offs to polished commercial suites. The products in our guide are a diverse sample of the expansive selection of commercial testing tools available. Some are well-established, best-of-breed choices. Others offer innovative approaches to lifecycle management problems as old as development itself. An essential qualifier for inclusion is availability of the featured product's general release at press time. Hence, the testing features of Microsoft's Visual Studio 2005 Team System aren't included in this article.

Note that open source alternatives popularized by the success of JUnit and NUnit unit testing tools are detailed in a separate sidebar.

Why We Chose 'Em
The products weren't reviewed singly, but rather evaluated by vendor claims, market buzz and installation cost. The testing tools grid covers three classes of testing tools: unit and functional testing, performance and load testing, and integrated testing suites. The columns are the same for each class and contain the following categories:

Features and Claims focuses on the product's unique aspects and how it stands apart from similar solutions.

Market Buzz is a subjective analysis of the product's features and claims as they fare in the real world. This category is especially critical because of the wide range of choices available in the testing tool realm.

Cost is always a challenging category to assess, as most of the featured vendors don't advertise their products' prices on their websites. Whether due to total cost of ownership analysis or flux in the marketplace, costs listed (especially for the more expensive products) can often be negotiated based on volume and usage.

Software Development Podcasts
Starting with this guide, we're offering the Software Development Podcast, available for subscription in any RSS Reader or podcast-catching client, which features audio interviews with vendors, developers and authors who are subject-matter experts in the range of topics covered by the magazine. To subscribe, point your favorite RSS Reader or podcast-catching client to www.sdmagazine.com/podcasts/.

A Conversation with Jared and Bill
Tips for software success from seasoned development pros.

Jared Richardson and William Gwaltney Jr. are the authors of Ship It! A Practical Guide to Successful Software Projects (Pragmatic Bookshelf, 2005). In the book, the authors distill their years of experience into 43 concepts that have helped them survive and succeed.

Software Development: How long did it take to write the book?
WG: It took about a year and half—far, far longer than we actually thought it would. We figured we'd knock it out in about two months, but after two months we had practically nothing and wised up a bit.

Sounds like a typical software project.
WG: [chuckle] Exactly.

In the book, you go through the well-known types of testing: unit, functional, performance, load, integration and one you call mock client testing. Can you explain what that is?
JR:
With mock client testing, you try to write a user scenario in code so that the tests you have take the common cases that your customers will use the software for ... The goal is to cover common scenarios. The way you and your customers expect the product to run, to my way of thinking, are the most important code paths to cover. When you have a mock client test in place and you combine it with continuous integration ... your manual testers don't have to worry about the more boring scenarios. With a mock client test, you're covering what you expect your customers to do.

You recommend using "The List," which I interpreted as a sort of group prioritized to-do list.
WG: I've worked on projects that have had lots of developers and project managers who had copies of Microsoft Project ... and they walked around their cubicles with pretty big sheets of paper and Gantt charts and so forth. They were the only ones who could make any sense of it. The List is considerably slicker. The List is meant to be public, it's meant to be living, and it's meant to be simple so that anybody can walk into anybody's office and check the whiteboard or, if it's online, check the plogs [project management logs] ... and get a good idea what's going on with the project.
JR: And with the technical lead for each project, the tech lead keeps track of what's on the team member's list. The manager above the tech lead keeps track of what's on the individual tech lead's list ... everybody knows what's above them, everybody knows what's below them, and hopefully they actually understand the reasons for what's on their list.

—MR



Open Choices
A selection of OSS testing tools

As in so many other facets of software these days, the open source community has reconstructed many tools that were once proprietary. This list represents just a handful of some of the more popular open-source testing tools available today.

Cobertura (http://cobertura.sourceforge.net) is a popular Java code coverage tool based on jcoverage. Reports the lines and branch coverage statistics for classes and packages via HTML or XML formatted results.

HTMLUnit (http://htmlunit.sourceforge.net), HTTPUnit (http://httpunit.sourceforge.net), JUnit (http://junit.org), NUnit (http://nunit.org), MbUnit (http://mbunit.org) are various unit testing harnesses for specific frameworks: HTMLUnit and HTTPUnit for Web app testing and JUnit for Java, NUnit and MbUnit (built on NUnit) for .NET unit testing needs.

Mockrunner (http://mockrunner.sourceforge.net) extends the JUnit testing framework to cover JDBC, JMS and Struts-based applications as well as interface with its open source EJB testing counterpart, MockEJB.

OpenSTA (http://opensta.org) is an open, distributed testing architecture originally intended to be a commercial CORBA-centric testing suite called Cyrano. Provides HTTP stress testing, data collection of timers, SNMP stats, Windows Perfmon (Performance Monitor) stats and reporting.

Solex (http://solex.sourceforge.net) is an HTTP recorder and playback Web app testing tool for the Eclipse IDE. Particularly suited for dynamically altering requests, it also supports regular expression and XPath assertions to ensure response validity.

The Grinder (http://grinder.sourceforge.net) is a Java load-testing framework designed primarily for recording and testing HTTP services. The next release uses Jython to improve test script customization.

WebInject (http://www.webinject.org) is a Perl-based automated Web application tool for acceptance, functional and regression testing. Test cases are written in XML, with results provided in either HTML or XML format.

FIT: Framework for Integrated Test (http://fit.c2.com) provides a "requirements meets the testing process" experience. It's a unique HTML-centric "executable approach" to requirements management and value output validation.

—MR



Selected Commercial Software Testing Tools

Unit and Functional Testing Tools
The Product Features and Claims The Buzz The Cost
Mercury WinRunner Functional and regression testing tool for both Windows- and Java-based apps. Simple GUI point-and-click object testing interface provides insight into classes; analyzes both ActiveX and Java objects and methods. Supports a healthy market of third-party add-ons. Like TestDirector, WinRunner is the leading Windows app testing tool for large enterprises. A popular plus is its open, flexible API that allows third-party add-ons, such as Infragistics' Test-Advantage 2005, to prosper within its framework. Starts at $6,000
Parasoft Jtest, .TEST Automated unit testing tools for the Java and .NET environments. Jtest and .TEST autogenerate JUnit and NUnit tests respectively, providing hundreds of coding rules. Custom rules can be added. Complete code diagnostics, module and regression testing. Can generate test results as HTML and XML formatted reports. Parasoft's Jtest makes another appearance in the Software Development special guides due to its market dominance and solid performance in the Java functional and performance testing tools category. The company has further extended its mastery of application unit test generation and analysis to the .NET market with .TEST working within the Visual Studio .NET IDE. Jtest: $3,495 per license; .TEST: $1,795 for a single-user, machine-locked license
Rational Functional Tester Automated functional and regression GUI-centric testing tool for testing Java (via Eclipse), .NET (via VS .NET) and Web-based apps. Includes ScriptAssure for improved test script flexibility; ClearCase LT for version control. Optimally designed to test both Java and .NET apps using the same underlying technology for script execution, the Java-based version with its SWT library support within the Eclipse IDE suggests a more seamless fit than its .NET IDE counterpart. $4,120 per user
SilkTest Functional and regression testing tool includes support for Java, .NET, Web, Win32and MFC. Project testing workspaces quickly establish and share configurations.4Test object--based Visual Editor allows custom editing of recorded scripts. This tool's leading feature is its seamless integration into Segue's Test Manager system, making it an optimal functional and regression choice for Test Manager customers. Its broad platform support also benefits organizations supporting a diverse technology base. $6,495 + 18% annual maintenance
 
Performance and Load Testing Tools
The Product Features and Claims The Buzz The Cost
TestComplete Enterprise Offers systematic, automated and structured testing via its cornucopia of object-driven testing features, including CORBA, distributed, HTTP load testing. Can test .NET, Java, VB, Visual C++ and C++ Builder, Delphi and Web apps via TestRecorder, and has built-in support for VBScript, JScript, C++ Script, DelphiScript or C# Script. Reviewers and customers alike have praised version 3.0, increasing AutomatedQA's profile in the Windows-based testing tools market. The company's next major release, scheduled for Q3 2005, is expected to raise that level of awareness even higher. $800 per named user
Identify AppSight Captures everything from user- to code-level execution flow, identifying configuration, functional, performance and user errors through detailed analysis views. Supports both .NET and J2EE apps, providing full traces of .NET, VB, C++ and Java method calls. One of the most expensive entries, AppSight is also one of the most innovative, with its "black box approach to capturing every interaction that clients and servers execute within a testing scenario. The black box can run continuously with minimal impact to app performance, encouraging its use in actual production environments as well. Starts at $150,000 per site-wide deployment
OptimizeIt ServerTrace Monitors J2EE performance on numerous J2EE app server platforms. Features such as Quality Analyzer and Progress Tracker identify and monitor quality issues. Provides component performance views of all aspects of J2EE apps and service-oriented architectures. OptimizeIt is a strong contender in J2EE code analysis, unit and functional testing. Server-Trace extends Borland's mastery of application internals to the server environment via two editions: Test for development and Production for ongoing monitoring of app performance in a live environment. $5,000 per license
Rational Performance Tester Targeted for Web app scalability testing. Supports both Windows and Linux UIs with real-time reporting and distributed controller agents. Tests can be automated and customized with Java code and variable test data via "data pooling. Performance Tester provides testers with the familiar Rational tools interface and extensive real-time reporting facilities for identifying app bottlenecks and constraints. Its complete Linux support is particularly notable. $1,500 per user
Scapa Test and Performance Platform A combined tool and analysis service for diagnosis, load testing, integration, monitoring and test asset management. Tracks and identifies load-related functional failures. Particularly useful when source code is unavailable. U.K.--based Scapa Technologies isn't so much a technology-centric solution provider as a load analysis and consulting organization focused on improving software quality and app availability. Its combined software/service approach is emulated by Borland and IBM's new business strategies. $7,500/server for 1--4 servers; $1,000/server for100 servers; avg. installation costs $40,000--$50,000
       
Integrated Testing Suites
The Product Features and Claims The Buzz The Cost
Borland CoreTester The testing manager's interface to Borland's Software Delivery Platform. Features functional, regression and unit testing, performance and security analysis support. Includes interfaces for Emperix Mercury and Segue load testing tools. The test command console is ideally suited to organizations that subscribe to Borland's vision of the development lifecycle. It's designed forJ2EE app development environments, so .NET shops might look to Microsoft's upcoming Visual Studio 2005 Team System. $6,250 per seat
QACenter Enterprise Edition Comprehensive testing suite including QARun/TestPartner for automated functional and regression testing, Reconcile for requirements management, Track-Record for defect tracking and QADirector for overall test management. QACenter Enterprise already contains a stunning collection of testing products, and the upcoming 5.1 migrates QA Director from a Win32to a fully Web-enabled, zero-footprint app. 5.1 also sports direct integration between Reconcile and QADirector and lets third-party testing tools be managed by QACenter. $9,500 per concurrent user
Mercury TestDirector Web-based interface into every aspect of test management. Includes automatic traceability notification, graphical coverage analysis, hierarchical test sets and customized reporting. TestDirector's outstanding features and stable platform have gained respect and trust among those companies that can afford its hefty price tag. Starts at $3,000
Segue SilkCentral Test Manager Integrates requirements management, test planning and execution, issue management and reporting within a unified shell for an instant view of project testing health across a distributed development lifecycle. Windows-based server uses Microsoft SQL, MSDE or Oracle as its database back end. This Web-based test management system is at parity with other commercial test management systems, and excels with a better Web UI experience and a slick prioritization system that tracks test results and possible outcomes. $4,500 + 18% annual maintenance


Mike Riley is a Naperville, Illinois-based advanced computing professional specializing in emerging technologies and new development trends. Contact him at [email protected].


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.