【问题标题】:Image Recognition to drive test automation [closed]图像识别驱动测试自动化[关闭]
【发布时间】:2010-12-02 11:37:16
【问题描述】:

是否有任何工具使用图像识别(搜索、比较、验证图像)作为自动化和测试 GUI 软件的基础。我知道 ranorex 支持它。有没有更好的工具?在使用图像识别来推动测试自动化方面有什么陷阱吗?

【问题讨论】:

  • 明显的问题 - 代理机器设置之间的差异。如果您在 1280 分辨率上构建测试,但以 1150 分辨率播放,您将遇到问题。通常,您最好在 GUI 对象级别或 API 级别驱动自动化。我的经验是,将图像识别用于驾驶考试自动化只能作为最后的手段。
  • 我同意 RodKnee 和 Tom E 的观点。在 UI 测试中使用图像识别是非常痛苦和浪费时间的。如果您的应用程序构建正确,您可以将 UI 逻辑推送到更容易测试的应用程序的不同层。 MVP pattern 就是为此目的而创建的。可以通过 UI 完成的每个操作都在视图中的某处表示。通过这种方式,您可以完全剥离 UI,并且仍然使用剩余的架构 (M-V-C) 对您的应用程序进行单元测试。想法o

标签: wpf image testing automation image-recognition


【解决方案1】:

感谢您的评论!请看一下 RoutineBot——基于点击某些图像模式的界面测试软件,并亲自看看这个想法是如何在一个 自动化工具!

【讨论】:

  • 来自 RoutineBot 自己的常见问题解答:“如果您在脚本中使用图像模式,并且测试应用程序中某些按钮的原始外观发生了变化,那么脚本将无法正确执行。所以,在设计时你的脚本考虑到了这种可能性。这个问题有一些可能的解决方案:你可以使用 ClickButton 命令,它使用按钮的标题文本(而不是它的图像)。另一个解决方案是使用较小的图像模式,在这种情况下,出现的机会更少要改变的模式。” -- 就像我说的,图像识别应该被视为最后的手段。
【解决方案2】:

我也不鼓励使用带有 SendKeys 和单击坐标或(按钮图像)的图像识别来进行 UI 测试。我最近一直在使用 UI 自动化来成功地自动化 WPF 应用程序的测试。通过在整个应用程序的 XAML 中放置小面包屑 (Automation.AutomationID="OkButton"),我已经能够编写一些 C# 单元测试来练习应用程序的不同方面。即使没有面包屑,UI 自动化仍然能够运行应用程序,但在尝试识别 UI 上的控件时会稍微困难一些。

可以从 Code Project 上的一篇不错的文章开始。

http://www.codeproject.com/KB/WPF/UIAutomation.aspx

您还需要 UI Spy,这是 Microsoft 提供的免费工具,可帮助您找到控件并通过 UI 自动化手动执行控件,作为编写脚本的指导。该工具埋在 Windows Vista SDK 中,安装后搜索 UISpy.exe。只需将 EXE 复制到目标机器,UI Spy 工具仍然可以在 Windows XP 机器上运行。

【讨论】:

    【解决方案3】:

    考虑使用 AutoItScript 在测试场景中驱动基于 Windows 的 GUI - 并删除 UI。考虑 tesseract 开源光学字符识别。还有用于机器视觉的 OpenCV。

    免费 AutoItScript 在 API 级别工作,您可以读取各种 Widget 和 Windows 部分的状态,也可以向这些 UI 组件发送操作,等待状态更改等。可以生成高度可靠的自动化代码,确保专注于窗口和分辨率独立性。

    【讨论】:

      【解决方案4】:

      好的,首先,我确实理解前面的答案:使用图像识别测试应用程序并不是测试 GUI 的最佳方法。但是,与此同时,我不明白你为什么不首先回答这个问题。他正在寻求能够以这种方式工作的工具,我认为他足够聪明,能够理解他的目标。

      好的,现在是主要主题,我的选择包括:

      • Sikuli,一个基于 GNU-like MIT 许可的 MIT 项目。它使用 Python 而不是 Jython。免费。
      • TestPlant eggPlant,一个通过 VNC 服务器运行的工具,因此您可以在任何 VNC 兼容平台(包括智能手机)中测试应用程序。它有一些不错的功能,如 OCR、测试计划等。它使用 SenseTalk。不是免费的,您可以申请试用。
      • Routine Bot,我没用过,不过感觉挺好用的。

      【讨论】:

        【解决方案5】:

        老问题,但也许这个答案可能对某人有用。我目前正在使用两种产品,

        Automation Anywhere (http://www.automationanywhere.com/Testing/) 随时随地进行测试

        和 HP 的 Quick Test Professional (http://www8.hp.com/us/en/software-solutions/software.html?compURI=1172957#.UhJBwpLW5-k)

        它们都做得很好,并且都支持使用图像识别。我并不完全相信图像识别本身就是一件坏事。与所有事情一样,您必须根据自己的特定需求调整方法,并为工作使用正确的工具。

        【讨论】:

          【解决方案6】:

          只是想我会在这个线程中添加另一个条目。事情可能已经改变了,不确定,但是当我上次看到演示时,该产品提供了类似 Sikuli 的 IDE/接口/功能,同时作为商业产品并支持模拟器之外的实际设备。不知道该工具是否改进了现在可以通过图像以外的标识符来检测对象。

          查看http://experitest.com的测试

          【讨论】:

            【解决方案7】:

            让我建议另一种解决方案。
            它不是一个完整的 UI 自动化框架,而是一个专门用于图像验证的工具。
            它还允许您忽略图像的不稳定部分(随机数据等)
            它将与您选择的任何其他 UI 测试框架集成:Selenium、Sikuli 等。

            http://visualci.com

            【讨论】:

              猜你喜欢
              • 2011-05-06
              • 2011-07-21
              • 1970-01-01
              • 2012-09-09
              • 2018-12-29
              • 2019-07-05
              • 2010-09-18
              • 1970-01-01
              相关资源
              最近更新 更多