Technical articles

工欲善其事,必先利其器——基于自动化工具的GUI测试

时间:2023-08-17

作者·陈坤

《论语·卫灵公》中写道:工欲善其事,必先利其器。讲的是工匠要想做好活,一定要先使工具精良,形容做事要做好充分的准备,准备好合适的方法和工具。对于测试工作也是如此,好的测试技术方法和测试工具,会使测试工作顺利高效,事半功倍。

随着软件技术的不断发展,软件的各个方面都发生了巨大的变化,从软件架构、开发生产过程到软件功能、用户需求,很大程度上都发生了改变。而目前许多开发团队还在使用多年前的软件测试方法,很显然已经不能满足现在用户的需求。现代的测试方法应该与技术指标和业务相关,比如用户满意度,用户转化率,用户接受程度和用户使用体验等。但是现有的测试方案还主要关注代码级别的测试,而缺少针对用户体验和界面功能方面的测试。现代测试需要处理复杂的框架结构,比如确保一个复杂的软件能够在不同的平台、设备、移动终端和云平台上正常执行。

 

近年来,越来越多的软件利用GUI来与用户进行交互,GUI软件已成为计算机软件的主流,GUI应用系统功能逐渐增多和复杂化,为用户的操作带来了极大的方便,同时,也使得GUI软件更复杂、更难以测试,随之GUI测试需求逐渐增多。由此,多种GUI功能测试技术方法应运而生。

 

GUI(Graphical User Interface,图形用户界面)是计算机软件与用户进行交互的主要方式。GUI测试是对软件的GUI界面进行测试,主要的测试对象是图形对象(包括控件)和对象的属性集合。测试内容主要有两方面:

  1、测试界面实现和界面设计的吻合情况;

  2、确认界面处理的正确性。

目前主流的GUI测试方法主要是有三种:传统完全手工测试方法、基于脚本的自动化测试方法和采用GUI自动化测试工具。

 

 

方法一:传统完全手工测试方法

采用传统完全手工测试方法,即测试人员手动进行各种边界值,异常值输入,以及异常操作等繁琐的数据交互,完成界面功能的测试。采用手工进行GUI测试一般会存在以下问题:

1) 测试成本高。大规模的GUI手工测试、回归测试以及测试结果记录和对比需要大量成本,包括人工成本和管理成本等。

2) 难以保证测试质量和测试进度。测试人员对应用软件理解不充分,测试质量难以保证。手工测试速度慢,效率低;人员、系统稳定性影响测试进度。

 

方法二:基于脚本的自动化测试方法

目前大多数测试人员进行GUI测试主要是通过基于脚本的自动化测试方法。测试人员可以通过编码,写出合适的自动化测试脚本来替代人工数据输入和点击操作,实现自动化的GUI功能测试。

 

虽然引入了基于脚本的自动化测试方法,给软件GUI测试带来了极大的好处,但是仍然存在着很多问题:

1) 对测试人员编码能力要求高。要求测试人员熟悉至少一门脚本语言。

2) 脚本维护成本高,不易管理。版本变动较大时,维护更加困难。

3) 对于跨平台的系统GUI测试更加繁琐复杂。需要调整脚本以适配不同平台。

4) 需要人工额外编码插入检查点实现功能的验证对比。

5) 测试结果记录不便。

 

方法三:采用UI自动化测试工具

目前有部分单位采用UI自动化测试工具进行GUI测试,此方法是基于工具自动生成测试脚本,运行脚本实现操作回放,自动验证和对比功能的正确性。此方法也可能存在以下问题:

1) 基于图像识别不够准确。市面上很多UI自动化测试工具都采用基于图像识别的方式进行脚本录制,此种方式识别不准确,且回放运行时依赖于坐标和分辨率,一旦出现坐标和分辨率变化的情况,就会出现异常情况。

2) 测试脚本语言有限制。很多工具会限制一两种脚本编程语言,或者自己有一套新的编程语言,用户必须使用工具所指定的编程语言,不够灵活。

 

针对以上三种方法和难点,我们希望采取某种手段,可以让测试人员从大量的手工点击输入,编写、维护脚本,结果记录等等工作中解放出来,更加专注于测试本身,更好的发现新的BUG。

 

“工欲善其事,必先利其器”,我们可以通过引入功能性能优越的GUI自动化测试工具,实现基于测试工具的GUI自动化测试,减少人工干预的过程,解决以上列出的难点,从而提高测试准确性和效率,降低测试成本。功能性能优越的GUI自动化测试工具最好具有以下功能特点:

1) 录制识别准确率高

采用基于对象识别和基于图像识别相辅相成的方式,可自动识别对象属性,也可识别包含2D/3D图像或者手工绘图等内容的应用,准确率高。

2) 无需编码

可与应用程序对象交互,捕获用户操作,录制生成自动化测试脚本。无需人工编写测试脚本,降低对测试人员编码能力的要求。

3) 灵活选择脚本语言

支持多种脚本语言,用户可根据自身脚本语言熟悉程度来选择脚本语言。

4) 脚本管理

自动化测试脚本可导入导出、编辑和回放运行,便于测试人员维护和管理。

5) 跨平台测试

支持跨平台,支持多种技术架构的应用程序GUI测试。

6) 测试高效

测试脚本回放自动执行;支持多目标环境分布式批量测试;支持无人值守运行;支持虚拟任何远程目标应用。

7) 检查点验证

支持插入多种检查点,包括属性、截图、表格、可视化检查点、图片搜索和OCR(光学字符识别)等,可在测试的过程和测试结束之后进行校验。

8) 测试结果记录

可自动记录测试结果,并生成多种格式的报告。

 

总结

综上所述,基于功能优越的GUI测试工具实现界面功能的自动化测试,可以解决传统完全手工测试方法测试成本高、测试质量和进度难以保证等问题,还可以解决基于脚本的自动化测试方法对编码能力要求高、脚本不易维护、测试结果对比和记录不便等问题,解决跨平台GUI测试复杂、界面功能验证困难等难点。

 

Squish GUI自动化测试工具是一款具有上述优势,满足上述要求的跨平台、支持多种技术的GUI自动化测试工具,是全球数千家公司的首选工具。用于自动化执行其图形界面(GUI)和人机界面(HMI)的功能回归测试和系统测试。Squish的对象感知识别和内省功能确保自动化测试正常运行,丰富、强大的IDE使用户能从多种脚本语言选择一种来编写、编辑、调试和维护测试项目。借助其跨技术、跨设备的支持,可以完成产品的端到端自动化测试。帮助用户省时省力的完成GUI自动化测试,尽早发现产品问题,降低测试成本,提高产品质量。

 

技术文章

姓名

公司

电话

邮箱