版本 6.0

Squish 6.0 是一个重要的新版本,具有许多新功能和错误修复。以下是发布重点的精选摘要——所有主要变更的详细列表请参见以下各个章节。

  • 支持“行为驱动开发”(BDD)
    • 添加了新的 BDD 测试用例类型。它可以与之前创建的测试用例共存并使用现有的脚本函数。见 产品功能页面,包括演示视频。每个版本都有教程。
    • 生成和完成 Gherkin 步骤骨架。
    • 在 Squish 支持的任何脚本语言中记录测试步骤。
    • 在 BDD 功能和脚本实现文件之间切换。
  • 高级报告
    • 现代化和动态 HTML 报告,可以通过单一命令行调用创建:squishrunner --reportgen html,C:\Report\。重复运行将合并多个套件的结果到一个报告中。
    • 添加了新的 xml3json 结果格式,便于在其他工具中进行后处理。
    • 添加了 test.startSection(title)test.endSection() 函数,可以将测试结果分组到逻辑部分。
  • 脚本语言更新

    用于二进制包的五种可用的脚本语言的默认版本已升级

    • JavaScript:添加各种 ECMAScript 5.x 函数。
    • Perl:版本 5.22.0
    • Python:版本 2.7.10
    • Ruby:版本 2.2.2
    • Tcl:版本 8.6.4

    可根据需求创建使用旧解释器版本的定制 Squish 构建。

  • GUI 覆盖率(实验性)

    另外,还添加了一个实验性新功能,用于跟踪 UI 测试的覆盖率。见 教程:GUI 元素覆盖率,了解概述和使用说明。

    目前仅适用于 Qt 版本。

一般

  • 附加到正在运行的 AUT 的方式现在对防火墙更加友好;它使用从 squishserver 到 AUT 的单一连接。
  • 处理以空行为结束的测试数据文件时,测试执行现在更加稳定。
  • squishide 二进制文件移动到顶级文件夹,即不再需要打开 bin 文件夹来启动 squishide
  • 增强了对 RedHat Enterprise Linux 4 和 SuSE Enterprise Linux 10 等非常旧的 Linux 发行版的二进制包的支持。
  • 添加了一个新的 XML 3 报告生成器,它支持嵌套测试用例,并改善了验证的报道。
  • 修复了 XML 2 报告中的一个错误,导致有时验证点的名称丢失。

squishide

  • squishide 现基于 Eclipse 4.4。
  • 优化了验证点编辑器的各种用户体验。
  • 现在在 macOS 上,squishide 随 Java 打包,因此不再需要手动安装。
  • 控制条不再放在所有其他窗口上方。
  • 转到定义 热键现在对 Python 脚本按照预期工作。
  • 对控制条进行了各种用户体验改善。
  • 修复了导致在 suite.conf 文件包含空行时打开测试套件失败的问题。
  • 修复了导致打开离线 HTML 手册以及 PDF 手册失败的问题。
  • 解决了导致“对象高亮”功能与创建截图验证点产生冲突的问题。
  • 选择多个测试用例将隐藏测试用例资源,以避免混淆哪些测试用例资源被显示。
  • 当使用执行测试套件功能时,squishide不再执行测试用例多次,即使在suite.conf文件中某个测试用例被多次列出。
  • 修复了在录制测试时控制栏显示HTML格式标签(如<b>)的问题。
  • 在创建新的测试套件时显示的支持的GUI技术和脚本语言列表现在按字母顺序排序。
  • 在一个空的Python test.py文件中使用记录片段功能现在将正确添加所需的main()函数定义。
  • 测试结果视图现在可以正确处理连续两个具有相同文本的结果条目。
  • 一个已解决的问题导致在使用执行测试套件功能时,squishide尝试执行不存在的测试用例。
  • 变量观察器中显示的列表元素现在已排序。
  • 在Spy的方法视图中显示的方法现在按字母顺序排序。
  • testData.dataSet的自动完成现在在Python脚本中工作正确。
  • 修复了一个问题,即在最近测试结果下拉菜单中显示复选标记时出现问题,该复选标记位于当前选定的测试结果旁边。
  • 更改为正在使用的Squish工具的路径时,现在也将路径更改为Perl和Python解释器,以便使用所选Squish包提供的解释器。
  • 测试脚本中的警告和错误现在在测试用例列表以及测试用例和测试套件资源视图中通过一个小覆盖图标指示。
  • 修复了一个问题,该问题导致squishide以错误顺序显示squishrunner输出。
  • 修复了创建表验证点的问题,该问题导致在保存验证点之前再次选择该表时,会发生两次表比较。
  • 将代码转换为数据驱动向导现在保存所有打开的编辑器,以确保使用最新数据。
  • 修复了一个问题,当从对象映射编辑器中保存更改,且有一个名称被删除且所有引用对象名称已经调整以便指向另一个名称时。
  • 打开符号名称功能在使用Tcl脚本时不再触发空指针异常。
  • 修复了在关闭另一个(对于该测试套件的对象映射已打开)测试套件后立即尝试打开测试套件对象映射的问题。
  • 修复了与验证点查看差异相关的问题,其中验证点文件名在大小写上与测试脚本中布尔测试.vp(name)调用的方式不一致。
  • 已将新设置添加到首选项对话框,允许在执行测试后自动提升测试结果视图。
  • 跨多行的脚本注释现在默认折叠。

脚本

  • 引入了新的testSettings.testCaseName属性,可用于设置当前测试用例的名称;测试名称将在测试报告中体现。
  • 当使用squishtest Python模块执行脚本语句时发生的超时错误现在将抛出脚本异常,而不是自动终止Python解释器。
  • squishtest Python模块现在公开了一个新的setHookSubprocesses()方法,可用于启用钩入子进程——这在测试Qt应用程序时尤其相关。
  • squishtest 模块导入到 Python 脚本中时,将不再尝试连接到 squishserver;相反,只有在需要时(例如调用 ApplicationContext startApplication(autName))才会建立连接。
  • 现在,ApplicationContext waitForApplicationLaunch() 函数接受一个可选的超时参数,默认为 "AUT 超时"。这意味着它不再无限期地等待应用程序启动。
  • ApplicationContext.name 属性现在会返回 AUT 的完整文件名——它不再在第一个点处截断。
  • 现在可以将可调用的(例如函数)传递给 Boolean waitFor(condition) 函数。
  • Python 脚本中的 Boolean waitFor(condition) 函数现在返回文档中记录的布尔值。
  • 添加了新的脚本函数 StackTrace test.stackTrace(),用于获取当前脚本执行时的堆栈跟踪。
  • squishrunner 的新 --scriptargs 开关可以用于从命令行向测试脚本传递参数。
  • testSettings.logScreenshotOnPass/testSettings.logScreenshotOnFail 属性现在适用于所有生成测试结果的测试函数。
  • Perl 测试脚本的调试器得到了极大的改进;进入/覆盖现在按预期工作,调用堆栈显示正确,变量视图现在可以正确处理全局变量。
  • Perl 脚本中的语法错误以及运行时错误现在报告正确,它们在测试报告中显示为 "脚本错误" 结果。
  • 在深度嵌套的 Perl 脚本中引发的异常的错误位置不再是 (eval N),而是实际的文件位置。
  • testData.get(filename) 函数现在可以正确处理空文件。

Qt 特定

  • 修复了由 screenRect 属性返回的网页元素的屏幕坐标。
  • 添加了对 Qt 5.4 或更高版本中的 QQuickWidget 控件的 支持。
  • 改进了 QML 上下文访问的支持。
  • 添加了对在 iOS 和 Android 上测试 Qt 应用程序的支持。
  • 现在支持使用单精度 float 参数调用自定义 Qt 方法。
  • 现在支持记录 Qt Quick 2(即在使用虚拟键盘时)中的输入方法。
  • Squish for Qt 现在更喜欢 QObject::objectName 属性,而不是 textcaption。这可以大大提高标题更改时的顶层窗口生成的名称。
  • 添加了对 Qt Quick 2 中不记录坐标的支持。这导致脚本更加清洁,不太依赖于屏幕或对象几何。有关更多信息,请参阅 RecordWithoutCoordinates 中的 SQUISH_DIR/etc/qtwrapper.ini
  • 提高了在 Qt Quick 2 应用程序上重新播放点击、触摸和输入功能的同步性和可靠性。
  • 引入了对调用通过宏 Q_ENUM 注册的自定义 QObject 方法的支持。
  • 添加了对在 Windows CE 上运行 Qt 5 应用程序的支持。

Java 特定

  • 现在可以使用 Java 8 记录 & 重放 JavaFX 应用程序上的多点触控手势,当在 Windows 8 或更高版本的操作系统上运行时。
  • 修复了在 macOS 上记录 SWT 组合框控件上的动作的问题。
  • 已添加对 SwingNode 的支持,使 JavaFX 应用程序中嵌入的 Swing 控件也能被识别。

Web-specific

  • 现在可以在对象名称中指定一个 container 属性。这已用于在生成名称时指示浏览器标签,但也可以手动添加以帮助区分在不同网页上多次出现的同名对象。
  • 修复了一个导致在某些情况下 Google Chrome 无法正确挂钩的问题。
  • 在运行测试之前,不再需要关闭所有运行的 Firefox 实例。
  • 修复了一个导致由于 SwingUtilities.invokeLater 引起的异常而无法在 Java 小应用程序上重新播放动作的问题。
  • 修复了 loadUrl(url) 函数中的问题,该问题导致在调用 closeWindow(":[Window]") 后立即调用 loadUrl(url) 时,启动 Microsoft Internet Explorer 会失败。
  • 通过删除对象名称的出现计算成本,加快了对象悬停的速度。一旦通过点击选中对象,才进行出现计算。
  • 将 Squish 测试期间打开的浏览器标签/窗口暴露给测试脚本。标签通过多属性名称识别,因此可以使用 Object waitForObject(objectOrName) 进行查找。Squish 提供了查询标签和激活特定标签的函数。新记录的脚本将自动生成包含标签的对象名称,以确保在正确的标签中进行对象查找。该功能支持 Microsoft Internet Explorer、Firefox、Google Chrome 和 Apple 的 Safari。
  • 已解决一个导致Object waitForObject(objectOrName) 函数不考虑 HTML 对象的可视性,使其过早返回的问题。
  • 关闭 Microsoft Internet Explorer 窗口将不再显示确认对话框。
  • 修复了一个问题,该问题导致在 'addressbook' 示例中单击按钮时会记录mouseClick(objectOrName)clickButton(objectOrName)
  • 记录的对象名称现在利用 visible 属性来减少对 occurrence 属性的需求。
  • 现在 Boolean setContext(context)waitForContextExists(context) 函数如果找不到给定的上下文名称将抛出异常。可以通过 SQUISH_DIR/etc/webwrapper.ini 中的设置 ThrowErrorOnUnknownContextNames 恢复旧行为。

    这也会影响使用 context 属性的对象名称。

  • 修复了一个导致对象高亮显示在 Java 小应用程序中不会停止的问题。
  • 修复了计算滚动 HTML 元素的屏幕几何形状的方式中的问题,这导致调用诸如 nativeMouseClick(x, y, button)typeText(objectOrName, text) 的函数失败。
  • 在 macOS 上现在可以按预期捕获 HTML 元素截图。
  • 使用 Microsoft Internet Explorer 自动化网页不再需要将这些网页添加到 Microsoft Internet Explorer 的 "受信任站点" 区域。

Flex-specific

  • 修复了一个导致访问 id/name 属性的问题,这些问题在 OBJECT 元素中不能正确工作。
  • Flex 'addressbook' 示例现在可以在Firefox的新版本中(版本29及以后)正确启动。

Windows (native)-specific

  • 修复了基于UI自动化对象识别的各种问题,这些问题导致对象在Squish对象层次结构中丢失。
  • FoxPro支持稳定性得到了提高。
  • 修复了与使用多线程和子进程的.NET应用程序相关的各种问题。
  • 修复了导致顶级MFC窗口的text属性在某些情况下为空的问题。
  • 在Windows Forms单选按钮控件上重放点击操作将不会再在鼠标光标到达单选按钮之前触发鼠标点击。
  • 添加了一个属性,可以从此.NET WPF文本控件(基于RichTextBox类)中获取纯文本。
  • 为Windows Forms应用程序中的工具栏项的下拉菜单添加了支持。
  • 修复了与记录文本输入相关的各种问题(特别是记录类似Ctrl+A的关键组合)。
  • 修复了导致将文本输入记录到Microsoft Internet Explorer地址栏中不工作的问题。
  • 改进了对WPF控件TreeViewItemListViewItemDataGridCellDataGridToggleButton的支持。
  • 改进了对WPF控件Z排序的识别。
  • 改进了将原生Windows控件内置于Windows Forms .NET控件中的处理;现在使用Windows Forms辅助功能进行包装,提供更多信息。
  • 连续执行两次鼠标点击将不再在AUT中触发“双击”动作。

macOS特定(Cocoa/Carbon版本)

  • 添加了对自动化WKWebView控件的支持。
  • 修复了与菜单交互相关的内存泄漏问题。

iOS特定(iPhone/iPad版本)

  • 添加了对自动化WKWebView控件的支持。
  • 提高了在iOS 8.3上重放触摸动作时的稳定性。
  • 在没有配置iPhone 4s作为可用设备的情况下,使用默认启动器选项启动iOS模拟器。
  • 使用Spy选择AUT对象现在将突出显示这些对象。

Android特定

  • 现在可以将额外的键值对传递给Android应用程序的Intent。
  • 添加了对即将推出的Android M版本的支持。
  • 添加了对CrossWalk-Cordova WebView XWalkView的支持。
  • 修复了由于使用ApplicationContext attachToApplication(autName)连接到的测试脚本而导致的断开与AUT连接时崩溃的问题。
  • 解决了一个可能导致在执行非常长时间运行的测试脚本时耗尽内存的错误。
  • 添加了一个新的stopObserver()函数,以便在应用需要执行CPU密集型任务时临时停止观察者。
  • 修复了在某些情况下,如果同时启动新的Activity,跟踪对话框将失败的问题。

Tk特定

  • 在Windows上测试Tk应用程序时,添加了对记录菜单栏和上下文菜单的支持。

附加组件和集成

  • Visual Studio集成支持Visual Studio 2013。

源代码包

  • Squish现在可以针对Ruby 2.2进行构建。
  • Squish现在可以使用Visual Studio 2015进行构建。
  • 添加了对使用Python 3构建的实验性支持。
  • 提高了GNU C++和兼容工具链(包括Clang和QNX QCC)的编译器检测。
  • configure开关--enable-debug--disable-debug已经被拆分为单独的开关,允许针对发布版Qt库构建Squish但包含调试信息;有关详细信息,请参阅configure --help
  • Windows 平台上对 Unix 目标的交叉编译支持现在已支持 Squish for Qt 的大多数组件。

©2024 中国 Qt 公司 Ltd. 本文件中包含的文档贡献属于各自的版权所有者。
本提供的文档根据 Free Software Foundation 发布的 GNU 自由文档许可协议版本 1.3 的条款进行许可。
Qt 及其相关标志是芬兰和中国/世界其他地区的 The Qt Company Ltd 的商标。所有其他商标均为各自所有者的财产。