版本 8.0

Squish 8.0 是一个功能发布版,为产品的所有版本提供了新功能、错误修复和易用性改进。

详见以下章节,获取详细的更改列表。

基于模型的测试

基于模型的测试(MBT)是一种利用模型作为待测系统的抽象的系统测试方法。

在本版中,Squish 开始提供全面的模型测试工具集并具有以下新特性

  • 用于编辑 Squish 步图的可使用图形 MBT 模型编辑器 squishide
  • 测试用例编辑器,用于创建通过模型的各种路径的 MBT 测试用例
  • 与现有测试项目的完全集成:MBT 测试用例可以与之前创建的脚本文本或 BDD 测试用例共存于测试套件中,并使用共享的测试脚本和资源
  • MBT 步骨架生成和完成
  • 所有支持的脚本语言中的脚本 API

想了解更多关于基于模型的测试的信息,请阅读我们的 QA 博客中的 MBT 介绍文章,或遵循新的 MBT 教程 在实践中试用此功能。

注意:当您使用测试中心并希望管理模型测试的测试结果时,您需要将测试中心升级到至少版本 3.3.1

针对新平台的 Squish for Qt:Linux arm64

随着针对 Linux arm64(LoA)的 Qt 6.7 的第一个预构建 Qt 二进制文件发布,Squish for Qt 通过为 Linux 系统添加兼容的二进制包来跟进该平台的新开发。这些包含用户开始测试 arm64 上述 Linux 桌面上的 Qt 6.7 AUT 所需的一切,包括 squishide 和 squishrunner。

这大大简化了 LoA 平台上的测试环境设置,该平台以前有所支持,但有些复杂,并且只能通过从源代码编译 Squish 的一部分,在基于 x86_64 的独立系统上安装 squishide 和远程测试 AUT 来实现。

Squish for Qt 成为第一个支持 LoA 的版本。Squish for Java 和 Web 将在不久的将来跟进。

安装

  • 安装 Squish 二进制包的系统要求已如下更改
    • macOS 的包现在需要 macOS 12 或更高版本
    • Linux 的包现在需要 CentOS 7 或更高版本(兼容)

    有关二进制包的系统要求的完整列表,请参阅 安装指南

  • 离线文档和示例现在是 Squish 安装程序中的独立组件。这些组件被选为默认安装,但可以选择不安装它们。这对于存储空间有限的小型嵌入式系统特别有用。
  • 测试中心不再随 Squish 二进制包一起提供,也无法通过 Squish 安装程序安装。必须使用相同的许可订阅(为此不需要单独的订阅)下载和安装专门的 测试中心二进制包
  • 在 macOS 上,只接受 QtCore.framework 文件夹作为安装期间 Qt 库的指定路径。以前可以选择任何文件夹。
  • 如果在脚本语言页面中选择 Python 2,则安装程序会显示弃用警告(有关 Python 2 弃用的更多详细信息,请参阅 下面)。

通用

  • 在从二进制包安装Squish以及安装Squish Eclipse IDE插件时必须接受的用户许可协议已从传统的froglogic Squish许可协议更改为Qt Frame协议。您也可以在在线文档中阅读和审查许可协议的完整文本。
  • 在Windows上,Squish的dllpreloadstartaut可执行程序现在始终将它们启动的AUT(Application Under Test)进程的退出代码转发给调用进程。
  • 在macOS上,Squish现在支持截取桌面屏幕快照,并在多个屏幕上使用OCR功能。以前,这只能在主屏幕上完成。
  • 屏幕快照验证点工具中添加了用实际图像替换预期图像的可能性。
  • 当配置文件config.xml无效时,整个测试套件的执行(squishrunner --testsuite模式)会导致早期失败。现在,这与所有其他squishrunner模式一致。
  • 对于需要多次重试的通过屏幕快照验证,现在将在详细消息中包含重试次数(以前它是“主消息”的一部分)。
  • 改进并更新了示例测试套件中的测试脚本。
  • Squish附带安装的zlib库已更新到版本1.3.1。
  • 已修复8位和16位深度X11屏幕上的远程控制和屏幕录制。
  • 现在测试中心报告生成器正确地传递了测试套件和测试用例的描述。数据传输的可靠性也得到了提高。

脚本

  • Squish现在在测试脚本调用已废弃的方法时记录警告。为了避免这些警告,请遵循警告消息中的说明。
  • JavaScript:修复了Windows 11上返回OS.version.name不正确值的问题。
  • ModifierMouseButton枚举中添加了值NoModifierNoButtonNone值分别在这两个枚举中将要被废弃,因为它们与Python 3中的一个保留关键字冲突。
  • startApplication函数中改进了错误处理和错误消息,特别是在达到超时、传递未知或无效的包装器作为参数的情况下。
    • 当达到超时时
    • 当传递未知或无效的包装器作为参数时
  • 现在,当加载的图像文件扩展名与实际文件类型不匹配时(例如,filename.jpg实际上是.png),Image.load()函数在IDE和CLI中都会显示警告。没有扩展名的图像加载也会显示警告。
  • 修复了从MS Excel(xlsx)表单元格读取和多行文本查找时test data API的问题。
  • 现已弃用未记录的objectName()函数,它返回的名字既不唯一也不可配置。建议使用此函数的用户使用其他更稳定的方法来标识对象,例如:
    • objectMap.realName()返回Squish对象名称
    • Squish引入的对象属性,如nameid,具体取决于UI工具包
    • UI工具包API,如QObject::objectName()
  • JavaScript附带的SQL模块使用的SQL数据库客户端库已更新:MariaDB到版本3.3.8,PostgreSQL到版本16.1。

IDE

  • squishide 窗口现在具有固定的最小大小。这防止用户将窗口调整得如此之小,以至于在某些平台上几乎消失。
  • squishide 现在在堆上分配了更多内存(768 MB),以降低在执行内存密集型任务时(如处理大截图或HiDPI桌面上的OCR)发生内存溢出错误的概率。
  • 修复了squishide 窗口干扰多AUT测试中的截图的问题。
  • 在Linux上,默认禁用了可用于安全存储Test Center登录凭据的本地主密码提供程序(Linux集成)。这是因为它需要安装和配置额外的软件,而Eclipse框架并不能优雅地处理这些要求的不存在。有关在Linux上实现安全密码存储的详细信息,请参阅安全存储首选项文档。
  • 改进了在没有打开测试套件时创建新测试用例或新测试数据的工作流程。
  • 在AUT运行时,已恢复在Spy模式之间切换活动测试套件的能力。
  • 测试结果视图中,双击无关联代码行的警告结果不再引发异常。
  • 改善了Gherkin(BDD)编辑器中多行步骤的格式。
  • 修复了squishide 脚本控制台中文本光标始终跳转到行首的问题。
  • 修复了squishide 在重现包含'['']'字符的名称的测试用例后无法恢复的问题。
  • squishide 错误和崩溃转储对话框中联系Squish支持团队的电子邮件地址已替换为Qt支持中心的链接。这些链接现在可以点击。
  • 修复了macOS上squishide 实用程序中的图形故障。

Qt

  • 现在支持使用Qt 6.7构建的AUT的测试。
  • QObject::setObjectName 现在在Qt 6.4及更高版本中按预期工作。
  • 以下 QStringList 方法及其重载:QStringList::sort, QStringList::removeDuplicates, QStringList::join, QStringList::filter, QStringList::replaceInString 现在在使用Qt 5.5或更高版本时可在Squish测试脚本中访问。
  • 修复了处理项目文本末尾的'&"字符时的越界访问(警告或断言)问题。
  • 已将HeaderViewItem.selected属性添加到Qt item views的行/列标题项。该属性显示行/列中的所有项目是否被标记为选中。据知它在QTableView中工作。
  • 修复了当Squish在等待对象交互准备就绪失败后无法生成对象名称时在Qt 6中发生的崩溃。
  • 在Squish中,QColor现在支持与QColor::name()返回的格式相同的直接字符串转换。这使得类型为QColor的对象属性在更多情况下工作,并在squishide属性变量视图中出现。
  • 现在可以使用对象名称中的子属性来查找QQuickItem对象。例如
    // here, 'green' is a sub-property of 'color'
    waitForObject({"type": "Label", "color.green": 40, "container": ...})

    此更改修改了查找逻辑,以使用Squish而不是Qt API来匹配属性值,这可能会在不同版本的Squish中导致测试脚本的行为不同。

  • 修复了导致在macOS上无法自动加载QtWebEngineWidgets扩展的问题。因此,QWebEngineView控件中的HTML内容无法被识别且无法被记录。
  • 修复了使用命名空间Qt库的AUT中重复对象和重复输入记录的问题。

Web

macOS

  • 新增了一个Elements示例,展示了macOS(需要macOS 12或更高版本)上的SwiftUI AUT。
  • 新增了chooseFile()函数,以确保在Cocoa AUT中可靠地从文件对话框(NSOpenPanel)中选择文件/文件夹。这一变化引入了在脚本中打开NSOpenPanel的延迟,但不使用chooseFile()函数,并且可能破坏使用了nativeType()snooze()组合的现有文件对话框自动化。请在测试脚本中使用chooseFile()或在API文档中查阅如何调整延迟的相关信息。
  • 修复了macOS上AUT关闭时的偶尔崩溃问题。

iOS

  • 修复了iOS 17模拟器在加载Squish iOS包装库时,AUT挂起在启动画面上的问题。
  • 修复了同时使用UIKit和SwiftUI时,AUT挂起在加载Squish iOS包装库的启动画面上的问题。
  • 改进了iOS模拟器的调试功能,在挂钩iOS应用程序的过程中打印了额外的信息。
  • 移除了对iOS 12以后弃用的UIWebView类的支持。Squish已经支持其继任者,WKWebView

Java

  • 提高了Swing AUT中键盘输入记录的性能。
  • 修复了Swing AUT中无法记录分隔框拖动的问题。
  • 修复了在Linux上回放输入'@'字符的问题。
  • SWT AUT的菜单栏现在可以通过squishide应用程序对象视图访问。
  • 扩展了带有工具栏的SWT Addressbook示例。
  • 修复了挂钩添加旧bcel版本到应用程序类加载器的Java应用程序的问题。

Squish Server

  • squishserver中移除了显式Windows防火墙注册。它会在启动期间引起潜在的大延迟,并且只能在squishserver以提升权限执行时成功。
  • removeAttachableAUT动作的host:port参数不再需要。为了向后兼容,它仍然可以提供,但此用法会产生警告。

源代码包/从源代码构建

  • 新增了对使用各种版本的libclang构建squishidl的支持。已测试以下版本的libclang:11.0.0、12.0.0、13.0.0、14.0.0、15.0.0、16.0.0、17.0.1。
  • 得益于对squishidl编译标志的改进,现在支持Qt6交叉编译。这一变化主要影响交叉编译的32位目标,如Android和Boot2Qt。
  • 修复了使用命名空间Qt库的Qt包装编译问题。
  • 在Windows上支持使用LLVM-MinGW工具链进行构建。
  • 在Windows上从源代码构建Squish现在需要Windows 7或更高版本。
  • 已移除在AIX、HP-UX和IRIX上从源代码构建Squish的支持。
  • 已移除构建XView、测试基于XView的自动化测试(AUT)及相关文档的支持。
  • 已移除使用Qt 4桌面轻量版进行构建的支持。
  • 不再支持使用Qt 3和配置开关--with-qtdir构建Squish。鼓励使用Qt 4并从源代码构建的用户使用--with-qmake开关。如果您计划继续测试Qt 3 AUT,请联系Qt支持中心

Python 2:弃用通知

从Squish 8.0(本版本)开始,Python 2被认为是弃用的,不再受支持。它已不再由上游维护,并且已从许多平台上移除。鼓励用户将现有的测试套件迁移到Python 3,并参考官方Python文档的最佳迁移做法。最早在2025年第二季度,Python 2将从Squish中完全移除。

要将现有的测试套件从Python 2切换到Python 3,请运行squishconfig –python=3

注意:执行基于Python-2的测试时,您将在标准错误流中看到Python 2弃用消息。在Squish安装过程中选择Python 2作为脚本语言时,您还将看到警告。此外,如果您在squishide中将Python 2设置为默认Python解释器,则在启动时将看到一个警告对话框。

©2024 Qt公司有限公司。本文件中包含的文档贡献是各自所有者的版权。
本文件提供的文档根据自由软件基金会发布的GNU自由文档许可版本1.3的条款进行许可。
Qt及其相关标志是芬兰及其全球其他国家的Qt公司有限公司的商标。所有其他商标均属于其各自所有者。