February 20, 2005

Looking for info on Automated Functional Testing Tools

I am currently in the process of looking at the idea of building a more robust automated functional testing suite to go along with our formal test plan, and have come to the realization that there are a LOT of tools out there. I am hoping some of my readers may have some insight into the tools that they use on a regular basis.

Right now I am looking at Mercury Interactive's QuickTest Professional, but having no luck in finding out how much it costs for the tool with the .NET Winform plugin. It doesn't bode well for the cost when they don't wish to openly publish it. As a small ISV I need a cost-effective solution that doesn't hurt the pocket book, but doesn't kill my QA guys either.

Here is what I THINK I need in a functional testing tool:

  • Easy Visual IDE to build test scripts without much programming knowledge
  • Supports Winforms (.NET 1.1)
  • Automated runs using cmd line tools
  • Works on W2KSP4, XPSP2, Srv03
  • Light weight tool... no bulky installs
  • Support custom actions etc (VBscript/VB fine)
  • Good documented support and support forums
  • Some sort of automated notification of success or failure of an automated test session (ie: Email)
  • Affordable to the small ISV.

I envision the ability for a QA guy to be able to visually point and click common functional tasks and record how a feature should work, and have the tool convert that into the test script. Then this script can be checked in to Subversion under a special QA tree for either "Daily" or "Weekly" runs. The Daily scripts would be for critical show stopper type functional tests, where as the Weekly scripts would include the Daily scripts and non-critical scripts that we build. Then by automatically checking out the scripts from SVN onto a test machine in the Lab... the environment should be able to run the tests immediately as desired.

The process would also allow us to repro bugs reported to the triage area of our Defect Tracking System (FogBugz) and then allow us to maintain regression tests against the known failed behaviour and ensure it gets fixed... and stay fixed.

All sounds simple enough... but I am unsure what is the right tool for this job. Anyone have any insight? Anyone know what the test framework is that Microsoft uses with Maddog? Anyone have a documented process they may have blogged about that includes this information?

Please feel free to comment here, or send me an email to dana@vulscan.com. Would love to hear your feedback!

Posted by SilverStr at February 20, 2005 09:48 AM | TrackBack
Comments

Dana, I think you should give a look here : http://www.automatedqa.com/ this guys ahve developed several products, one of which has the majority of the features you'v ebeen askign for (TestComplete).

Hope this helps :)

MASAN

Posted by: Mario at February 21, 2005 06:35 AM

About 18 months ago I looked into some functional testing software. There were a couple of ones that look really appealing, did anything related to Win32, GUI, Web Services, etc.

I called up Mercury Interactive to get some information on WinRunner, but it's $7000 USD per developer. When they heard I was only looking for a couple of licenses and not 10+, they started giving me the runaround and stopped calling me.

Anyways, that was my experience :-)

Posted by: Wim at February 22, 2005 08:14 PM

Hi Dana,

I'm a one-man QA show at my company, and I have some experience with QuickTest as it's our primary testing tool. I very much desire the same sort of features that you have, and QuickTest is _sometimes_ good at them.

Going point-by-point:

- QuickTest's IDE is fine.
- No experience with Winforms (we're a web app shop)
- Automated runs are possible using the Windows Script Host. One of the first things you will want to do is dump the crappy batch job runner that comes with it. I have 150 lines of JScript that are WAY more reliable.
- OS compatibility is sticky. Mercury uses an Activation-based approach for their software, so you'll have to activate each install. To get it to run on a Windows Server-family system, you'll need to purchase the concurrent licensing scheme (we were quoted $10,000 CDN per user for that... single user was $6,000 CDN per seat). We tried to use our seat license over remote desktop (only one user) but the Mercury licensing prevented this entirely (and we had to call in for a reactivation).
- QuickTest tries to be all things to all people. It's definitely not "lightweight".
- Custom actions are in VBScript. This sounds ok and is easy to start non-programmers on, but becomes really, really annoying once the users learn how to code.
- Documentation is OK. The Mercury forums and telephone support are really hit-and-miss.
- No built in automated notifications. They want you to buy Test Director (~$10,000) to do this. We're writing a Web Service based custom reporting system that's substantially cheaper (and also not dependent on Mercury software).
- I noted pricing above. It was $6,000 CDN with just the default plug-ins for our single seat.

A few other things you should know about:
- Working in Subversion is difficult. QuickTest scripts are actually entire directories full of files. Some are text (like the VBScript commands), but most are binary. The text is useless without the corresponding binaries.
- QuickTest puts a mapping layer between your app and your test scripts. This is convenient when the name of a control changes... you simply update the mapping and all is well. Unfortunately, the mapping is stored in a proprietary binary format. Furthermore, the tool for managing it has no way to add controls after the first recording session. This leads to the entire mapping being dumped and re-recorded frequently, which breaks things regularly. We dumped the mapping component entirely and wrote code generators to look at HTML and generate interface classes (that talk to QuickTest). I have seen other shops write a custom mapping layer, or simply do without and hard-code control names and properties.
- Recorded QuickTest scripts are really brittle. Small changes to the application frequently breaks them in ways that require re-recording.
- Recording is a terrible way to QA, in my opinion. The app must be in a known-good state before it can be recorded. This prevents writing the test scripts before the app is ready. Worse, bugs that go unnoticed during recording become part of the script and get "passed" by the automated tests in future test cycles.
- QuickTest stores each "action" as a separate set of files in its own directory, and has reimplemented parameter passing between them. This is a nightmare to debug.

Overall, I'm not enormously impressed by QuickTest. Its core feature, interacting with the Application Under Test, works very well, but it's a "high maintenance" solution. In the long run, we will probably be moving to a script-first (ie: non-recorded) open source tool like WATIR or Selenium as these mature. Already WATIR outperforms QuickTest in many areas.

Your mileage may vary. I'd be happy to discuss further with you if you like - please contact me through my email / blog.

Posted by: Alf Whitehead at February 26, 2005 03:14 PM

Thanks for the input guys. Loved the deep insight Alf.

It looks like I am going to try TestComplete from from Automated QA. It is very affordable at $795 per user and seems to have no addition fees for the standalone 'runner' through something called TestExecute. This means I can run TestExecute on the test boxes and only have to buy a copy of TestComplete for each QA guy. Whats also nice is apparently you can ship TestExecute to a client site. That way... if there is a problem you COULD ship a test suite to run it on the production system and see what is failing and why.

I sent an email to confirm the pricing... but if its correct I think this might just be a winner. Will keep you posted once I start more seriously looking into testing it.

Posted by: SilverStr at February 26, 2005 03:52 PM