Testing and Development—Together Forever
Stories Columns Opinions Resources
Preflight builds spread wings for smoother projects
Developers are increasingly turning to preflight builds, allowing them to experiment with ...
|
Coverity creates program to enforce code adherence
The Architecture Analyzer uses mapping technology from the company's Software DNA static a...
|
QCon 2008 features domain-driven development
This year's QCon invites speakers like Eric Evans and Dan North to talk about domain-drive...
|
.NET similarities prove golden for Silverlight
Microsoft has focused on making Silverlight 2 symmetric with the .NET platform, and that h...
|
SOA Watch: New economic realities
In the current economic downturn, agile programming and SOA are attractive options that bu...
|
Integration Watch: A new twist on threads
The key to raising the efficiency of multiprocessors is to shrink the overall workload by ...
|
Integration Watch: The Return of NetRexx?
Java scripting languages are seeing a surge in popularity, with NetRexx looking particular...
|
Windows & .NET Watch: Transaction crowd gets a boost
With multicore chips becoming the standard for processors, the need for a flexible, usable...
|
From the Editors: Election should shake up JCP
Rod Johnson has the right ideas for opening up the Java Community Process, and he may be a...
|
Letters to the Editor: Sun gives REST, SOAP choice
A reader takes issue with a headline on our story about Sun working with REST along with S...
|
Guest View: Be smart and lazy
The optimal solution for problems is the simplest one, so always aim to streamline your ap...
|
Zeichick's Take: From EXEC to EXEC 2 to REXX to NetRexx
Andrew Binstock's column last week, "The Return of NetRexx," brought back some fond memori...
|
Advanced Corda CenterView™ Data Visualization for the BusinessObjects™ Intelligence Platform
Corda Technologies presents a white paper on pervasive BI. The BusinessObjects business in...
|
From Mobile to SOA: A Guide for Optimized Application Deployment
Customer need has driven the emergence of multiple computing tiers. Today’s application d...
|
e-Kit: Web Application Security
Is your network secure? What about your web applications.
If IT security is your top p...
|
Practical tips for saving money on code maintenance
If software design is expensive, well, code maintenance is even more so. When you look...
|
By Edward J. Correia
May 27, 2008 —
Software testing and development go hand in hand. The two are different disciplines, of course, and testing tasks are often performed well apart from those of development. But from the point of view of management, the two must go hand-in-hand to deliver a quality product.
“Some of the people in my experience believe that testing cycles can be completely separated from those of development, and can focus primarily on the features they think are important,” says Kiran Bhumana, a lead engineer developing enterprise integration products at Sun Microsystems. “They believe that testing can follow development or that any one feature can be more important than the quality of that feature.” While it’s true that feature-rich products win more deals, he says, it’s easily forgotten that product stability also plays a vital role.
“Stability may not get your foot in the door, but in markets where competition is stiff and features abundant,” quality is crucial to once you do, says Bhumana, who’s been developing software for eight years. What’s more, if quality does come into question, you may not get a second chance to prove yourself.
Like the development cycle itself, testing too should span requirements, design, development and integration. Here are a few ways to integrate testing within all the stages of development, provided by this developer at Sun.
Requirements
The development of test cases immediately after requirements can provide a good understanding of the application’s use cases. “A fact so well known as to become comic is the gaps between what the customer says, what the analyst understands and what the programmer develops.” The early development of test and use cases can help bridge those gaps when they can do the most good. “Test cases don’t even necessarily have to be from real-world scenarios. An empirical form of the real world data can do just as well,” Bhumana says.
Design
“The design phase of development is where there is least overlap with testing,” but there is some, Bhumana says. By further developing test cases during the design phase, testers can help developers get a better picture of how the software is to be used, which he says will ultimately lead to a better design.
Development
During the code-writing phase, the developer also should be writing corresponding unit tests to validate code as it’s built. “In cases where simple [unit] tests are not sufficient, appropriate testing needs to be done such that the functionality is not regressed as code progresses,” Bhumana says. For teams with many people contributing code, “we wouldn't want them to inadvertently regress each other's functionality.” Proven ways to avoid this problem include continuous integration, documentation and peer review.
Documents that describe development are helpful only when someone reads them. A better way to document the process is through test cases, which Bhumana says can yield double the benefit of documentation alone. “They offer more testing and overall code coverage, and also serve as a form of unwritten documentation. Once the tests are in place, no one in his right mind would change the code and commit those changes if the tests are failing from those changes.” Also, attempts to fix tests to compensate for changes in code will lead to the discovery of new usage scenarios and new test cases to match.
During the integration phase, what’s most needed are tests to prove that things work as designed or don't work as expected. “These tests are closest to the real-world scenario testing. In some scenarios, they may, in fact, overlap with what we may call ‘testing during the staging phase,’ ” Bhumana explains. But this is typically a test-only phase, he adds, and usually does not involve developers.
“From what I’ve seen as an enterprise application developer, the testing cycle plays a major role throughout any project cycle, and is an inseparable part of development,” Bhumana says. He adds, “The one stage during which they don't completely mesh is during design, but only if design is to be understood primarily as a development-cycle task,” which he says is how a good many developers see things. Conversely, the integration phase is often seen as a test-only domain.
Share this link: http://www.sdtimes.com/link/32241