Friday, March 26, 2010

A Guide to Software Test Tools

Whether you are buying or making software, test tools help you get the most from your investment. A useful test tool gives you far more than efficiency; it will help you avoid trouble, provide vital information, and can enable your organization to take new opportunities with greater agility and strength.

Testing a system well is harder than building it. In the face of new risks introduced by the ever-increasing complexity of software and hardware, test tools may be your only practical way to be confident that you've got just what you paid for. From gathering the initial requirements to supporting the system after it has been deployed, test tools are available to support all phases of a project. This article looks at the ways that test tools can be used to design, code, and (of course) test a system.

Tool Vendors and the Test Tool Market

A handful of large vendors dominate the enterprise test tool market, offering integrated tool suites around a core product, and supporting the full project life cycle on a range of platforms. However, many users swear by tools from smaller vendors who offer a single tool, concentrate on one aspect of a project, or specialize in a particular industry, region, or technology.

The best-recognised, and perhaps most numerous tools, are test automation tools. These tools allow a machine to take charge of running a predetermined test, allowing those known tests to be executed quickly, accurately, and repeated as desired. Although clearly powerful, test automation tools have historically had a mixed reputation amongst practitioners—but have become more favoured as their technology, and their usage, has become more sophisticated.

However, the market supports a wide range of tools that may give you greater bang for your buck, some integrated with test automation, and some offering an entirely different way to address the quality of your system. Buyers who ignore these tools may be missing the opportunity to make the most of their investment.

Test Automation Tools—a General Description

Test automation tools fall into three broad categories; unit test tools, capture-replay tools, and load test tools. Each is described in the sections below. However, all test automation tools are built on the same basis. All use detailed scripts to describe tests and a set of expected results—and while the construction of these scripts may be hidden from the tester, they nevertheless introduce software engineering complexities. Trying to simulate manual tests—in particular working with point-and-click interfaces—introduces further complications.

Most tools incorporate functionality that helps to deal with this – from providing a fully-fledged development environment to recognizing objects in a GUI. Some tools allow skilled testers to leverage the tool's abilities with sophisticated scripting techniques. However, if used simply to mirror manual testing, test automation tools may help to confirm existing value, but are unlikely to highlight new risks.

Automated testing can produce unwieldy amounts of raw information; many tools provide functionality to process this into a more palatable form.

Tools Used while Designing a System

Design tools allow fundamental information about the plans for a system to be captured and shared, and are typically set up and used most intensely in the early stages of a project. Early consideration of testing can pay great dividends later in the project, and many design tools are built with testing in mind.

Requirements capture and analysis tools allow requirements to be shared across the whole team and controlled throughout the life of a project by creating a central repository and archive. They often allow requirements to be linked to documentation, code, and tests. Requirements management tools may be stand-alone, or part of a larger document management system. Complex tools may incorporate sophisticated natural-language parsing and validation, while simpler tools more closely resemble list managers.

Visual modeling tools allow system architects and designers to make models of the system and to visualize those models in a variety of ways. Formal diagrams may be used to create models that can be converted into code structures, tests, and data schemas.

Tools Used while Coding a System

Test tools used during coding are generally closely linked to the structure of the code. They are often called "white-box" or "clear-box" tools—a reference to their need to have visibility of the workings of the system. Many tools can be integrated with the build environment, running automatically in the background. These tools do their work on individual pieces of code, rather than integrated and configured systems, and tend to be specific to a particular language or technology.

Static test tools examine written code—but do not run it. They are an effective way of spotting a wide range of faults, which may be difficult to diagnose or reproduce reliably at later stages. Tests are based on coding standards and expected faults rather than any direct linkage to the functionality or requirements of the system, and will need to be adjusted to fit working practices. Some static test tools also provide functionality to help developers visualize code structure, measure complexity, and show the way that programs and data are interlinked.

No comments:

Post a Comment