Software testing made easy and inexpensive.
All developers give lip service to testing. Fewer developers actually
do anything about it. This is a pity, because it's been shown many times
that testing applications before release is one of the best ways to stamp
out bugs. Ideally, you want a full regression suite of tests that will
exercise all the features of your application automatically, and let you
know which ones don't work as planned. Otherwise it is all too easy for
a fix in one part of the code to break something else in another area.
If you're one of the developers without a test suite, you might want
to take a look at AQTest (especially if you don't have a dedicated QA
team to pound on your products). Designed especially for Visual C++, Visual
Basic, Delphi, and C++ Builder applications, AQTest has an almost frightening
array of features designed to let you test your work in great detail.
Perhaps most interestingly, AQTest supports both internal and external
testing. That is to say, it lets you record (and then edit) test scripts
based solely on the behavior of the user interface -- this is external
testing, sometimes called black-box testing. But it can also (using a
single module that you link in to your code) test at the source code level
-- internal testing, or white-box testing.
I took AQTest for a spin on one of my own VB6 projects. Here's a tiny
portion of an external text script, just to give you the flavor of the
objects that AQTest uses in building scripts:
Set w = p.Window("ThunderRT6FormDC", "Connect to SQL Server")
Call w.Window("ThunderRT6ComboBox").Click("(local)") w.Window("ThunderRT6OptionButton",
"S&QL Server authentication").Click
Call w.Window("ThunderRT6TextBox", "", 2).Click(29, 6)
As you can see, it's pretty readable and easy to edit.
AQTest is entirely COM-based and extensible. An application can even
test itself by making appropriate calls back to AQTest. It supports VBScript,
DelphiScript, and JScript for scripting, depending on what you're testing.
All test results are saved to a log that you can use as a source for reports
about progress (or lack thereof). There's a built-in object browser that
lets you capture properties of pretty much anything you can see on screen
and include them in your tests. All in all, it's a pretty impressive package.
If there's anything wrong with AQTest, it's that it's just TOO flexible
(and the documentation, while making a valiant effort, doesn't make it
possible to grasp how it all fits together without investing substantial
time in learning the program). You should plan to spend as much time getting
to know AQTest as you would, say, a new IDE. Of course, there are a LOT
of testing applications out there that you can evaluate -- but if you're
working in one of the languages that AQTest directly supports, I'd say
it belongs on your short list.
And remember, the best time to start testing is at the start of a new
project -- you can kid yourself that you'll go back and write all the
tests later, but if you're like the rest of us, you'll never get around
to it. Fortunately, once you get used to the ways that it works, AQTest
makes writing tests incrementally almost easy. Put in the effort up front
and you'll be glad you did.
About the Author
Mike Gunderloy, MCSE, MCSD, MCDBA, is a former MCP columnist and the author of numerous development books.