APP下载

基于命令字驱动的自动化测试框架研究

2022-08-29李庆钰翟柳李贞郝琳

现代信息科技 2022年12期
关键词:测试人员脚本控件

李庆钰,翟柳,李贞,郝琳

(北华航天工业学院,河北 廊坊 065000)

0 引 言

近年来,软件行业的发展十分迅速,人们对软件质量的要求越来越高。为了满足广大用户的需求,在软件开发过程中,迭代敏捷开发模型正在逐步替代传统的测试模型,成为当下主流的开发模型。迭代敏捷开发模型要求软件在较短的时间内有多个迭代版本,而如何保证这些版本的质量,这就需要测试人员高效地开展测试工作。

目前软件测试主要有两种方式:手工测试和自动化测试。最初,受限于软件测试技术的发展,软件测试只能从最简单的手工测试做起,软件手工测试可以在很大程度上保证软件的质量,但是随着软件产品开发规模的扩大,手工测试将会消耗大量的人力和物力,此外还十分依赖测试人员的技术能力。为了提高软件的测试效率,人们开始引入自动化测试,自动化测试主要是借助测试工具来完成测试,减少了手工测试带来的成本负担。大量的测试实践表明:自动化测试可以有效解决手工测试中存在的一些难题,首先是资源可以得到高效的利用,其次还可避免重复性的手工测试工作,可以在很大程度上缩减软件测试的时间成本,进一步提高测试效率。

虽然当前的自动化测试工具发展十分迅速,市场上陆续出现了种类繁多的自动化测试工具(如QTP、selenium、Sikulix 等),每个自动化测试工具的侧重点不尽相同,但大多数都是基于关键字驱动或数据驱动。此外,现有大部分自动化测试工具无法对软件间的通信进行测试。因此,本文针对软件测试的现状,在现有自动化测试技术的基础上提出一种基于命令字驱动的自动化测试框架,通过该框架可实现通信以及UI 界面测试。

1 自动化测试技术

1.1 数据驱动自动化测试

数据驱动自动化测试是指借助数据文件(Excel、文本及yaml 文件等)进行数据的读取,测试数据全程中无须测试人员手动输入,主要是借助数据文件来驱动和执行测试脚本,实现自动化测试。这种测试方式可以将测试数据和测试脚本分离,有助于测试人员实现对测试数据和脚本的分类管理。一个测试脚本可对应不同的测试数据,测试人员可根据测试数据执行多个测试用例。可以说,数据驱动技术大大提高了测试用例的复用率,降低了软件测试的成本。

1.2 关键字驱动自动化测试

关键字驱动是在数据驱动的基础上所做的改进与提升,汲取了其将测试数据和测试脚本分离的优点。关键字驱动基于分离的思想,分别实现了界面元素与测试对象的分离、测试描述与具体实现细节的分离以及数据与脚本的分离。通过分离界面控件和测试对象,将界面控件抽象并映射成一个个的逻辑对象,当界面控件发生变化时,只会影响它们之间的映射关系,不会对测试产生影响。通过分离具体细节和测试表述,测试人员在进行测试时,只需考虑要进行什么测试以及测试结束后可以达到什么样的效果,不需要考虑测试的每一步如何执行。通过分离数据与脚本,可方便测试人员后期对数据和脚本的独立维护。这三个分离是彼此独立的,之间的相互影响较小。这种方式相对数据驱动在提高自动化测试效率上更进了一步。

1.3 GUI 自动化测试

GUI(图形用户界面)自动化测试主要是用来进行用户交互式界面的测试,验证其界面的各个功能是否可以达到预期要求。测试人员采用自动化测试工具(如Airtest、sikuli、Selenium 等)编写测试脚本,模拟用户一系列的真实操作(如点击、输入文字以及键盘动作等),并以此实现相应的功能。执行GUI自动化测试的具体步骤主要分为三步:(1)确定具体测试的目标源,对其进行定位;(2)模拟用户进行操作(如鼠标点击、鼠标拖动等),借助测试工具录制测试脚本;(3)验证测试结果,运行录制完的测试脚本,检查被测目标是否发生状态改变(如界面的跳转等),最后与预期结果进行比较。GUI 自动化测试更加人性化,弥补了关键字驱动在用户交互式界面测试中表现出的不足,使自动化测试技术更加完善。

2 自动化测试框架研究

2.1 框架的设计思路

本测试框架在自动化测试工具Airtest的基础上进行了改进,结合关键字驱动和图像识别技术,设计并实现了基于命令字驱动的自动化测试框架。Airtest 是网易公司开源的基于图像识别技术的自动化测试工具。该框架通过抽象UI 界面测试和通信测试中的公共方法为命令字,测试人员通过调用命令字来执行测试。命令字通俗易懂,测试人员只需了解命令字的含义即可完成自动化测试脚本的录制。框架主要从UI 界面和通信测试两方面出发,UI 界面测试主要是通过对Airtest 工具底层的API 进行封装,可实现鼠标动作、键盘动作和结果断言功能;通信测试主要是通过抽象通信过程中的常见命令(发送数据、新建设备等)为关键字,将其进一步封装成函数供框架调用。

2.2 框架的整体架构

本测试框架的整体架构主要包括测试脚本编辑器模块、测试报告生成器模块、测试控件模块以及通信设置模块四个模块,各个模块之间各自独立但又彼此关联。自动化测试框架架构图如图1所示。

图1 自动化测试框架架构图

其中测试脚本编辑器模块主要借助测试控件和通信设置两个模块实现,脚本编辑语言主要是以Python 语言为主,采用Pytest 单元测试框架,测试人员可根据不同的测试场景选择并点击相应的控件,即生成可执行的测试脚本。测试脚本可单次或批量运行。测试报告生成器模块的功能实现过程为:测试报告借助Allure 开源测试报告框架,根据测试脚本实时生成测试报告,测试报告中包含每一步骤的详细操作、截图以及最后的结果验证,用户可通过报告查看测试用例的详细执行情况。测试控件模块主要提供界面交互动作和测试结果断言两项功能,其中界面交互动作主要包含键盘以及鼠标动作(例如点击、等待以及输入文本等),测试结果断言包含数字文本识别、图片匹配、测试内容匹配三部分内容。通信设置模块主要提供设备测试和设备通信数据管理两项功能,测试设备主要是指服务端设备,其中设备之间的通信数据以十六进制传输,设备及通信数据信息以XML 文件的形式存储在本地。

2.3 框架的执行流程

基于命令字驱动的自动化测试框架进行测试主要分为三大步:编辑测试脚本、运行测试脚本以及测试结果生成,具体的测试过程如图2所示。

图2 测试过程图

(1)编辑测试脚本。测试人员首先根据项目需求书完成测试用例的设计,然后在项目的根目录下创建测试脚本(其中脚本命名以及脚本中的函数名须以test 开头),最后根据测试用例依次选择命令字完成测试脚本的录制并进行保存。

(2)运行测试脚本。测试脚本编辑完成之后,测试人员选择并打开测试脚本所在的目录,通过终端命令完成测试脚本的运行。运行单个脚本可通过指定模块的命令(pytest-vs t 脚本文件名)来实现;运行多个测试脚本可通过指定目录的命令(pytest -vs 目录)来实现。

(3)测试结果生成。测试脚本运行结束后,会在相应的目录下生成测试报告和测试日志文件,测试报告以网页的形式进行展示,包含各个步骤的详细记录和执行情况,方便测试人员及时查看测试情况。测试日志则是以文本的形式进行记录。测试人员可根据需要选择和查看测试结果。

3 自动化测试系统实现

在基于命令字驱动的自动化框架的基础上完成自动化测试系统的搭建,自动化测试系统整体 界面如图3所示。

图3 自动化测试系统整体界面

自动化测试系统主要分为测试脚本管理、系统菜单栏、系统工具栏、UI 界面测试命令字、脚本编辑区、控制台以及通信管理七个部分。

其中测试脚本管理模块位于系统的最左侧,测试人员可以新增脚本、新建文件夹、删除脚本、修改脚本以及运行、停止目录中的测试脚本;系统菜单栏位于系统最顶层,主要包含查看测试报告和测试日志功能;系统工具栏位于系统菜单栏的下方,测试人员可以截图,在脚本中插入图片,保存文件,运行或停止编辑区的测试脚本;UI 界面测试命令字位于测试脚本管理的右侧,主要包含鼠标动作、键盘动作、断言以及等待,其中鼠标动作有Double Click(双击)、Right Click(右击)、Swipe(滑动)等,键盘动作包含Text(输入文本)、Keyevent(键盘动作)等,断言包含Assert Img(判断图片是否相同)、Assert File(判断文件是否存在)、Assert Ocr(判断图片中文字是否一致)等;脚本编辑区和控制台位于系统中间部分,测试人员在编辑完测试脚本后可通过控制台查看脚本执行情况;通信管理位于系统最右侧,主要包含建立连接、Send data(发送数据)、New Device(新建设备)等命令字。

4 结 论

本文在研究自动化测试技术的基础上,通过对比分析现有的自动化测试工具,发现自动化测试工具Airtest 在UI 界面上的测试效果明显优于其他工具,因此选取该工具并结合本框架的测试需求,设计并实现一种基于命令字驱动的自动化测试框架,最后在该框架的基础上实现了一个自动化测试系统。通过该系统可同时完成UI 界面和通信测试,有效提高了软件的自动化测试效率。

猜你喜欢

测试人员脚本控件
使用“填表单”微信小程序 统计信息很方便
测试工程师的“千锤百炼”之路
基于.net的用户定义验证控件的应用分析
自动推送与网站匹配的脚本
浅析软件测试中的心理学应用
绿植防辐射只是个传说,是真的吗?
举一反三新编
捕风捉影新编
利用VF6.0的Timer控件实现动画效果
愚公移山