Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Test automation tool/libraries/framework for C++ GUI desktop windows apps

unfortunatelly I have a GUI desktop application running on Windows and compiled using Borland C++ compiler. I know it's a very old technology, but that's the life. The company I work for have lots of free licences for QTP. But to be honest I don't like this tool and I want to change it with some open source alternative.

I have an experiance with automation Web services using Selenium, and some java swing applets. I created my tests based on Java/JUnit. I'm wondering if I can create some tests in Java to test my C++ application - that would be great. If that's not possible if I can use any C/C++ libraries to create my own test framework.

That shouldn't be unit tests. I want to create rather a suite of functional tests. I want to be able to localize objects like buttons, tables, cells, etc., perform action like clicking, changing focus, etc.

In addition I have access to source. But this is rather an old spaghetti code and I don't have much experiance with C++ apps.

What do you suggest?

like image 268
Robert Avatar asked May 12 '11 08:05

Robert


3 Answers

Open Source Tools

White is a .NET based UI automation tool that can automate win32 applications among others types. As long as the controls used in your app expose their content/behaviour using Windows' standard UIAutomation hooks then you should be able to use it to do what you need.

UIAutomation Verify is another CodePlex project that works with the same APIs to automate UIA compliant UIs.

Visual Studio

Finally if you have access to it then Visual Studio 2010 has scripted UI test functionality built in Premium/Ultimate editions - Coded UI Tests. This supports .NET, native and web applications with record/replay and scripting functionality.

like image 176
Simon Steele Avatar answered Nov 15 '22 14:11

Simon Steele


We use Sikuli and have been quite happy with it. It works outside of the various automation APIs so it handles non-standard UIs very well.

like image 30
Soo Wei Tan Avatar answered Nov 15 '22 16:11

Soo Wei Tan


I agree with Robert that QTP is sometimes not the best tool, especially when you want it to wait for the desktop application to finish its processing. QTP commands are not synchronous, meaning that QTP does not wait until the previous command finishes execution before moving to the next call. We had a lot of issues with this. We are now planning to write a c# dll that can do this for QTP and include that in our QTP programs to make QTP to dynamically wait until the Desktop application finishes its processing. Currently, to my knowledge, no such wait functionality is supported by QTP.

Also, coming back to the object recognition issue, We did have a lot of issue with this and took the alternative route of invoking commands using Mnemonics through keystrokes in QTP. As Simon has already mentioned, this could be due to non-exposure of the GUI elements. We did not have much control in this regard and so we did not investigate further on this.

like image 20
user2074621 Avatar answered Nov 15 '22 14:11

user2074621