掌桥专利:专业的专利平台
掌桥专利
首页

一种界面测试系统、方法、设备集群

文献发布时间:2023-06-19 18:32:25


一种界面测试系统、方法、设备集群

技术领域

本发明涉及界面测试技术领域,具体涉及一种界面测试系统、方法、设备集群。

背景技术

当前主流移动端UI自动化框架(如Appium),都是基于页面DOM结构获取控件元素属性识别定位并操作页面控件来实现自动化的。常见的定位方式包括resource-id定位、className定位、xpath定位等等。一旦页面元素属性值发生变化,所有的定位方法及测试用例都需要重新调整,自动化脚本维护成本较高。

而基于上述的定位方法,在一些特定场景下无法定位到页面元素,如动态加载的页面由于页面元素出现的时机不确定导致无法准确定位,或者页面中通过iframe嵌套了子页面场景子页面中的元素无法定位等等;其次,页面重构或者页面元素发生变更,则需要重新修改定位元素的方法和测试用例,UI自动化维护成本较高;最后,对于移动端兼容性要求高的场景,需要覆盖上百个手机,传统的移动端UI自动化无法同时在上百个手机的集群上进行测试。

发明内容

本发明针对现有技术中的缺点,提供了一种界面测试系统、方法、设备集群,解决了现有UI测试系统中页面元素无法定位准确的问题。

为了解决上述技术问题,本发明通过下述技术方案得以解决:

一种界面测试系统,包括任务调度单元、用例集单元、设备单元、元素相关单元;

所述任务调度单元用于发布测试任务,其中,所述测试任务为定时执行任务、jenkins触发任务、手动触发任务或队列任务中的任意一种或多种;

所述用例集单元用于创建多组测试用例,基于所述测试任务组装所述测试用例为测试用例集;

所述设备单元用于接受测试端的连接,并接受所述测试用例集的兼容性测试;

所述元素相关单元用于接受所述测试用例集通过图像识别技术进行元素测试。

可选的,所述设备单元还提供所述用例集单元不同类型设备的常规操作控制方法,其中,所述不同类型设备为不同安装系统的设备、不同机型的设备和不同系统版本的设备。

可选的,所述元素相关单元还提供所述用例集单元定位元素方法和元素操作方法。

可选的,还包括Jenkins持续集成单元,所述Jenkins持续集成单元用于监听被测系统的代码更新,获取最新代码,并基于所述最新代码自动触发所述测试用例集中的自动化回归测试用例集。

可选的,所述用例集单元还用于在接收到被测系统更新后,创建多组测试更新用例,并基于所述被测系统更新的内容组装自动化回归测试用例集。

可选的,还包括测试报告单元,所述测试报告单元用于获取所有测试过程中的数据及测试用例执行结果,生成测试报告。

一种界面测试方法,所述界面测试方法应用于如上述任意一项所述的界面测试系统,所述界面测试方法,包括以下步骤:

获取测试任务,创建多组测试用例,并基于所述测试任务组装所述测试用例为测试用例集;

连接测试设备,并基于所述测试用例集对所述测试设备进行兼容性测试;

基于所述测试用例集对所述测试设备的测试页面进行元素测试;

获取所有测试过程中的数据及测试用例执行结果,生成测试报告。

可选的,基于所述测试用例集对所述测试设备的测试页面进行元素测试,包括以下步骤:

截取所述测试设备的测试页面,所述测试用例集通过图像识别技术识别测试页面内的元素控件;

所述测试用例集对所述元素控件进行功能性测试。

可选的,获取所有测试过程中的数据及测试用例执行结果,生成测试报告,包括以下步骤:

获取所述测试用例集执行过程中产生的日志以及关键节点的截图信息,其中,所述测试结果包括日志以及关键节点的截图信息;

使用测试报告模板进行渲染处理,生成测试报告。

一种设备集群,所述设备集群布置于如上述任意一项所述的界面测试系统的设备单元内。

采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:

本申请使用图像识别及比对功能来定位元素,解决了传统移动端UI自动化元素识别不准确、无法定位的问题,并且在结果断言时也支持通过图像比对进行结果断言,大大提高了测试结果的准确性,另一方面,通过兼容性测试设置,使得界面测试时能够适应于ios以及安卓两种安装系统,适用性更强。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本实施例一提出的一种界面测试系统的架构图;

图2为本实施例三提出的一种设备集群的系统架构图;

图3为本实施例三提出的一种设备集群的物理架构图。

具体实施方式

下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。

实施例一

如图1所示,一种界面测试系统,包括任务调度单元、用例集单元、设备单元、元素相关单元;任务调度单元用于发布测试任务,其中,测试任务为定时执行任务、jenkins触发任务或手动触发任务中的任意一种或多种,具体地,测试任务通过任务调度单元来进行,即任务调度器。

其中,任务调度器支持自定义定时任务,例如一些需要日常持续进行的业务巡查用例,即需要通过定时任务调度的方式实现定期巡查;也可以通过Jenkins配置,比如测试前端代码分支,当有代码提交时,则触发主链路回归测试任务;还可以通过测试的工作人员人工命令触发形式,选定特定的用例集对特定的功能进行移动端UI自动化测试,而为避免资源冲突,在测试任务发布后,会进入队列中进行排序,按照顺序发布测试任务。

用例集单元用于创建多组测试用例,基于测试任务组装测试用例为测试用例集,具体地,当任务调度器发布测试任务后,用例集单元接收该测试任务,并且,根据测试任务将测试用例组装为测试用例集,更进一步地,用例集单元主要用于创建、新增、维护移动段UI自动化测试的用例,并在测试用例的基础上,对不同应用场景和测试范围组装不同用例,生成多个用例集。

例如,将线上投放的业务页面的测试用例,组装形成定时任务用例集,从而通过定时巡检移动端核心页面业务功能是否正常;将主链路核心功能的测试用例组装成主链路回归用例集用于在每次需求发布前后,对主链路进行自动化回归,保证主链路业务线上质量;此外,由于是在移动端投放,因此在不同品牌、不同机型、不同系统版本、不同屏幕尺寸上都有可能存在兼容性问题,因此,为保证在主流机型上各项测试功能实现正常操作,需要将线上头部机型单独组装成一个机型兼容性测试用例集,用于进行机型兼容性测试。

需要说明的是,测试用例定义了要完成一个业务场景测试的所有操作流程,在测试用例中使用元素模块提供的元素操作方法构建业务流程,元素操作包括点击元素的方法click()、滑动屏幕方法swipe()、输入文本方法text()以及截图方法snapshot()等,测试用例是整套测试框架的核心,通过各单元提供的能力,将业务功能测试流程,在测试用例中一一变成测试执行代码,测试用例中测试流程主要是打开被测页面,识别被测组件,输入行为,断言测试结果。

进一步地,设备单元用于接受测试端的连接,并接受测试用例集的兼容性测试,在用例集单元完成组装测试用例集后,需要将测试端于测试设备进行连接后,才能执行测试用例集,其中,本实施例所说的测试设备指的是移动端设备,例如,手机、ipad、智能手表等,在此不做具体限定。

更进一步地,设备单元还提供用例集单元不同类型设备的常规操作控制方法,其中,不同类型设备为不同安装系统的设备、不同机型的设备和不同系统版本的设备,具体地,设备单元主要封装了对ios及Android设备的一些常规操作,例如,使用snapshot()方法实现设备截图;install()/uninstall()方法实现安装/卸载应用;start_app()/stop_app()方法启动/终止app;click()方法实现点击行为等操作,而Android设备的控制主要是通过封装adb命令来实现,ios设备的控制依赖于开源的WebDriverAgent,此外,设备单元还依赖云测平台的设备群控技术提供的设备列表,实现同时连接并操作多个设备,不同的测试用例集可以自由选择测试设备,也可以对设备集群中的设备进行启用或者禁用等操作。

元素相关单元用于接受测试用例集通过图像识别技术进行元素测试,元素相关单元还提供用例集单元定位元素方法和元素操作方法,具体地,元素相关单元主要分为元素定位和元素操作,元素定位是基于计算机视觉算法来根据图像识别能力定位元素,图像识别能力的核心是Template 图片实例,利用该图片实例,就可以通过图像识别在页面中匹配并定位到该图片以及后续做一些操作。

其中,该图片实例包含以下属性:图片文件、图片在屏幕中的位置、屏幕分辨率,从而在进行图片文件识别时,再增加图片位置以及屏幕分辨率,从而更准确地定位到图片实例,避免了传统元素定位方法不稳定的问题,而元素操作模块封装了通用的一些元素操作方法,如点击、输入、划动等。

界面测试系统还包括Jenkins持续集成单元,Jenkins持续集成单元用于监听被测系统的代码更新,获取最新代码,并基于最新代码自动触发测试用例集中的自动化回归测试用例集,用例集单元还用于在接收到被测系统更新后,创建多组测试更新用例,并基于被测系统更新的内容组装自动化回归测试用例集。

具体地,在进行界面测试时,由于被测系统的代码存在更新情况,因此,需要随时根据被测系统的代码变化而重新进行测试任务,此时,需要设置一个具备代码更新监听功能的Jenkins持续集成单元,当执行代码修改更新后,则Jenkins持续集成单元可监听到,并根据更新代码生成自动化回归测试用例集,并自动触发自动化回归测试用例集执行测试。

界面测试系统还包括测试报告单元,测试报告单元用于获取所有测试过程中的数据及测试用例执行结果,生成测试报告,具体地,测试报告单元主要是设备测试用例执行过程中产生的日志以及关键节点的截图信息,使用测试报告模板,渲染生成测试报告,其中,测试报告内容包括测试概述,执行情况,每条用例的执行过程及关键步骤截图,从而提供工作人员更直观的测试结果汇报。

实施例二

一种界面测试方法,本实施例的界面测试方法应用于如实施例一任意一项所述的界面测试系统,界面测试方法,包括以下步骤:获取测试任务,创建多组测试用例,并基于测试任务组装测试用例为测试用例集,完成测试用例集组装后,需要连接测试设备,才可基于测试用例集对测试设备进行兼容性测试。

进一步地,基于测试用例集对测试设备的测试页面进行元素测试,具体包括以下步骤:截取测试设备的测试页面,测试用例集通过图像识别技术识别测试页面内的元素控件;测试用例集对元素控件进行功能性测试。

具体地,进行界面测试时,借助图像识别技术,在创建测试用例时,只需要将待定位元素的图片包装成一个Template对象,然后传入元素图片,并设置元素图片在页面的坐标以及分辨率,提高定位的精度。当有了这个对象后,被测页面加载好后,首先是调用snapshot()方法对当前页面截图,然后在页面截图中通过图像比对去匹配需要定位的元素图片,如果匹配到,则返回对应的坐标,拿到坐标后就可以对其进行各类操作,组合成为一套业务流程,完成功能测试。

进一步地,获取所有测试过程中的数据及测试用例执行结果,生成测试报告,具体包括以下步骤:获取测试用例集执行过程中产生的日志以及关键节点的截图信息,其中,测试结果包括日志以及关键节点的截图信息;使用测试报告模板进行渲染处理,生成测试报告。

在本实施例中,以某App登录页面的测试为例进行测试步骤的说明,首先,登录页面需要测试的内容设置为,用户输入框、密码输入框以及登录控件按钮的功能测试以及登录页面在跳转后是否登录成功的页面测试,此时,首先需要获取对该App登录页面测试的测试任务,然后创建用户输入框、密码输入框、登录控件按钮的测试用例,而该测试用例则定义了要完成各自业务场景测试的所有操作,例如,用户输入框需具备输入功能,登录控件按钮需具备点击功能。

进一步地,根据测试任务为登录页面测试的任务目的,需要将用户输入框测试用例、密码输入框测试用例以及登录控件按钮测试用例进行组装,形成登录测试用例集,然后连接被测的移动手机端,通过截取登录页面,然后通过图像识别技术,识别登录页面的用户输入框、密码输入框以及登录控件按钮,从而对其进行功能测试。

另一方面,还可对测试设备进行兼容性测试,即测试出该手机iOS安装系统还是安卓系统,同时也可以测试出手机的机型以及系统版本,从而使得本实施例的测试方法具备更强的适用性,最后,为便于工作人员对测试结果的查看,还可将测试结果生成测试报告,便于工作人员查阅。

实施例三

一种设备集群,设备集群布置于如实施例一任意一项所述的界面测试系统的设备单元内,具体地,在本实施例中,该设备集群以手机集群为例,如图2所示,设备集群的系统框架为:STF包含多个独立运行的进程,这些进程之间通过ZeroMQ和Protocol Buffers通信,每个进程节点叫做“unit”,这些单元可以分别部署到不同的服务器上,通过nigix配置来转发,STF数据存储于Rethinkdb,主要是手机设备信息。

其中,设备端包括minicap和minitouch,使用minicap来捕获屏幕和使用minitouch来触发多点触控事件,并通过adb使用socket在服务端和设备端进行数据传输;服务端由多个不同且独立的,基于nodejs的微服务组成,这些服务之间是通过ZeroMQ通信,服务端可以进一步分层为Provider层(stf-provider)、application层和Client 层。

进一步地,Provider层主要负责和设备之间进行通信,通过adb来监控设备状态,当有新的设备连接或者有设备断开,则会立刻监控到,如果是新的connect设备,则provider会folck一个新的nodejs进程(stf-device), 这个进程主要负责与该设备的所有通信,需要注意的是,provider层的服务需要跑在物理机上,所有的设备需要连着这台物理机;application层则是由STF-api、STF-app和STF-auth等微服务组成,这些微服务组成了一个完整的STF;Client 层使用AngularJS实现,通过websocket进行通信。

另一方面,如图3所示,手机集群物理架构为:手机设备通过专业机架进行连接和维护,并监控手机设备的状态,需要说明的时,Android手机和ios手机需要分别安装对应的驱动程序。

STF设备管理平台集成了对手机设备集群的一些常规操作,其中,多机同屏功能是同时操控多台手机进行操作;网络代理及抓包功能是对手机设备设置网络代理,监控http请求,支持拦截请求及篡改数据,实现mock功能;温度控制模块负责监控机房及手机设备温度,并通过独立空调控制机房温度,保证手机设备处于最佳运行状态;权限控制模块对不用用户角色分配不同使用权限。

此外,手机集群系统还对外提供了一套api,包括远程控制及获取设备状态等功能,而本实施例以中的用例集单元及设备单元主要使用的就是这套api来对特定手机下发UI自动化测试指令。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

相关技术
  • 一种基于工业控制系统的集群性能测试方法
  • 用户界面的测试方法、系统、集群、介质及程序产品
  • 移动设备软件自动化测试集群系统及其测试方法
技术分类

06120115599860