Squish — 基于Qt的HMI自动化测试工具

article/2025/9/18 20:07:57

目录

    • 自动化测试方案
    • 设置Squish
    • 记录测试
    • 属性验证
    • 视觉验证
    • 总结

本文翻译自Squish - Test automation tool for our HMI build with Qt
原文作者:Piotr Lesiecki
校审:Kenny Zhang

当测试工程师们听到自动化测试时,首先会想到的一定是Selenium,它是最受欢迎的web应用程序脚本测试工具。当然也有很多现成的移动应用解决方案,如Appium、Robotium、Espresso、UI Automator等。挑战在于我们有一些特定于项目的技术,无法像web应用程序那样容易实现自动化测试。然而和其他非web应用程序相比,使用Qt有一定优势,因为我们可以使用现成的解决方案。

Graphics1

我们的项目Addrive:数字座舱应用

该项目的目标是为共享汽车方案开发一个以导航为主要功能的数字座舱系统,其中用户只要接受广告插播,就可以以更便宜的价格租用汽车。广告可以推荐驾驶者购买咖啡,驾驶者可以通过我们导航屏幕上的应用程序购买咖啡,然后我们在目的地添加一个咖啡店。我们还增加了HVAC模块及其菜单,驾驶者可以在不同的屏幕之间切换(音乐播放器、设置、汽车3D模型、电话、天气视图)。我们使用Qt Application Manager、QML、MapBox、Qt 3D Studio和基于OSRM的python编写的服务器来构建它。

您可以看到我们的应用设计得很出色,因此我们要确保所有的图像都精确到位,广告显示正确,驾驶者可以在不同的屏幕之间切换,能够设置合适的温度、风扇的风量以及其他相关的功能。

自动化测试方案

通过对Qt自动化测试工具的研究,我们发现有三种选择:编写自己的测试框架、KD executor和Squish for Qt。

第一个选项立即被否定了,因为我们要在Qt全球峰会上演示我们的应用程序,所以所剩时间无多。KD executor基本上是简单的宏工具,能精确记录每次鼠标点击,然后在相同的环境中运行宏,可能会导致大量碎片测试。并且在不同的环境中,无法运行测试脚本了,更不用说在嵌入式设备上运行了。因此Squish似乎成了我们的最佳解决方案。

将Squish注入到Qt应用程序中,就可以操作对象和模型了,就像在Selenium中操作HTML DOM一样。另外,它支持所有的Qt Widget、QML和Qt Quick Controls、跨平台和跨设备场景、BDD方法,并且可以在持续集成(CI)工具上运行。而且它入门很快,看起来非常适合我们的项目。

设置Squish

要安装Squish,您需要在https://www.froglogic.com/squish/free-trial/注册一个评估许可(提示:froglogic的工作人员提供了很好的支持,遇到任何问题,都可以直接联系他们)。注册之后,您应该能下载二进制文件(或Linux系统上的.run文件),请记住,需要使用与您的项目相同Qt版本编译的Squish。安装运行Squish之后,有些人会很快发现其界面与Eclipse非常相似,这是因为它就是基于这个IDE做了些修改,添加了额外功能。

点击File ->New Test Suite,你会看到创建页面。找到您想要运行的应用程序,如果需要增加额外的运行参数,可以稍后在AUT(Application Under Test)子页面上输入。
Graphics 2

在AUT子页面上您可为应用定义更多参数

记录测试

在我们设置完Test Suite和AUT之后,我们就可以开始为测试用例创建自动化脚本了。现在需要在套件中创建一个新文件,最简单方法是单击IDE顶部栏上的“record”并开始记录。
Graphics 3

记录测试

如果我们的配置正确,应用程序就能启动了,我们也可以像标准用户那样与之交互了。您应该还能看到一个新的窗口—— Control Bar。
Graphics 4

Test recording control bar

属性验证

尝试执行一下测试用例中描述的步骤,如果您需要插入任何判断提示/检查,那么只需点开“Verify”按钮旁边的菜单。这里有很多选项,可以检查不同的属性、在测试时截屏比对、列表检查、进行更精确的可视化验证,或者我们通常可以将这些验证手段合并到一个点上。在选定方式之后,我们还要选定需要验证的对象。我们可以展开对象树并搜索感兴趣的元素,或者使用探测图标表示的选取工具。之后,我们可以检查多个属性来验证所选对象,比如高度、宽度、源、父对象等众多属性。这完全取决于如何设计和构建应用程序。
Graphics 5

选取器和属性列表

视觉验证

截图/视觉验证也需要类似步骤,在选择我们想要验证的区域或元素之后,我们要选择对象并为其截图。可视化验证提供了三个附加验证选项:检查属性、几何图形和屏幕截图。
Graphics 6

视觉验证点窗口

保存视觉验证点后,我们可以指定多个附加选项,例如图像的缩放应该精确到多少相对百分比,或者可以在图像上设置应该或不应该检查的正负区域。

在完成所有步骤的录制后,我们可以用控制栏来结束测试录制,所有代码都应在之前创建的文件中生成。现在可以清除生成代码中冗余的行,并对代码进行一些重构,以使它更易读、今后更容易维护。以下是操控我们HVAC温度模块的简单测试用例:
Graphics 7

测试脚本

总结

正如您所看到的,Squish是很容易入门的自动化工具,对于需要验证GUI的Qt应用程序来说是一个完美选择,尤其是当我们没有时间构建自己的测试框架时。我们基本上可以快速开始创建测试,这些测试可以从命令行界面运行,这意味着我们已能在项目中简单地与持续集成系统配合,如果需要,它还能支持BDD!如果你想开始使用Squish,你可以从froglogic的教程https://www.froglogic.com/support/screencasts/和知识库https://kb.froglogic.com/获取更多有用的信息。

【小编注:本月初,Squish已在Qt Marketplace上线】


http://chatgpt.dhexx.cn/article/yQEoj7Nj.shtml

相关文章

Squish - GUI Tester

Squish - GUI Tester Squish overview 网上查询关于自动化测试工具Squish的资料很少。特别是中文搜索。最近正好在使用这款工具,在使用中总结了一些知识,在这里和大家一起分享下。 Squish是froglogic公司的一款商业自动化工具,几年前好像是…

Squish for Qt:为Qt应用量身打造的自动化测试工具

转载地址:https://mp.weixin.qq.com/s?__bizMzI5MzA3NzU3OA&mid2649661399&idx1&sn7b584cfc54e529d6ce605274d8f7bc0b&chksmf46da8f2c31a21e4eccfe9ee0eb690045cdd8a074af0e57bceb8f605c5fcb2fb72c9d7334c28&mpshare1&scene1&srcid072…

基于GUI测试工具Squish的使用

转载自:http://www.readingday.cn/squish-for-qt-2/ 申请Squish试用 浏览器打开Squish官网(https://www.froglogic.com/squish/free-trial/),填写试用申请表。您需要提供一个有效的邮箱地址,以便接收到Squish官方所发送…

浅析如何利用Squish实行 GUI自动化测试

1.引言 图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的系统操作用户界面。是软件与用户进行交互的主要方式,与早期计算机使用的命令行界面相比,图形界面对于用户…

关于Squish的介绍和简单使用说明

网络研讨会 | Squish for Qt: 为Qt应用量身打造的自动化测试工具_哔哩哔哩_bilibiliSquish是一款跨平台、支持多种开发技术的GUI自动化测试工具,基于对象识别的GUI自动化测试工具、支持各类操作系统、可为多种技术开发的应用程序提供GUI自动化测试。操作简单、脚本语…

3乘3魔方第四步_三阶魔方第四步

三阶魔方的第四步是顶棱翻色,首先转出黄色的顶层十字,将魔方顺时针旋转九十度,转到红色的一面,右边顺时针旋转九十度,将底层的白色面转动到上面,顶层再顺时针旋转九十度,右侧逆时针旋转九十度&a…

java还原三阶魔方_魔方小站四阶魔方教程2 一看就懂的魔方教程(魔方玩法视频教程+还原公式一步一步图解+3D动画)...

形成下图的样子, 这一步很简单,只需要学会一个很好理解的技术就行了,请看下面标准情况的例子,魔方 您可以用鼠标拖拽3D动画里的整个魔方,以看到魔方背面的变化。 TR U R U 我们要合并位于前面的这一对红白棱块 合并棱块。 将合并好的一对红白棱块转到右面。 旋转右面,你要…

魔方cfop公式软件_【番外篇】八大魔方快速还原法图解介绍汇总大全!

本篇在上一篇文章的基础上,主要介绍目前魔方圈主流的速拧还原解法。 本篇文章仅介绍主流的快速还原法即 速拧解法,不包括其他初级玩法等,初级玩法也很多(笑面虎、8355、棱先、角先等等),甚至有些独立还原者能创造属于自己的解法,有些解法思路巧妙,有些解法容易上手,总…

二阶魔方还原 - 4步2公式

三阶魔方的公式记录在 https://blog.csdn.net/Bob__yuan/article/details/86546920,这是只需要记7个公式就可以三阶魔方还原法,本文为二阶魔方“傻瓜还原法”,即不需要另外再记公式,只需要会上述三阶魔方中的2个公式就可以还原的方…

UTF-8转码GBK

昨天一个大学的同学问了一个关于utf-8转码gbk的问题,所以两个人一起讨论了一下关于utf-8转码成为GBK的乱码原因。 正常情况下如果我们需要将UTF-8格式转码为GBK,我们会需要经过这样一个中转: 通常情况下如果直接转码会出现一种情况就是GBK转码…

python常用英语词汇(持续更新)

✅作者简介:大家好我是hacker707,大家可以叫我hacker 📃个人主页:hacker707的csdn博客 🔥系列专栏:python 💬推荐一款模拟面试、刷题神器👉点击跳转进入网站 一直有人问我,自己英语不…

Python常用英文单词【最强总结】

嗨嗨,我是小圆,总有人在刚了解到python的时候,会考虑一个问题 英语不好能学好python吗? 当然可以,学习python用到的单词并不是很多。 今天就给大家分享一下Python常用英文单词。 一、交互式环境与print输出 1、pr…

史上最全python常用英语单词,建议收藏

于刚才是学习python这些也足够了,一天学个六七个单词记一下在配合自己寻找的视频、书籍等等方法去学习是有一定帮助的。 这里还是要说一句,仅供兴趣爱好学习使用,个人开发者(非考虑未来靠此为生的人士)我们一起学习,一起成长。 下列常用单词大家可以复制一下,自己用Word…

【web项目部署】

一: 搭建 Java 部署环境 1: 安装 JDK 2: 安装 Tomcat 总结 3: 安装 MySQL (1): 依次安装 (2): 更改配置 (3): 启动 (4): 测试连接 二: 部署 web 项目 1: 给服务器准备好依赖的数据 2: 微调我们的 Java 代码 3: 重新打包 4: 上传到服务器上 5: 验证 ——————————————…

Web项目基本结构

C/S模式的软件 客户端/服务器 比如QQ,或者一些大型游戏 用户需要先下载软件的客户端,然后才可以使用. B/S模式的软件 浏览器/服务器 我们上网时候所访问网站的基本全是B/S模式的项目. 用户不需要下载任何东西,只需要用到浏览器就可以访问到这个项目. 我们在java中要学习的web项…

web编程项目

web编程项目 一 项目要求 二 项目实现 该项目使用了以下模块: express-session:是express中的一个处理session的中间件。有以下特点:session管理(基本功能),cookie签名,可替换持久储存模块。 在app.js中,设置session的各个参数。…

IDEA(2021)创建Java Web项目

1. IDEA(2021)创建Java Web项目 1.1. 创建Java项目 创建新项目"New Projpect";选择"Java"项目,默认直接下一步 “Next”,下一步“Next”。输入项目名称“Project Name” 和 选择项目路径"Project location"&…

使用idea创建web项目

前言: 很高兴能够用自己所学知识为你提供答疑!!! 今天我就来操作下如何使用idea这款软件创建web项目。步骤: 1.创建项目 首先新建一个项目 然后选择最后一个,创建一个空白的Java项目,点击Next。 这个时…

eclipse开发web项目

对比idea开发web项目 ###1,使用eclipse开发web项目(jsp项目) 1,先将eclipse与tomcat关联一下 window->preferences->server->Runtime Environments add 还要在面版配置一次, 创建项目: File->…

java web项目的创建

1、启动Eclipse,执行菜单【File】——【new】——【other】——【web】——【Dynamic Web Project】。 2、单击【Next】按钮,进入填写工程信息界面。 3、单击【Next】按钮,进入工程配置界面。 4、单击【Next】按钮,进入工程选项界…