用户界面 - 测试C++ GUI 桌面窗口应用的自动化工具/库/框架

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

本文关键字:自动化 工具 应用 框架 窗口 测试 C++ GUI 桌面 用户界面      更新时间:2023-10-16

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

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

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

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

你有什么建议?

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

开源工具

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

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

视觉工作室

最后,如果您有权访问它,那么Visual Studio 2010具有内置于高级版/旗舰版 - 编码的UI测试中的脚本UI测试功能。这支持具有记录/重播和脚本功能的 .NET、本机和 Web 应用程序。

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

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

另外,回到对象识别问题,我们确实有很多问题,并采取了另一种途径,即通过QTP中的击键使用助记符调用命令。正如 Simon 已经提到的,这可能是由于 GUI 元素未公开。我们在这方面没有太多控制权,所以我们没有对此进行进一步调查。