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

8

很不幸,我有一个在Windows上运行并使用Borland C++编译器编译的GUI桌面应用程序。我知道这是一种非常古老的技术,但这就是现实。我所在的公司拥有许多免费的QTP许可证。但说实话,我不喜欢这个工具,我想换成一些开源替代品。

我有使用Selenium自动化Web服务和一些Java Swing小程序的经验。我基于Java/JUnit创建了我的测试。我想知道是否可以创建一些Java测试来测试我的C++应用程序 - 那会很好。如果不可能,我是否可以使用任何C/C++库来创建自己的测试框架。

这不应该是单元测试。我想创建一个功能测试套件。我希望能够定位对象,如按钮、表格、单元格等,并执行操作,例如点击、改变焦点等。

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

你有什么建议吗?

4个回答

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

+1:太棒了!!!我梦寐以求的工具终于出现了^^ MIT 做到了!!! - neuro
1
Sikuli看起来不错,但有两个问题:1)在我尝试查找对象或创建区域后,IDE最小化了,我什么也做不了。我做错了什么吗?2)第二个问题是我原本期望的是其他东西。我想编写测试而不是点击图形。我尝试将Sikuli与Java绑定,但文档在我看来很纯净,我不知道如何查找可编辑的文本字段,例如标签“用户名”旁边的按钮或带标签的按钮等等。使用Sikuli可以实现吗? - Robert Gonciarz

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 应用程序,并提供录制/回放和脚本编写功能。


我很快会寻找一个White/UIAutomation Verify。但是你能推荐一些Java库来测试C++应用程序吗? - Robert Gonciarz
@Robert 抱歉,我没有使用过或听说过任何基于Java的工具来测试Win32应用程序。 - Simon Steele
1
以下是使用White自动化Windows记事本的示例:https://github.com/slmoloch/Notepad.TestSuite - Yauheni Sivukha
1
我不再参与这个项目了,但我记得.NET/White/UI自动化完成了工作。我们有一些定制控件无法轻松自动化。在原始代码中需要一些hack。此外,我们必须模拟一些系统调用,以触发GUI中的某些操作。 - Robert Gonciarz

1

Robert,如果你的公司已经拥有QTP许可证,我建议你使用它。它是完成工作的正确工具,如果你的公司已经拥有它,那么没有必要重复造轮子。它有它的缺点 - 我主要反对的是受限的IDE和VBScript脚本语言 - 但它没有偶然成为市场领先的工具。对于测试Windows C++ GUI应用程序,没有太多开源选项。你应该考虑的主要商业选择是HP QTP、IBM Rational Functional Tester和VS2010 Coded UI Tests。


1
我同意Robert的观点,QTP有时并不是最好的工具,特别是当你希望它等待桌面应用程序完成其处理时。QTP命令不是同步的,这意味着在移动到下一个调用之前,QTP不会等待上一个命令执行完成。我们遇到了很多问题。我们现在计划编写一个c# dll,可以为QTP做到这一点,并将其包含在我们的QTP程序中,以使QTP动态等待桌面应用程序完成其处理。据我所知,目前QTP不支持此类等待功能。
另外,回到对象识别问题,我们确实遇到了很多问题,并采用了通过QTP中的助记符使用按键来调用命令的替代方法。正如Simon已经提到的那样,这可能是由于GUI元素未公开。在这方面,我们没有太多控制权,因此我们没有进一步调查。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接