【问题标题】:What scripting tool can I use for automated testing of Delphi programs? [closed]我可以使用什么脚本工具对 Delphi 程序进行自动化测试? [关闭]
【发布时间】:2011-12-13 09:55:40
【问题描述】:

我正在寻找一种用于自动化测试的工具。我将使用脚本进行测试,而不仅仅是自动化,这意味着它不能只发送一些按键。它需要检查应用程序的窗口以查看它是否已正确更新。越便宜越好,成本没有下行限制。 ;-)

我需要一门真正的语言,具有函数、变量、循环、分支等,并且应用程序是在 Delphi 中开发的。

我需要能够聚焦控件*,等待窗口出现,搜索控件/窗口,发送键盘输入并检查各种窗口/控件是否已更改状态(例如,按钮现在禁用,文本框包含正确的文本,对话框打开等)。

几年前我曾经使用过 AutoIt,现在我又开始使用脚本了。我想知道在我离开期间是否有任何新的发展。

有什么建议吗?

* 如果应用程序的布局发生变化,我不想将光标移动到绝对坐标。这句话from Wikipedia 解释了原因:

回归测试也成为 GUI 的一个问题。这是因为 GUI 可能会在应用程序的不同版本之间发生显着变化,即使底层应用程序可能不会。旨在通过 GUI 遵循特定路径的测试可能无法遵循该路径,因为按钮、菜单项或对话框可能已更改位置或外观。

【问题讨论】:

标签: windows delphi scripting automated-tests


【解决方案1】:

我相信你刚刚描述了TestComplete by SmartBear Software

【讨论】:

  • +1。 TestComplete 非常昂贵,但对于 Delphi 和其他工具来说,它是一个完全可编写脚本的测试环境。 SmartBear(前身为 AutomatedQA)多年来一直在开发对 Delphi 友好的工具,如 AQTime 和 TestComplete,他们的产品在 delphi 领域处于领先地位。其他公司的等效产品,通常用于测试软件,包括 Mercury TestDirector 和 WinRunner,尽管我认为 HP WinRunner 现在已经停产(EOL,不再销售)。
【解决方案2】:

Autoit 会执行您列出的所有操作。我一直用它来对付同样的海豚。此外,Delphi 在使用标准 Windows 控件的意义上很好,这使得它很容易挂钩。

【讨论】:

  • 很高兴听到 Mawg 的声音。 Autoit 也提供浏览器应用程序。 IE库是内置的,Firefox只需包含FF.au3即可。让您完成从单击按钮到遍历 DOM 的所有操作。
【解决方案3】:

我在sikuli 方面取得了一些成功,它的优点是是python (jython) 代码。它建立在 OpenCV 之上,并使用完整的图像处理引擎来匹配屏幕的各个部分。它还包含用于截屏、等待更改以及击键和鼠标注入的编辑器和功能。

【讨论】:

  • 使用这样的工具的主要原因是有些类型的应用程序无法向控件发送点击。这发生在所有者绘制控件上(Java Swing 就是一个很好的例子)。另外,值得注意的是,因为写sikuli就是python/jython,所以没有理由不能调用原生的windowing agent来发送消息。
  • 我正在使用 SIKULI 进行自动化 GUI 测试 WPF 应用程序,它就像一个魅力。它内置了 JUnit 测试——你在 python 中编写所有代码,然后点击运行(测试)按钮。您还可以通过剪贴板处理功能测试文本框等控件的内容。如果它与 WPF 一起使用,我看不出它不能与 Delphi 一起使用的任何原因。
【解决方案4】:

与我的其他答案不同:PyWinAuto

它有完整的脚本(因为它是 Python),它使用控件名称而不是 X、Y 坐标,它等待窗口并且您可以发送按键。而且是免费的。

缺点应该很明显:)

【讨论】:

    【解决方案5】:

    要自动化一个 delphi 应用程序,我发现的主要问题是任何测试工具(带有 delphi 插件的 QTP、Test Complete、Testanywhere、autoit、sikuli)它们都没有检测到任何 Tlabels 和 Tlist 以及其他组件,它们对于应用程序在 delphi 中构建是 UI 的重要组成部分。即使要进行基于 func 的测试,我们也需要最终检查前端的组件,以查看 func 是否正确输出。即使要使脚本自动化,我们也需要首先能够检测到对象并将其添加到存储库中。

    我们有一个应用程序,其中我们严重依赖许多第三方组件。我试图用市场上几乎所有可用的工具来检查可行性。 市场上排名前两位的工具都没有用。

    1. 带有 Delphi 插件的 QTP 没有用,即使在他们公开提到它不支持在 delphi 中构建的许多类的网站上也是如此。

    2. TestComplete 它比 QTP 更好,它检测到许多组件菜单组件,如果我没记错网格等。

    然后在谷歌搜索后我发现了

    1. TestAnywhere 在检测第三方构建组件方面肯定更好。我发现的唯一问题是它没有检测到 Tlabel 类,并且某些组件不记得是哪个。

    当我谈到检测组件时,它可能是部分或全部,即某些工具能够检测到在 XY 坐标处存在组件,但无法获取组件类或详细信息(如组件属性名称等)自动化和编写脚本很困难。

    其余的都或多或少是上述这些的组合或子集。

    还在搜索中!!!!!!!!!!!!

    【讨论】:

      【解决方案6】:

      使用 TestComplete,如果您将应用程序编译为开放式应用程序 - 即包含它们的库,它会使您的应用程序超级可检查。非常适合测试,可能不是最好的安全性。测试完成是最好的,这对我的预算来说太贵了。

      里面的脚本很棒,对Delphi的理解很棒。价格标签不是很好,特别是如果您想在组织内获得 GUI 测试的牵引力,就像听起来一样。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多