【问题标题】:GUI Automation testing - Window handle questionsGUI 自动化测试 - 窗口句柄问题
【发布时间】:2010-09-06 07:55:57
【问题描述】:

我们公司目前正在为紧凑型框架应用程序编写一个 GUI 自动化测试工具。我们最初搜索了许多工具,但没有一个适合我们。

通过使用该工具,您可以记录测试用例并将它们组合到测试套件中。对于每个测试套件,都会生成一个应用程序,该应用程序会启动被测应用程序并模拟用户输入。

总的来说,该工具运行良好,但由于我们使用窗口句柄来模拟用户输入,所以您不能做很多事情。例如,我们不可能获得控件的名称(我们只获得标题)。

使用窗口句柄的另一个问题是检查更改。目前我们模拟一个控件的点击,根据结果我们知道应用程序是否已经进入下一步。

有没有其他(更简单)的方式来做这些事情(例如消息队列或其他任何东西)?

【问题讨论】:

    标签: ui-automation window-handles gui-testing


    【解决方案1】:

    如果自动化 GUI 测试工具了解编写应用程序的框架,它可以使用该信息来制作更好或更高级的脚本。 TestComplete 例如知道 Borland 的 VCL 和 WinForms。如果您测试使用 Windows Presentation Foundation 构建的应用程序,则会对此build in 提供高级支持。

    【讨论】:

      【解决方案2】:

      有趣的问题!我已经有一段时间没有做过任何低级(想想 Win32)Windows 编程了,但这就是我要做的。

      使用命名管道并让您的应用程序监听它。使用这个命名管道作为通信媒介,实现一个真正简单的协议,您可以在应用程序中查询给定其 HWND 的控件的名称,或您认为有用的其他内容。确保协议足够丰富,以便在您的应用程序和测试框架之间交换足够的信息。确保测试框架不会从应用程序中产生太多“特殊行为”,因为那样您就不会真正测试功能,而是测试您的测试框架。

      可能有更优雅和更酷的方法来实现它,但这是我脑海中的记忆,只使用简单的 Win32 API 调用。

      我们在工作中为我们的产品实施的另一种方法是在事件脚本中记录用户事件,例如鼠标点击和按键事件。这应该足够丰富,以便您可以让应用程序播放它,人为地将这些事件注入消息队列,并让它的行为方式与您第一次录制脚本时的行为方式相同。您基本上在回放脚本时模拟用户。

      除此之外,您还可以记录任何重要状态(用户文档、首选项、GUI 控件层次结构等),记录脚本时一次,回放时一次。这为您提供了两组可以比较的数据,以确保一切都保持不变。此解决方案为您提供了不易修改的测试(如果您的 GUI 更改,您必须重新记录),但提供了很棒的回归测试。

      (编辑:在 beta 测试期间,这也是一个很棒的 QA 工具,例如:只需让您的用户记录他们的操作,如果发生崩溃,您很有可能只需回放脚本即可轻松重现问题)

      祝你好运!

      卡尔

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

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

          Jamo Solutions (www.jamosolutions.com) 公司满足移动设备自动化测试的要求,包括 .net 紧凑型框架应用程序。

          【讨论】:

            【解决方案5】:

            使用NUnitForms。我已经成功地将它们用于单线程和多线程应用程序,您不必担心句柄和类似的东西

            这里有一些关于 NUnitForms 的文章值得一读

            NUnitForms and failed DragDrop registration - problem of MTA vs STA

            Compiled application exe GUI testing with NUnitForms

            【讨论】:

              猜你喜欢
              • 2021-01-01
              • 2010-12-05
              • 2020-11-29
              • 1970-01-01
              • 2010-09-21
              • 1970-01-01
              • 1970-01-01
              • 2016-08-23
              • 2011-07-21
              相关资源
              最近更新 更多