UPDATE: this 2019 post from Joe Colantonio has a newer list of testing tools for Windows Desktop apps. WinAppDriver, Winium, and White Framework seem to be the best options.
- White (built atop the Microsoft UIAutomation library – free ($0): http://white.codeplex.com/ but roll your own test harness. This is a ThoughtWorks project, so pretty high quality. Some usage examples here: http://blog.benhall.me.uk/2008/02/project-white-automated-ui-testing.html
- Test Automation FX: http://www.testautomationfx.com/ – free ($0) and commercial versions (~ $300)
- TestComplete: http://smartbear.com/products/qa-tools/automated-testing/ – between $1000 and $4500 per license
- HP Quick Test Pro (QTP): http://www8.hp.com/uk/en/software/software-product.html?compURI=tcm:183-936981 – $$$ but does web testing also.
Since it’s been several years since I built any serious systems using WinForms or VC++/MFC, I cannot really comment on the effectiveness of any of these, but an ex-colleague of mine tells me that although TestComplete is okay (and good value for money), it has its problems: poor product support, and apparently it intermittently does “weird things” like “stuff just randomly stops working” (never a good sign).
It seems like using the Microsoft UIAutomation library (as White does) is the best bet at the moment; it’ll be interesting to see what comes out as WinRT becomes more adopted, as WinRT avoid many of the problems of the existing Win32 API, and therefore automating desktop applications should (I hope) become simpler and less error-prone (the current Window message-queue implementation is pretty long in the tooth).