【问题标题】:QTP / Dynamic Great Plains automationQTP / 动态大平原自动化
【发布时间】:2012-02-15 05:32:17
【问题描述】:

我最近完成了一项关于使用 QTP、TestComplete 和其他 GUI 识别/交互工具实现 GP 功能测试自动化可能性的详细调查。 简而言之,没有一个工具表现良好。上面提到的效果最好,但在录制的示例脚本中仍然有很多硬编码。不过,QTP 的表现要好得多。

某些 GUI 在 .NET(QTP 中的 swf...)下被识别并且处理得很好。其他一些仅被识别为 swfObject,但访问本机方法和属性允许执行所需的交互。

最后,内部命名为“Microsoft.Dexterity.Shell.DexDialogHost”的对象会渲染似乎没有 Windows 句柄的对象,因此 QTP 无法识别。我还没有找到有关这些对象系列的任何详细文档(例如查找方法名称的类参考)。

所以我想知道是否有人可以分享自动化 GP 的经验以及使用了哪些工具/方法。

谢谢。

【问题讨论】:

    标签: unit-testing user-interface qtp dynamics-gp


    【解决方案1】:

    如果 QTP 无法识别某些控件,您可以使用 .NET Extensibility 扩展它支持的控件集。这允许您添加与这些控件相关但 QTP 不支持开箱即用的新功能。请注意,需要一些.NET 编程。

    .NET 可扩展性的文档位于 开始 > 程序 > QuickTest Professional > 扩展性 > 文档 > .NET 插件 Windows 窗体扩展性帮助


    今日事实: QTP 中.NET 对象名称中的 SWF 代表 System Windows Forms.

    【讨论】:

    • 嗨莫蒂,感谢您的回复。可悲的是,这与我的问题完全无关。您提到的可扩展性工具包从应用程序端工作。是的,理论上您可以将额外的开发工作投入到您创建的应用程序中。即使在这种情况下,也应该做一些文书工作以获得批准。现在回读一下我正在处理的应用程序。 1) 这是供应商的应用程序。 2) 这是微软/动态大平原。 3) 无法识别的 GUI 是 Dexterity。这些对象被绘制在特殊面板上。很可能这些对象甚至没有句柄。
    • 嗨 Albert,我对 GP 不熟悉,但是当您说 .NET Ext 在与其他供应商的应用程序一起工作时不相关时,您是错误的。 .NET Ext 是非侵入式的,可用于任何具有HWND 的控件,因此我的解决方案仅适用于当前识别为SwfObject 的控件,而不适用于继承自Microsoft.Dexterity.Shell.DexDialogHost 的控件。至于没有 HWND 的控件,我不知道 :o(
    • 嗨,莫蒂,我现在明白你的意思了。但是,将 QTP 中映射为通用 SwfObject 的 .NET 对象的本机方法和属性直接寻址不是更简单吗?无论如何,我不使用 QTP 内置框架,我使用自己的混合关键字/数据驱动,并使用更抽象的对象类型。所以我可以实现包装,但主要问题是:它们甚至没有被继承!它们在我提到的 DexterityHost 对象中呈现。这样做是为了使基于 Dexterity 的应用程序(特别是 GP)独立于平台。如果我发现更多信息,我会在此处或我的博客中发布更新。
    【解决方案2】:

    关于部分成功的对象,您记下的那些被识别为 SwfObject - 如果这些在逻辑上映射到标准类,您可以配置 QTP 将其视为标准类。例如,如果您有一个行为类似于按钮的 SwfObject,您可以将 QTP 配置为像标准按钮一样记录和重放。

    [删除了建议的击键+剪贴板解决方法,因为它不适合这种情况,因为有更多的信息表明有多个敏捷对话框,每个对话框都有很多对象]

    【讨论】:

    • 嗨,汤姆,说真的,你回答我的问题了吗?我是否问过“如何解决”?我问是否有人有处理这个问题的真实经验。我很欣赏这些答案......但我认为它们至少应该与问题有点相关。你说“大多数GP功能工具”,“GP工具无法识别”是什么意思? GP 是“大平原”的缩写。那是被测应用程序,而不是工具。
    • 键盘变通办法??给你一个想法:想象一个充满输入框、单选按钮、标签、复选框和其他东西的对话框/窗口 - 并由 Dexterity 对象呈现。内容完全认不出来。脚本以这种方式处理甚至是单个敏捷对话框,这将是多么硬编码的混乱!当您在窗口中看不到任何对象时,完全不值得自动化。
    • Albert,说真的,我回答了你的问题。显然,我在您的问题标题中使用 GP =“General Purpose”而不是“Great Plains”时犯了一个错误。加上你有多个敏捷对话框的额外细节,每个都塞满了无法识别的物体,那么我同意我的解决方法是不够的。但是,关于我将 SwfObject 映射到标准类的第一点,这对您可能很有价值。
    【解决方案3】:

    我花了一段时间进行研究,然后实际证明了这个概念。 我开始发布有关 Great Plains 自动化成功故事的系列文章,其中我将调查的所有细节和步骤以及示例代码放在一起。

    http://automation-beyond.com/2009/08/24/great-plains-automation/

    http://automation-beyond.com/2009/08/26/dynamics-great-plains-gui/

    http://automation-beyond.com/2009/09/01/gp-automation-utilizing-com/

    (待续)

    这是摘要。

    1. Microsoft Dynamics Great Plains 拥有自己完全独立的 GUI/事件系统 (Dexterity),使其成为跨平台产品。同样的事情使它几乎完全是“黑匣子”,无法从外部访问。

    2. 平台特定引擎支持 COM 自动化和 Windows 平台的各种集成模型。所有这些都集中在 Continuum Integration Library 名称下。

    3. 对于测试自动化需求特别有用的是,Continuum 提供高级方法来模拟 GUI 的用户输入,因此其作用与测试自动化工具相同。

    4. 只要 Continuum 不能满足测试自动化需求,就可以实时执行对 sanScript(Dexterity 的内部脚本语言)的直接调用。

    5. 通过以上所有内容,我为 Quick Test Professional 创建了自定义“Dexterity GUI”组件,以实现 Microsoft Dynamics Great Plains 应用程序的功能测试自动化。当然,无需使用任何键盘/鼠标硬编码解决方法。

    谢谢。

    【讨论】:

      【解决方案4】:

      您可以从 hp 下载 .NET 插件。 link text

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-08
        相关资源
        最近更新 更多