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

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

1.引言
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的系统操作用户界面。是软件与用户进行交互的主要方式,与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受、操作上更加便捷直观,它极大的方便了非专业用户的使用,使我们从命令行的操作方式解放出来,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。GUI软件测试是指对拥有GUI软件进行的软件测试。GUI的广泛应用为我们的程序操作提供了极大的方便,但是同时也使得GUI软件更复杂、更难以测试。

2.GUI测试难点
(1) GUI测试还没有完备的标准
对于普通的单元测试,我们只需要给目标函数一个输入并检测输出就可以了。例如:对于 Server 端逻辑的测试,我们只需要模拟客户端发起一个 HTTP 的请求就可以了,但是对于GUI的测试尚没有给出完整的定义。
(2) 复杂的GUI程序几乎无法生成完整的测试用例
用户对GUI软件的操作是任意的,而这些操作事件的发生没有固定的顺序,因此GUI软件的输入域变得非常的庞大或者无穷,导致可能无法生成完整的测试用例,这也会使得测试的期望输出也变得很复杂。
(3) 自动化GUI测试困难重重
GUI软件的输入和输出是交替进行的,而且测试输入受到GUI结构和状态的限制、输入域的不确定和事件的庞大,这些特点都会使得自动化GUI测试困难重重,自动测试时需要时刻监视GUI的结构和状态,而且输入域上的很多事件序列是无效的,这会使我们的测试过程无法正确执行或者不会得到软件的积极响应,从而很容易导致测试失败。

3.GUI测试技术
(1) 录制/回放技术
是通过测试人员在对GUI软件进行操作,然后通过专门的脚本语言进行录制,录制的过程中可以对关键点或者关心的事件和数据插入相应的验证点,录制完成后,进行回放操作,在回放的过程中,验证操作事件或者数据是否和期望的一致,从而完成测试。是目前流行的GUI测试方法。
(2) 基于有限状态自动机
有限状态自动机(Finite State Machine,简称FSM)是一种能够描述交互式系统的数学模型。GUI软件作为一种交互式系统,也可以使用FSM进行建模。但这是一个难度和工作量都很大工作。
(3) 基于UML
UML(Unified Modeling Language,统一建模语言)是用来对软件系统进行可视化建模的一种语言。利用UML用例图和活动图来生成GUI测试用例的方法。这类方法使用的前提是具有完善的UML软件设计文档或UML软件规约,具有较大的局限性。
(4) 利用人工智能方法
利用人工智能方法生成测试用例的研究主要是将智能规划方法(Planning)和遗传算法(GeneticAlgorithm)引入GUI测试用例生成。但使用这种方法时需要人工确定每个事件的初始状态和其引起的状态变化,工作量非常大,难以用于大规模GUI软件测试。使用遗传算法对熟练测试人员生成的样本测试用例集进行学习,然后根据学习的结果来生成新的测试用例。这种方法依然需要较高的人工成本,同时其效果受样本集的影响很大。

4.GUI自动化回归测试工具Squish
在创建现代复杂的GUI应用程序的时候,GUI测试是程序开发和QA的一个重要组成部分。随着应用的开发周期越来越短,短时间内通过人工去进行手动的审查GUI缺陷几乎是不可行的。Squish自动化GUI测试工具,以记录的方式快速的生成测试用例,通过测试用例的回放,发现软件产品缺陷通知相关人员及早的修复,从而节省时间、降低成本、提高效率。
Squish支持多种平台,Squish使测试人员应用GUI技术实现应用程序自动化成为可能,测试工程师可以通过Squish自由记录和编写测试使用熟悉的脚本语言来完成测试,拥有其他GUI测试工具无可替代的优点。此外,Squish提供非常紧密的集成与特定GUI技术支持。这给测试人员提供了他们正在测试(数据项,控制,和小部件,等等)的内部原理应用,也导致生产了
非常健壮和稳定的GUI测试。Squish是一个非常开放和灵活的系统,支持简单的集成与常见的测试管理系统和环境。
Squish的功能与优点:
● 智能测试记录和回放,选择非专有的脚本测试语言,以及强大的脚本编辑功能;
●插入验证点,可以验证应用关键点的功能;
●易于使用,基于Eclipse的集成开发环境;
● 测试日志记录和批处理执行,生成灵活的报告格式,自动截取验证失败的图形;
● 高级GUI控件支持和自定义控件;
● 支持交叉工具包;
● 脚本支持访问应用程序内部;
● GUI对象映射;
● 分布式和多个应用测试;
● 测试数据和数据驱动测试;
● 灵活性和可扩展性;

5.Squish自动化GUI测试过程
(1) 测试应用
Squish测试工具主要测试软件的GUI是否能够完成期望的功能。例如测试如下应用,AddressBook是一款经典的桌面应用程序,功能十分简单,但是包含了桌面级应用程序的最基本的特性(文件的打开、关闭、保存以及应用的关闭、最小化和最大化等)。

测试应用
(2) 测试目标
AddressBook应用可以通过手动的添加或者删除应用数据,应用程序会保存应用数据,我们要测试在用户添加或者删除应用数据的时候,GUI应用程序是否会像我们所期望的那样,准确无误的添加或者删除数据,在最终的应用数据库中保存添加或者删除记录。
添加应用数据
(3) 录制测试脚本
Squish工具通过录制/回放技术来完成GUI测试,通过Squish启动AddressBook应用程序,在程序中模拟用户操作,添加或者删除数据。测试脚本会自动的记录我们对程序进行的所有操作,在录制过程中Squish还提供了如下功能:
a) 插入验证点。在自动记录的过程中我们可以对感兴趣的组件或者功能点插入对应的验证点,验证组件的数据传递是否准确以及是否调用了期望的方法,访问AUT(ApplicationUnderTest)的API是Squish强大的特性之一,这使得我们的测试变得更加灵活。
b) 创建数据驱动测试。如果用户想在AddressBook中插入大量的特征数据,手动的重复添加无形的增加了测试成本,Squish提供了数据驱动测试,可以将这些数据生成表格,创建数据驱动测试,修改测试脚本,Squish会自动的添加这些测试数据,提高了测试效率。
c) 创建BDD 测试。BDD ( B e h a v i o r - D r i v e nDevelopment)测试是Squish相对灵活的一个功能,它利用Gherkin(一种解释性的脚本)语言,针对某一特定的功能创建出一个特定Scenario,Scenario可以包含完成这一特定功能的多个步骤,在软件开发阶段,开发人员可以参考相应的步骤去开发完成这一功能,在软件测试阶段,测试人员也可以利用这些步骤来编写自己的测试用例,完成软件的GUI测试工作。
录制测试脚本

(4) 回放测试
测试脚本录制完成后,包括已经插入相应的验证点或者是数据驱动测试,我们也可以对录制脚本进行手动的修改,添加或者删减某·些测试语句,然后点击脚本回放,在回放过程中,Squish会自动检查验证点。或者自动的执行数据驱动测试,回放完成后生成像对应的测试报告,验证GUI是否符合满足对应的测试需求,从而判断出AddressBook的GUI的功能点是否达到预期。
回放结束、生成测试报告
6.结论
自动化GUI测试技术是目前保证复杂的GUI程序功能的重要手段之一。随着敏捷开发方法的盛行和产品发布周期的缩短,如何在尽可能短的时间内开发出一个可靠的、完整的GUI程序变得尤为重要,Squish使这一切变得简单可行,它是广受欢迎的跨平台、多技术融合的GUI测试工具,它对现代所有种类的GUI应用进行自动化测试,降低了测试成本、提高了测试效率,极大限度的保证了GUI功能的完备。

更多内容访问:http://www.softtest.cn/


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

相关文章

关于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】按钮,进入工程选项界…

IDEA如何创建web项目

前言: 很多朋友可能在学习java基础的时候已经熟练掌握了IDEA创建java项目的基本步骤,但随着学习技术的不断深入,不同的IDEA版本可能在项目的创建页面上出现些许的出入,下面将细讲IDEA2021版本如何创建并部署Javaweb项目。 步骤一…

JavaWeb项目介绍

web项目:通俗的说就是在服务器上跑的项目,页面是通过服务器上的程序运算所得到的结果。常见的web项目按计算机语言分,有:Java Web(Java EE)、ASP.Net、PHP项目。 JavaWeb项目:顾名思义就是后台用java代码写的web项目。…

创建web项目

打开eclipse,打开Eclipse,将Java视图切换成JavaEE的视图: 点击【File】-【New】-【Dynamic Web Project】 写入web项目名字; 向web配置Tomcat服务器,根据项目需要 后面的选项默认,点击【Next】&#xff…

springboot---建一个web项目

搭建过程 1. File->new->project 2. 选择“Spring Initializr”,jdk选择8最好,或者默认 3. 完善项目信息 组名可不做修改,项目名可做修改;最终建的项目名为:test,src->main->java下包名会是…