GUI 自动化测试 - 窗口句柄问题
-
09-06-2019 - |
题
我们公司目前正在为紧凑框架应用程序编写一个GUI自动化测试工具。我们最初搜索了很多工具,但没有一个适合我们。
通过使用该工具,您可以记录测试用例并将它们分组到测试套件中。对于每个测试套件都会生成一个应用程序,该应用程序启动被测应用程序并模拟用户输入。
一般来说,该工具工作正常,但当我们使用时 窗把手 对于模拟用户输入,你不能做很多事情。例如,我们不可能获得控件的名称(我们只能获得标题)。
使用窗口句柄的另一个问题是检查更改。目前,我们模拟对控件的单击,并根据结果我们知道应用程序是否已进入下一步。
是否有其他(更简单的)方法来执行此类操作(例如消息队列或其他任何方法)?
其他提示
有趣的问题!我已经有一段时间没有做过任何低级(比如 Win32)Windows 编程了,但这就是我会做的。
使用命名管道并让您的应用程序监听它。使用此命名管道作为通信介质,实现一个真正简单的协议,您可以通过该协议在给定 HWND 的情况下查询应用程序的控件名称,或者您认为有用的其他内容。确保协议足够丰富,以便应用程序和测试框架之间交换足够的信息。确保测试框架不会从应用程序中产生太多“特殊行为”,因为这样您就不会真正测试功能,而是测试您的测试框架。
可能有更优雅、更酷的方法来实现这一点,但这是我从头到尾记住的,仅使用简单的 Win32 API 调用。
我们在工作中为产品实现的另一种方法是在事件脚本中记录用户事件,例如鼠标单击和按键事件。这应该足够丰富,以便您可以让应用程序回放它,人为地将这些事件注入消息队列,并让它的行为与您第一次录制脚本时的行为相同。当您播放脚本时,您基本上是在模拟用户。
除此之外,您还可以记录任何重要状态(用户的文档、首选项、GUI 控件层次结构等),在录制脚本时记录一次,在回放脚本时记录一次。这为您提供了两组可以比较的数据,以确保一切都保持不变。该解决方案为您提供不易修改的测试(如果 GUI 发生更改,您必须重新记录),但提供了很棒的回归测试。
(编辑:这也是 Beta 测试期间一个很棒的 QA 工具,例如:只需让您的用户记录他们的操作,如果发生崩溃,您很有可能通过回放脚本轻松重现问题)
祝你好运!
卡尔
使用 NUnitForms. 。我在单线程和多线程应用程序中使用它们取得了巨大成功,您不必担心句柄和类似的东西
这里有一些关于 NUnitForms 的文章值得一读
我终于找到了一个在测试应用程序和被测应用程序之间进行通信的解决方案: 托管间谍. 。它基本上是一个构建在 ManagedSpyLib 之上的 .NET 应用程序。
ManagedSpyLib 允许以编程方式访问另一个进程的 Windows 窗体控件。为此,它使用 Window Hooks 和内存映射文件。
感谢所有帮助我找到此解决方案的人!
Managed Spy 不提供紧凑框架应用程序的解决方案。
Jamo Solutions 公司 (www.jamosolutions.com) 满足移动设备上的自动化测试要求,包括 .net 紧凑框架应用程序。