GUI自动化测试-窗口句柄问题

3
我们公司目前正在编写一个GUI自动化测试工具,用于紧凑框架应用程序。我们最初搜索了许多工具,但没有一个适合我们。
使用该工具,您可以记录测试用例并将它们组合成测试套件。对于每个测试套件,都会生成一个应用程序,该应用程序启动被测试的应用程序并模拟用户输入。
总体上,该工具运行良好,但由于我们使用窗口句柄来模拟用户输入,因此您无法做很多事情。例如,我们无法获取控件的名称(我们只能获取标题)。
使用窗口句柄的另一个问题是检查更改。目前,我们模拟单击控件,根据结果判断应用程序是否已进入下一步。
是否有其他(更简单)的方法来完成这些操作(例如消息队列或其他任何东西)?
5个回答

2
有趣的问题!我已经有一段时间没有进行低级(考虑Win32)Windows编程了,但是这就是我会做的事情。
使用命名管道并让您的应用程序监听它。使用此命名管道作为通信媒介,实现一个真正简单的协议,通过该协议,您可以查询给定其HWND的控件的名称或其他您发现有用的东西。确保协议足够丰富,以便在您的应用程序和测试框架之间交换足够的信息。确保测试框架不会从应用程序中产生太多“特殊行为”,因为那么您实际上并不是在测试功能,而是在测试测试框架。
可能还有更优雅和更酷的方法来实现此目的,但这是我从头脑中记得的,仅使用简单的Win32 API调用。
另一种方法是我们在工作中为我们的产品实施的方法,即记录用户事件,例如鼠标点击和键盘事件,在事件脚本中。这应该足够丰富,以便您可以使应用程序播放它,将这些事件人为地注入消息队列,并使其在记录脚本时表现出相同的行为方式。当您播放脚本时,您基本上模拟了用户。
除此之外,您还可以记录任何重要状态(用户文档、首选项、GUI控件层次结构等),一次在记录脚本时,一次在播放脚本时。这为您提供了两组数据,您可以进行比较,以确保例如所有内容都保持不变。此解决方案为您提供了难以修改的测试(如果GUI更改,则必须重新记录),但提供了令人惊叹的回归测试。
(编辑:这也是一个非常好的QA工具,在beta测试期间,例如:让您的用户记录他们的操作,如果有崩溃,您很有可能通过只需播放脚本就能轻松重现问题)
祝你好运!
卡尔

1

1

如果自动化GUI测试工具了解应用程序所编写的框架,它可以利用这些信息来创建更好或更高级的脚本。例如TestComplete了解Borland的VCL和WinForms。如果您测试使用Windows Presentation Foundation构建的应用程序,则具有对此的高级支持内置


0

Managed Spy不能提供紧凑框架应用程序的解决方案。

Jamo Solutions公司(www.jamosolutions.com)符合在移动设备上进行自动化测试的要求,包括.net紧凑框架应用程序。


0
我终于找到了一种解决方案,可以在测试应用程序和被测试应用程序之间进行通信:Managed Spy。它基本上是一个建立在ManagedSpyLib之上的.NET应用程序。

ManagedSpyLib允许以编程方式访问另一个进程的Windows Forms控件。为此,它使用窗口挂钩和内存映射文件。

感谢所有帮助我找到这个解决方案的人!


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