测试C ++ GUI桌面windows应用程序的自动化工具/库/框架

时间:2011-05-12 08:16:12

标签: c++ user-interface testing automation desktop

不幸的是,我在Windows上运行了一个GUI桌面应用程序,并使用Borland C ++编译器进行编译。我知道这是一项非常古老的技术,但这就是生活。我工作的公司有很多免费的QTP许可证。但说实话,我不喜欢这个工具,我想用一些开源替代方案来改变它。

我使用Selenium和一些java swing applet来体验自动化Web服务。 我基于Java / JUnit创建了测试。我想知道我是否可以在Java中创建一些测试来测试我的C ++应用程序 - 这会很棒。如果我不能使用任何C / C ++库来创建我自己的测试框架。

那不应该是单元测试。我想创建一套功能测试。 我希望能够本地化按钮,表格,单元格等对象,执行点击,更改焦点等操作。

另外我可以访问源代码。但这是一个旧的意大利面条代码,我对C ++应用程序没有多少经验。

你有什么建议?

4 个答案:

答案 0 :(得分:5)

开源工具

White是一个基于.NET的UI自动化工具,可以自动执行其他类型的win32应用程序。只要您的应用程序中使用的控件使用Windows的标准UIAutomation挂钩公开其内容/行为,那么您应该能够使用它来执行您所需的操作。

UIAutomation Verify是另一个CodePlex项目,它使用相同的API来自动化符合UIA的UI。

Visual Studio

最后,如果您有权访问它,那么Visual Studio 2010具有内置于Premium / Ultimate版本的脚本UI测试功能 - Coded UI Tests。这支持具有记录/重放和脚本功能的.NET,本机和Web应用程序。

答案 1 :(得分:5)

我们使用Sikuli并对此非常满意。它在各种自动化API之外工作,因此它可以很好地处理非标准UI。

答案 2 :(得分:1)

我同意Robert的看法,QTP有时候不是最好的工具,特别是当你希望它等待桌面应用程序完成处理时。 QTP命令不是同步的,这意味着QTP不会等到上一个命令完成执行,然后再转到下一个调用。我们遇到了很多问题。我们现在计划编写一个可以为QTP执行此操作的c#dll,并将其包含在我们的QTP程序中,以使QTP动态等待,直到Desktop应用程序完成其处理。目前,据我所知,QTP不支持这样的等待功能。

此外,回到对象识别问题,我们确实遇到了很多问题,并采用了通过QTP中的按键使用助记符来调用命令的替代路径。正如Simon已经提到的,这可能是由于GUI元素没有曝光。我们在这方面没有太多控制权,所以我们没有对此进行进一步调查。

答案 3 :(得分:0)

罗伯特,如果贵公司已经拥有QTP许可证,我建议你使用它。这是工作的正确工具,如果你的公司已经拥有它,那就没有意义重新发明轮子。它有它的瑕疵 - 我的主要反对意见是有限的IDE和VBScript脚本语言 - 但它并没有偶然成为市场领先的工具。没有很多用于测试Windows C ++ GUI应用程序的开源选项。您应该考虑的主要商业选项是HP QTP,IBM Rational Functional Tester和VS2010 Coded UI Tests。