鉴源论坛 · 观模丨面向界面的图形化测试技术

news2024/10/5 16:25:33

作者 | 熊一衡 华东师范大学软件工程学院博士

         苏亭 华东师范大学软件工程学院教授

版块 | 鉴源论坛 · 观模

01 什么是面向界面的图形化测试(GUI Testing)

图形用户界面(GUI) 是一种通过图形化方式呈现信息、数据、功能和操作的用户界面,旨在提供更加直观、友好、易用的体验,以满足用户的需求和期望。图形用户界面通常由窗口、菜单、按钮、文本框、图标、标签等组件构成,用户可以通过鼠标、键盘等输入设备进行交互和操作。GUI界面的设计和布局需要考虑用户的习惯、视觉效果、易用性等因素,以提供最佳的用户体验。

面向界面的图形化测试是一种常用的软件测试方法,旨在验证用户界面是否符合业务规范和用户需求,以及验证应用程序的功能是否正确响应用户操作,以保证应用程序的质量和稳定性。图形化测试通常在开发的中后期进行,可以确保应用程序的功能和用户界面的质量,提高用户体验,降低用户投诉和退款率。此技术可以有效地提高测试效率和测试质量,在各种应用程序的测试中得到广泛应用。

例如,如果一个用户访问京东商城的网站主页(https://www.jd.com/),他将看到导航栏、搜索栏、推荐栏和其他诸多组件。测试人员可以针对不同的关注点来对这个网页进行图形化测试。例如,点击“免费注册”按钮,网站是否能弹出相应的注册网页,包括导航、搜索、表单、购物车、支付等功能是否能正常响应用户操作。

通过图形化测试,可以发现应用中的问题和缺陷,提高应用的质量和用户体验,增强用户的满意度和忠诚度,从而提高应用的价值和竞争力。

02 常见的面向界面的图形化测试技术

2.1 基于人工的测试

基于人工的测试是一种传统的软件测试方式,测试人员通过手动操作应用程序的用户界面,模拟用户的行为和操作,来发现和报告应用的问题和缺陷。在实际应用中,应用系统级的功能性问题很大程度上是依靠人工测试找到 [1]。基于人工的图形化测试需要有经验的测试人员,能够全面地覆盖测试用例和测试场景。然而,测试的效率和准确性很大程度上受到测试人员的技能水平和经验的影响。基于人工的测试主要包括以下步骤:

(1)理解项目需求和制定测试计划:测试人员必须分析所有的需求文档,以便识别软件的预期行为和需要测试的确切内容。测试人员根据需求和规格说明书,制定测试计划和测试用例。

(2)测试环境和测试数据准备:测试人员准备测试环境和测试数据,包括安装和配置测试软件、准备测试数据、设置测试工具和设备等,以确保测试环境的一致性和稳定性。

(3)手动测试执行:测试人员按照测试计划和测试用例,手动操作应用程序的用户界面,模拟用户的行为和操作,包括点击、输入、选择、拖拽等,以验证应用程序的功能和性能,并记录测试结果和异常情况。

(4)缺陷报告和总结:当测试人员发现缺陷的时候,需要根据测试团队所制定的报告模版生成缺陷报告,包括缺陷的描述、缺陷分类、缺陷级别等等,并跟踪和确认缺陷的修复和验证。在测试完成之后,测试人员根据测试的结果生成测试报告并提交给项目团队。

基于人工的测试的优点包括:测试灵活性高,人工测试可以基于一个功能自己构建不同的测试用例,并且适应不同的程序表现;测试准确性高,自动化测试工具没有测试人员经验丰富,人工测试可以更加准确判断一个应用表现是否为一个程序错误;测试反馈及时,可以及时发现和报告软件缺陷和问题。

然而,基于人工的测试也存在一些缺点,如测试效率低,需要较长的测试时间和测试人员的工作量,当短时间内需要生成大量测试用例时,不适合用人工测试;测试成本高,相对于自动化测试,人工测试需要耗费大量人力和时间;测试可重复性差,测试结果可能受到测试人员的主观因素的影响;测试覆盖率有限,可能无法涵盖所有的测试用例和测试场景。

2.2 基于录制回放的测试

基于录制回放的测试通过记录用户在图形界面上的操作,生成测试脚本,然后回放测试脚本到目标应用上来模拟用户的操作并验证应用程序的功能。录制回放测试技术属于自动化测试的一种形式,不需要人工编写测试脚本,减少工作人员的工作量,适用于需要重复执行相同测试用例的场景,如回归测试、性能测试等。录制回放测试技术主要包括以下步骤:

(1)录制测试脚本:测试人员打开测试工具,启动录制功能,然后在应用程序的用户界面上进行操作和事件,如点击按钮、输入文本、选择菜单等,测试工具会自动捕捉和记录用户的操作和事件,并生成测试脚本。

(2)编辑测试脚本:测试人员可以对生成的测试脚本进行编辑和优化,如添加断言、调整等待时间、修改参数等,以确保测试脚本能够正确地模拟用户的操作和验证应用程序的功能和性能。

(3)回放测试脚本:测试人员启动回放功能,测试工具会自动执行测试脚本,模拟用户的操作并验证应用程序的功能和性能,同时记录测试结果和异常情况。

(4)生成测试报告:测试人员分析测试结果,包括测试通过率、测试覆盖率等,发现软件缺陷和问题,并向开发团队提供测试报告。

录制回放测试技术的优点包括:测试成本低,不需要会编写测试脚本的专业人员,测试效率高,可以根据测试人员的录制自动化生成测试脚本并自动执行测试;测试准确性高,可以模拟真实用户的操作并验证应用程序的功能和性能;测试可维护性高,可以快速修改和更新测试脚本和测试数据。

然而,录制回放测试技术也存在一些缺点,如测试脚本的可靠性和稳定性受到应用程序的变化和测试环境的影响,需要保证测试环境的一致性和稳定性;测试脚本的维护成本较高,应用程序代码和界面在不断变化,因此需要不断更新和优化测试脚本和测试数据来适应这些改变;测试覆盖度有限,依赖于测试人员的录制,测试人员一般偏向于录制一些核心功能和核心步骤。

Selenium IDE [2] 是Selenium Suite下的一款非常受欢迎的开源Web自动化测试工具,其核心功能是录制回放测试。它不需要用户有任何编程知识,只需记录用户与浏览器的交互从而可以快速地创建、执行和调试自动化测试脚本。Selenium IDE提供了一个简单的界面,可以通过简单的拖放操作和录制功能,快速创建自动化测试脚本,无需编写任何代码。它支持多种浏览器,包括Chrome、Firefo等。此外,Selenium IDE还可以导出测试脚本为多种编程语言的代码,如Java、C#和Python等。

2.3 基于模型的测试

基于模型的测试是一种自动化测试方法,它利用模型来描述被测试系统的行为和结构,从而生成测试用例,验证系统的正确性和可靠性。基于模型的测试可以提高测试效率和覆盖率,减少测试人员的工作量,适用于复杂和多变的应用程序,如嵌入式系统、软件系统、网络系统等。

基于模型的测试主要包括以下步骤:

(1)建模:测试人员使用建模工具,根据需求和规格说明书,构建被测试系统的模型,包括功能模型、状态模型、数据模型等,以描述被测试系统的行为和结构。

(2)模型分析:测试人员对模型进行分析和验证,包括模型检查、模型仿真、模型测试等,以发现和修复模型中的错误和问题。

(3)测试用例生成:测试人员利用模型生成测试用例,包括基于覆盖率的测试用例、随机测试用例、符号执行测试用例等,以覆盖模型中的所有路径和状态,并达到测试目标和测试要求。

(4)自动化测试执行:测试人员使用自动化测试工具,执行生成的测试用例,对被测试系统进行自动化测试,包括功能测试、性能测试、安全测试等,以检验被测试系统的正确性和可靠性。

(5)测试报告和总结:测试人员整理测试结果和问题报告,生成测试报告和总结,包括测试通过率、测试覆盖率、缺陷统计、测试建议等,以提供给项目团队和管理者参考和决策。

基于模型的测试的优点包括:测试效率高,可以自动生成测试用例和测试脚本,并自动执行测试;测试覆盖率高,可以覆盖模型中的所有路径和状态;测试可重复性好,可以多次执行相同的测试用例和测试脚本;测试结果准确性高,可以自动化地验证被测试系统的正确性和可靠性。

然而,基于模型的测试也存在一些缺点,如模型的建立和维护成本高,需要投入大量的人力和物力资源,并且需要建模人员非常了解待测试应用;门槛高,模型的构建需要有非常专业的建模人员,熟练使用各种专业技能 [3];模型的应用范围有限,可能无法覆盖所有的测试需求和测试场景。因此,在实际测试中,应根据测试需求和应用程序的特点,综合选择不同的测试方法和工具,以提高测试效率和质量。

Fastbot [4] 是一款由字节跳动Quality Lab研发的一款开源的基于模型的GUI测试工具,用于发现手机app中的稳定性问题。Fastbot将app的GUI信息抽象成模型中的state,将执行的动作抽象成模型中的action,然后基于构建的模型生成测试用例,并提供多种算法策略,目标是达到较高的 Activity 覆盖率及较强的问题发现能力。同时,Fastbot还支持跨平台测试,在海量设备上多机协同测试。Fastbot也利用了图像检测技术来支持较丰富的图像 UI 异常检测能力(黑白屏、图像重叠、控件遮挡等等)。

03 面向界面的图形化测试的挑战

根据statista网站上的报道,48%的移动应用测试人员将图形化界面看作主要的测试关注点[5]。面向界面的图形化测试在应用的功能和质量起着至关重要的作用,在实际应用中也存在不少挑战:

(1)代码和设计变更:鉴于应用界面以及功能的频繁更新,测试人员需要不断调整测试脚本以适应新的测试场景。

(2)错误处理:当测试复杂应用程序时,可能会遇到各种程序问题,来干扰测试进行,如何处理这些问题是一个常见的难题。

(3)测试工具与被测软件的同步问题:测试工具与测试对象之间如果同步出了问题,很可能会导致测试失败,影响测试结果的准确性 [6]。

(4)依赖于测试工具:首先需要选用合适的测试工具,并对测试的应用进行相应的定制和配置。

(5)需要专业技能:需要具备一定的编程和测试技能,才能进行测试脚本编写和自动化测试工具的配置和使用。

(6)多样性:不同的软件界面设计不同,测试人员需要熟悉各种不同的界面风格和交互方式。

04 总结

面向界面的图形化测试技术已经成为各种应用程序测试的重要手段之一。这种测试技术广泛应用于各种应用程序的测试中,特别是对于那些用户界面比较复杂、交互性比较强的应用程序,如游戏、手机app、网站等。此技术可以有效地提高测试效率和测试质量。尽管取得了巨大进展,但该测试技术仍然面临着许多挑战,学术界和工业界也在不断探索尝试各种新的技术和方法,以提高测试的效率和质量。

参考文献:

[1] Itkonen J, Mantyla M V, Lassenius C. How do testers do it? An exploratory study on manual testing practices[C]//2009 3rd International Symposium on Empirical Software Engineering and Measurement. IEEE, 2009: 494-497.

[2] Selenium IDE -https://www.selenium.dev/selenium-ide/.

[3] Dias Neto A C, Subramanyan R, Vieira M, et al. A survey on model-based testing approaches: a systematic review[C]//Proceedings of the 1st ACM international workshop on Empirical assessment of software engineering languages and technologies: held in conjunction with the 22nd IEEE/ACM International Conference on Automated Software Engineering (ASE) 2007. 2007: 31-36.

[4] Fastbot https://github.com/bytedance/Fastbot_Android.

[5] “Focus areas for testing mobile applications from 2013 to 2017” -https://www.statista.com/statistics/500605/worldwide-mobile-application-testing-focus-areas/.

[6] Alégroth E, Feldt R, Ryrholm L. Visual gui testing in practice: challenges, problemsand limitations[J]. Empirical Software Engineering, 2015, 20: 694-744. 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/455678.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一起学 WebGL:三角形加上渐变色

大家好,我是前端西瓜哥。之前教大家绘制一个红色的三角形,这次我们来画个有渐变的三角形。 本文为系列文章,请先阅读如何绘制红色三角形的文章: 《一起学 WebGL:绘制三角形》 原来的写法,颜色是在片元着色器…

移动边缘计算意味着真正的5G时代已经来临

5G的承诺尚未实现,但现在宣布其失败还为时过早。DataBank首席执行官劳尔k马丁尼克(Raul K. Martynek)表示 ,真正的5G正在通过移动边缘计算实现,而数据中心将成为其中的核心。 在美国所有主要的移动运营商都在大力宣传他们在全美范围内提供无…

STM32-移植RTT

目录 Cubemx引入RTT资源新建工程生成工程 时钟选择选单片机引脚引脚搜索快速选中取消引脚选中引脚命名IO普通模式设置 串口串口基本配置串口DMA ADC采集ADC基本应用ADC_DMA RTT-shell指令定义RTTCOM调试串口J-Link RTT调试 教程shell指令RTT外设驱动使用1--串口添加 STM32_pwm …

玩元宇宙血亏后 蓝色光标梭哈AI也挺悬

蓝色光标2022年年度报告出炉,巨亏21.75 亿元,其中20.38亿亏损因商誉、无形资产及其他资产减值造成,而在实际亏损业务中,元宇宙占比不小。 蓝色光标在元宇宙领域的布局,主要通过三家子公司实施,分别为蓝色宇…

分布式文件系统HDFS的多问多答

分布式文件系统HDFS 简述HDFS的优缺点简述HDFS的体系结构请论述HDFS中SecondaryNameNode的作用和工作原理请论述HDFS写数据原理 简述HDFS的优缺点 HDFS的优良特性: ①兼容廉价的硬件设备。在成百上千台廉价服务器中存储数据,常会出现节点失效的情况&…

从浏览器输入url到页面加载(四)协议栈和套接字以及三次握手确认对于通信的作用

前言 上一节我们说到了域名对用户记忆的优点,但是IP对于路由器的优点,所以需要有DNS服务器提供域名与IP地址的转换,还说到了在前端开发中dns-prefetch域名预解析的好处。 本小节呢,我们会说一些不常用的知识点,如协议…

【社区图书馆】读《悲惨世界》有感

文章目录 故事简介经典重现价值取向我的思想 故事简介 《悲惨世界》是一部充满了悲剧的小说,故事首先由教堂展开,然后主要围绕着主人公冉阿让进行一系列的生动形象的描写,讲述了冉阿让悲惨的一生。 主人公冉阿让是一个诚实、善良的工人&…

100天涨薪4k,从功能测试到自动化测试,我整理的3000字超全学习指南

去年6月份,由于经济压力让我下定决心进阶自动化测试,已经24的我做了3年功能测试,坐标广州薪资定格在8k,可能是生活过的太安逸,觉得8000的工资也够了,但是生活总是多变的,女朋友的突然怀孕&#…

SpringBoot 整合WebService详解

1. 概述 WebService服务端是以远程接口为主的,在Java实现的WebService技术里主要依靠CXF开发框架,而这个CXF开发框架可以直接将接口发布成WebService。 CXF又分为JAX-WS和JAX-RS,JAX-WS是基于xml协议,而JAX-RS是基于Restful风格&…

OCR卡证识别

文章目录 前言一、DBNet多分类二、步骤1.训练、训练模型推理、模型转换2.通过推理模型进行推理 三、解决思路1、查看模型2、tools/infer/predict_det.py修改3、utility.py修改 总结 前言 最近涉及到了身份证识别,为了便于匹配识别结果的属性,如姓名、身…

(二) AIGC—Stable Difussion (1)

1. 前置知识 目前通用的图像生成模型一般包含三个组件: Text Encoder 根据文字生成向量生成模型 根据向量和Noise 生成 缩小版本的图像Image Decoder 根据小分辨率图像生成大分辨率图像 2. Text Encoder 文字的Encoder对于结果的影响很大,增大Diffusio…

华为p60系列超级快充 Turbo技术,轻松搞定充电困扰!

随着手机的功能越来越丰富,电量消耗也越来越快,当手机电量剩余20%时,是否有电量焦虑。为了满足大家快速充电的需求,华为P60系列配备了超级快充Turbo充电技术,让我们手机充电更快,用的更久,从此告…

Python爬虫解读

爬虫: Python爬虫是指利用计算机程序或者脚本自动抓取网站数据的一种行为,通常是为了提取网站数据或者进行数据分析等目的。 Python 爬虫可以分为手动爬虫和自动爬虫两种。手动爬虫是指完全由人工编写代码来实现的爬虫,这种方式需要编写大量的…

ES使用小结

ES使用总结 1.查询es全部索2.根据es索引查询文档3.查看指定索引mapping文件4.默认查询总数10000条5.删除指定索引文档6.删除所有数据包括索引7.設置窗口值8. logstash简单配置Logstash配置:logstash 控制台输出 9. filebenat配置 1.查询es全部索 localhost:9200/_c…

为什么说网络安全行业是IT行业最后的红利?

前言 2023年网络安全行业的前景看起来非常乐观。根据当前的趋势和发展,一些趋势和发展可能对2023年网络安全行业产生影响: 5G技术的广泛应用:5G技术的普及将会使互联网的速度更快,同时也将带来更多的网络威胁和安全挑战。网络安全…

DHCP 给内网客户端分配ip地址

~ 为 InsideCli 客户端网络分配地址,地址池范围: 192.168.0.110-192.168.0.190/24; ~ 域名解析服务器:按照实际需求配置 DNS 服务器地址选项; ~ 网关:按照实际需求配置网关地址选项; ~ 为…

JAVAWeb08-手动实现 Tomcat 底层机制+ 自己设计 Servlet

1. 前言 先看一个小案例, 引出对 Tomcat 底层实现思考 1.1 完成小案例 ● 快速给小伙伴完成这个小案例 0. 我们准备使用 Maven 来创建一个 WEB 项目, 老师先简单给小伙伴介绍一下 Maven 是什么, 更加详细的使用,我们还会细讲, 现在先使用一把 先创建…

【MySQL】带你了解MySQL 如何学习MySQL以及MySQL的用途以及意义

目录 1 MySQL的起源和发展 1.0.1 数据库管理系统 1.1 MySQL的起源 命名由来: 1.2 MySQL的发展历程 2 什么是MySQL? 2.1 数据库 2.1.1 我们之前存储数据的格式: 2.1.2 使用数据库的目的: 2.1.3 数据库分类 2.2 SQL语句 2…

STM32-HAL-串口的printf重定向

一、C语言的格式化输出 C语言的printf是一个标准库函数,用于将格式化的数据输出到标准的输出设备(通常是终端) 基本语法: int printf(const char *format, ...);其中的第一个参数const char *format表示输出格式,后面…

Kubernetes核心组件及资源介绍

文章目录 一、Kubernetes架构二、Kubernetes核心组件三、Kubernetes核心资源四、拓展1、Service和Ingress的区别是什么?2、Replicaset和Deployment的区别是什么?3、Deployment和Statefulset的区别是什么?4、Job和Cronjob的区别是什么&#xf…