Product Reviews

Review: AQTest

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)
  Call Sys.Keys("Albert[Tab]Foo")

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.


comments powered by Disqus

Subscribe on YouTube