移动应用的自动化测试方法、系统、存储介质以及设备与流程

文档序号:17695762发布日期:2019-05-17 21:30阅读:174来源:国知局
移动应用的自动化测试方法、系统、存储介质以及设备与流程

本发明涉及移动应用的测试领域,尤其涉及一种移动应用的自动化测试方法、系统、存储介质以及设备。



背景技术:

随着移动通信技术的迅猛发展,移动互联网成为了人们生活中不可或缺的组成部分,移动应用也得到了广泛的使用。随着移动应用的功能日益丰富和复杂,产品迭代速度的日益加快,对移动应用的质量也提出了更高的要求。

自动化测试作为一种可快速完成相关的功能、回归和稳定性的测试,能有效地提高测试效率,提升测试覆盖率的测试方法,因而得到了广泛应用。其中一些自动化测试方法是采用嵌入式侵入的测试方案,即在移动应用的开发过程中写入一些测试程序,通过这些测试程序调用测试框架来实现对移动应用的测试。

发明人在实现本发明的过程中,发现在移动应用的开发过程中写入一些测试程序的方案,增加了开发人员的工作量,没有贴合移动应用的实际使用环境。



技术实现要素:

基于此,本发明的目的在于,提供一种移动应用的自动化测试方法,其具有减少开发人员的工作量,使自动化测试更贴合用户实际使用环境的优点。

一种移动应用的自动化测试方法,包括如下步骤:

初始化自动化测试工具的运行环境,运行自动化测试工具,并以shell身份权限运行脚本引擎,且建立所述脚本引擎与所述自动化测试工具的通信连接;

接收自动化测试指令,并根据所述自动化测试指令获取lua测试脚本和待测试应用;

安装并运行待测试移动应用,且所述自动化测试工具根据所述自动化测试指令通知所述脚本引擎执行所述lua测试脚本。

本发明通过自动化测试工具接收所述自动化测试指令,并通过所述自动化测试工具通知脚本引擎,使脚本引擎以shell身份权限执行lua测试脚本,从而无需在开发过程中嵌入测试程序,减少了开发人员的工作量,可以高权限进行各种自动化测试,而且支持跨应用的自动化测试,可使自动化测试更贴合用户实际使用环境。进一步地,通过lua测试脚本,可方便进行测试的扩展,进而扩展了测试的性能,而且提高了测试的兼容性和稳定性。

在一个实施例中,所述测试脚本存储有按键区域的特征点集合的数据信息;所述特征点集合为在所述按键区域中选定的多个像素点;所述数据信息包括各特征点的rgb值、各特征点的rgb值的比对范围、各特征点的绝对坐标值、除第一个特征点外的其他特征点相对第一个特征点的坐标偏移差值、以及按键区域的确定方式;所述自动化测试工具根据所述自动化测试指令通知所述脚本引擎执行所述lua测试脚本的步骤,包括:根据所述测试脚本存储的按键区域的特征点集合的数据信息,定位按键区域的位置,模拟用户按键,并获取按键操作。

在一个实施例中,所述根据所述测试脚本存储的按键区域的特征点集合的数据信息,定位按键区域的位置的步骤,包括:

对当前待测试移动应用的屏幕状态进行截屏,获得截屏图片;

根据设定的检索方向,确定搜索路径;

根据所述搜索路径依次遍历截屏图片,确定所述按键区域的特征点集合中第一个特征点的rgb值的比对范围内的像素点;

以截屏图片左上角为原点建立x-y坐标系,获取所述像素点的绝对坐标值,并根据测试脚本中其他特征点的坐标偏移差值,确定与其他特征点的绝对值坐标分别对应一致的像素点;比对各像素点的rgb值是否在对应的特征点的rgb值比对范围内,若是,则根据预设的按键区域的确定方式,获得所述按键区域的位置,否则,反馈定位失败的测试结果。

通过截屏方式定位按键,提高了识别效率低,可支持非原生界面测试。

在一个实施例中,所述根据预设的按键区域的确定方式,获得所述按键区域的位置的步骤,包括:

以第一个特征点对应的像素点的绝对值坐标作为中心,根据预设的长宽值,确定获得一长方形区域,并将所述长方形区域作为所述按键区域的位置;或;

以各特征点对应的像素点为边缘点确定的区域作为按键区域的位置。

在一个实施例中,所述测试脚本还存储有按键区域的文字信息,在根据预设的按键区域的确定方式,获得所述按键区域的位置之后,还包括如下步骤:

获取所述按键区域的文字信息,并将所述文字信息与测试脚本内存储的按键区域的文字信息进行比对,判断是否与存储的文字信息一致,若一致,则反馈所述按键区域的位置,否则,反馈定位失败的测试结果。

通过比对所述按键区域内的文字信息,可更加准确地获得按键信息的位置。

在一个实施例中,所述测试脚本中各特征点的rgb值的比对范围的确定方式,包括如下步骤:

获取各特征点的rgb值以及设定的偏色值;

以特征点的rgb值与设定的偏色值的差值作为该特征点的rgb值的比对范围中的最小值,以特征点的rgb值与设定的偏色值相加后的值作为该特征点的rgb值的比对范围中的最大值,确定各特征点的rgb值的比对范围。

在一个实施例中,所述自动化测试工具根据所述自动化测试指令通知所述脚本引擎执行所述lua测试脚本的步骤,包括:模拟用户输入中文文本,显示输入的中文文本信息;其中,所述模拟用户输入中文文本,显示输入的中文文本信息的步骤,包括:

模拟用户点击待测试应用的输入编辑框,并在所述输入编辑框中获取到输入焦点,且触发输入法切换指令;

根据所述输入法切换指令,记录当前采用的输入法,并切换到测试脚本实现的中文输入法,且存储待输入的中文文本信息;

在中文输入法启动初始化回调时,取出存储的所述中文文本信息,并将所述中文文本信息输出显示到所述输入编辑框中;

将当前的中文输入法切换回记录的输入法。

本发明还提供一种移动应用的自动化测试系统,包括:

初始化模块,用于初始化自动化测试工具的运行环境,运行自动化测试工具,并以shell身份权限运行脚本引擎,且建立所述脚本引擎与所述自动化测试工具的通信连接;

测试指令获取模块,用于接收自动化测试指令,并根据所述自动化测试指令获取lua测试脚本和待测试应用;

lua测试脚本执行模块,用于安装并运行待测试移动应用,且所述自动化测试工具根据所述自动化测试指令通知所述脚本引擎执行所述lua测试脚本。

本发明通过自动化测试工具接收所述自动化测试指令,并通过所述自动化测试工具通知脚本引擎,使脚本引擎以shell身份权限执行lua测试脚本,从而无需在开发过程中嵌入测试程序,减少了开发人员的工作量,可以高权限进行各种自动化测试,而且支持跨应用的自动化测试,可使自动化测试更贴合用户实际使用环境。进一步地,通过lua测试脚本,可方便进行测试的扩展,进而扩展了测试的性能,而且提高了测试的兼容性和稳定性。

本发明还提供一种计算机可读存储介质,其上储存有计算机程序,该计算机程序被处理器执行时实现如上述任意一项所述的移动应用的自动化测试方法的步骤。

本发明还提供一种计算机设备,包括储存器、处理器以及储存在所述储存器中并可被所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述任意一项所述的移动应用的自动化测试方法的步骤。

为了更好地理解和实施,下面结合附图详细说明本发明。

附图说明

图1为本发明实施例中移动应用的自动化测试方法的流程图;

图2为本发明实施例中定位按键的流程图;

图3为本发明实施例中模拟用户输入中文文本的流程图;

图4为本发明实施例中移动应用的自动化测试系统的原理框图;

图5为本发明实施例中lua测试脚本执行模块用于定位按键的原理框图;

图6为本发明实施例中lua测试脚本执行模块用于模拟用户输入中文文本的流程图。

具体实施方式

请参阅图1,本发明的移动应用的自动化测试方法,包括如下步骤:

步骤s1:初始化自动化测试工具的运行环境,运行自动化测试工具,并以shell身份权限运行脚本引擎,且建立所述脚本引擎与所述自动化测试工具的通信连接。

其中,shell又称壳,是指“提供使用者使用界面”的软件,其实质是一种命令解析器,它接收用户命令,然后调用相应的应用程序。shell身份权限为在不需要破坏系统环境情况下能获取到的较高权限,以执行自动化测试中使用到的高权限操作,如脚本引擎脚本引擎执行模拟用户触摸点击、模拟用户输入事件、对手机屏幕截图、跨应用模拟用户操作等高权限操作。

其中,自动化测试工具以前台service形式运行,运行在androidcontext这个抽象类的运行环境下,以提供对android系统功能的调用。其中,所述脚本引擎进程和自动化测试工具通过socket连接通信,使用轻量级的远程程序调用协议(json-rpc)协议传输相关数据,两者相互配合以完整提供测试脚本运行所需的功能。

所述初始化自动化测试工具的运行环境,运行自动化测试工具,并以shell身份权限运行或执行脚本引擎,且建立所述脚本引擎与所述自动化测试工具的通信连接的步骤,包括:

步骤s11:通过测试手机打开开发者usb调试模式,通过usb线连接到pc端;

步骤s12:通过adbpush命令上传运行环境部署脚本到测试手机上;

步骤s13:通过adbshell命令进入shell后,执行运行环境部署脚本,以初始化自动化测试工具的运行环境;

步骤s14:自动化测试工具以前台service形式运行;

步骤s15:运行环境部署脚本执行系统nohup命令,通过app_process/app_process32,以shell进程身份后台启动脚本引擎;

步骤s16:自动化测试工具与脚本引擎使用json-rpc协议,并基于socket建立数据传输通信。

步骤s2:接收自动化测试指令,并根据所述自动化测试指令获取测试脚本和待测试应用。

步骤s3:安装并运行待测试移动应用,且所述自动化测试工具根据所述自动化测试指令通知所述脚本引擎执行所述lua测试脚本。

其中,lua测试脚本使用标准的模块管理库,其包括由基础功能模块和可选功能模块组成的内置功能模块,其中,基础功能模块构成脚本引擎的核心功能,脚本引擎启动时提前加载,而可选功能模块为扩展模块,如ocr、socket等辅助功能模块,通过采用require()函数可实现各功能模块的按需加载。另外,利用android系统底层命令和架构(framework)层公开/隐藏应用程序编程接口(applicationprogramminginterfac,简称api),可扩展适合android系统运行的测试功能接口,通过调用测试功能接口能自动调用底层对应的扩展模块。此外,还根据测试需求,利用lua扩展接口和按需加载机制,基于c/c++扩展功能模块,进而在执行脚本时加载,实现测试功能的插件化,使测试脚本提供了较好的系统兼容性和稳定性以及更好的定制性、扩展性和插件化,可以根据不同的测试任务下发具体所需的测试功能插件,解决了一半测试框架扩展能力差、或不支持扩展、或只能基于测试框架作简单封装的问题

本发明通过自动化测试工具接收所述自动化测试指令,并通过所述自动化测试工具通知脚本引擎,使脚本引擎以shell身份权限执行lua测试脚本,从而无需在开发过程中嵌入测试程序,减少了开发人员的工作量,可以高权限进行各种自动化测试,而且支持跨应用的自动化测试,可使自动化测试更贴合用户实际使用环境。进一步地,通过lua测试脚本,可方便进行测试的扩展,进而扩展了测试的性能,而且提高了测试的兼容性和稳定性。

在一个实施例中,所述测试脚本存储有按键区域的特征点集合的数据信息;所述特征点集合为在所述按键区域中选定的多个像素点;所述数据信息包括各特征点的rgb值、各特征点的rgb值的比对范围、各特征点的绝对坐标值、除第一个特征点外的其他特征点相对第一个特征点的坐标偏移差值、以及按键区域的确定方式。在一个实施例中,所述测试脚本中各特征点的rgb值的比对范围的确定方式,包括如下步骤:获取各特征点的rgb值以及设定的偏色值;以特征点的rgb值与设定的偏色值的差值作为该特征点的rgb值的比对范围中的最小值,以特征点的rgb值与设定的偏色值相加后的值作为该特征点的rgb值的比对范围中的最大值,确定各特征点的rgb值的比对范围。例如,若其中一个特征点的rgb值为{r,g,b},设定的偏色值为{diffr,diffg,diffb},则该特征点的rgb值的比对范围值为:{r-diffr,g-diffg,b-diffb}~{r+diffr,g+diffg,b+diffb}。在一个实施例中,所述测试脚本中确定第一个特征点外的其他特征点相对第一个特征点的坐标偏移差值的步骤,包括:对待测试应用的屏幕状态截屏,获得截屏图片;在截屏图片中选定按键区域,并在按键区域内选定多个像素点作为特征点集合;以选定的截屏图片的左上角为原点建立x-y坐标系,确定特征点集合中各个特征点的绝对值坐标值;将特征点集合中除第一个特征点外的其他特征点与第一个特征点的差值作为对应特征点的坐标偏移差值。例如,若特征点集合中各特征点的绝对值坐标分别为{x1,y1};{x2,y2};{x3,y3};其中,{x1,y1}为第一个特征点的绝对值坐标,则除第一个特征点外的其他特征点相对第一个特征点的坐标偏移差值分别为{x2-x1,y2-y1};{x3-x1,y3-y1}。在一个实施例中,所述文字信息为txt格式的文字。

请参阅图2,所述自动化测试工具根据所述自动化测试指令通知所述脚本引擎执行所述lua测试脚本的步骤,包括:根据所述测试脚本存储的按键区域的特征点集合的数据信息,定位按键区域的位置,模拟用户按键,并获取按键操作。为解决在自动化测试中,只能通过控件识别定位按键,导致识别效率低,不支持非原生界面测试的问题,在一个实施例中,所述定位按键位置的步骤,包括:

步骤s311:对当前待测试移动应用的屏幕状态进行截屏,获得截屏图片。

步骤s312:根据设定的检索方向,确定搜索路径。

在一个实施例中,所述检索方向为先水平方向后垂直方向或先垂直方向后水平方向、从左到右或从右到左、以及从上到下或从下到上三个维度确定的检索方向。

步骤s313:根据所述搜索路径依次遍历截屏图片,确定所述按键区域的特征点集合中第一个特征点的rgb值的比对范围内的像素点。

步骤s314:以截屏图片左上角为原点建立x-y坐标系,获取所述像素点的绝对坐标值,并根据测试脚本中其他特征点的坐标偏移差值,确定与其他特征点的绝对值坐标分别对应一致的像素点;比对各像素点的rgb值是否在对应的特征点的rgb值比对范围内,若是,则根据预设的按键区域的确定方式,获得所述按键区域的位置,否则,反馈定位失败的测试结果。

通过截屏方式定位按键,提高了识别效率低,可支持非原生界面测试。

在一个实施例中,所述根据预设的按键区域的确定方式,获得所述按键区域的位置的步骤,包括:

以第一个特征点对应的像素点的绝对值坐标作为中心,根据预设的长宽值,确定获得一长方形区域,并将所述长方形区域作为所述按键区域的位置;或;

以各特征点对应的像素点为边缘点确定的区域作为按键区域的位置。

为更加准确地确定所述按键区域的位置,在一个实施例中,所述测试脚本还存储有按键区域的文字信息,在根据预设的按键区域的确定方式,获得所述按键区域的位置之后,还包括如下步骤:

获取所述按键区域的文字信息,并将所述文字信息与测试脚本内存储的按键区域的文字信息进行比对,判断是否与存储的文字信息一致,若一致,则反馈所述按键区域的位置,否则,反馈定位失败的测试结果。

在一个实施例中,所述获取所述特征区域的文字信息的方式为通过ocr文本识别技术进行识别。在一个实施例中,调用screencap命令截取当前屏幕,并通过命令行管道直接获取截图片数据流,避免文件io操作,提升了截图效率。

请参阅图3,为解决在自动化测试中,通过执行inputtext的系统底层命令来实现跨应用文字输入时,不支持中文输入的问题,在一个实施例中,所述自动化测试工具根据所述自动化测试指令通知所述脚本引擎执行所述lua测试脚本的步骤,包括:模拟用户输入中文文本,显示输入的中文文本信息;其中,所述模拟用户输入中文文本,显示输入的中文文本信息的步骤,包括:

步骤s321:模拟用户点击待测试应用的输入编辑框,并在所述输入编辑框中获取到输入焦点,且触发输入法切换指令。

步骤s322:根据所述输入法切换指令,记录当前采用的输入法,并切换到测试脚本实现的中文输入法,且存储待输入的中文文本信息。

步骤s323:在中文输入法启动初始化回调时,取出存储的所述中文文本信息,并将所述中文文本信息输出显示到所述输入编辑框中。

步骤s324:将当前的中文输入法切换回记录的输入法。

请参阅图4,本发明还提供一种移动应用的自动化测试系统1,包括:

初始化模块11,用于初始化自动化测试工具的运行环境,运行自动化测试工具,并以shell身份权限运行脚本引擎,且建立所述脚本引擎与所述自动化测试工具的通信连接。

测试指令获取模块12,用于接收自动化测试指令,并根据所述自动化测试指令获取lua测试脚本和待测试应用。

lua测试脚本执行模块13,用于安装并运行待测试移动应用,且所述自动化测试工具根据所述自动化测试指令通知所述脚本引擎执行所述lua测试脚本。

本发明通过自动化测试工具接收所述自动化测试指令,并通过所述自动化测试工具通知脚本引擎,使脚本引擎以shell身份权限执行lua测试脚本,从而无需在开发过程中嵌入测试程序,减少了开发人员的工作量,可以高权限进行各种自动化测试,而且支持跨应用的自动化测试,可使自动化测试更贴合用户实际使用环境。进一步地,通过lua测试脚本,可方便进行测试的扩展,进而扩展了测试的性能,而且提高了测试的兼容性和稳定性。

在一个实施例中,所述测试脚本存储有按键区域的特征点集合的数据信息;所述特征点集合为在所述按键区域中选定的多个像素点;所述数据信息包括各特征点的rgb值、各特征点的rgb值的比对范围、各特征点的绝对坐标值、除第一个特征点外的其他特征点相对第一个特征点的坐标偏移差值、以及按键区域的确定方式。在一个实施例中,所述测试脚本中各特征点的rgb值的比对范围的确定方式,包括如下步骤:获取各特征点的rgb值以及设定的偏色值;以特征点的rgb值与设定的偏色值的差值作为该特征点的rgb值的比对范围中的最小值,以特征点的rgb值与设定的偏色值相加后的值作为该特征点的rgb值的比对范围中的最大值,确定各特征点的rgb值的比对范围。例如,若其中一个特征点的rgb值为{r,g,b},设定的偏色值为{diffr,diffg,diffb},则该特征点的rgb值的比对范围值为:{r-diffr,g-diffg,b-diffb}~{r+diffr,g+diffg,b+diffb}。在一个实施例中,所述测试脚本中确定第一个特征点外的其他特征点相对第一个特征点的坐标偏移差值的步骤,包括:对待测试应用的屏幕状态截屏,获得截屏图片;在截屏图片中选定按键区域,并在按键区域内选定多个像素点作为特征点集合;以选定的截屏图片的左上角为原点建立x-y坐标系,确定特征点集合中各个特征点的绝对值坐标值;将特征点集合中除第一个特征点外的其他特征点与第一个特征点的差值作为对应特征点的坐标偏移差值。例如,若特征点集合中各特征点的绝对值坐标分别为{x1,y1};{x2,y2};{x3,y3};其中,{x1,y1}为第一个特征点的绝对值坐标,则除第一个特征点外的其他特征点相对第一个特征点的坐标偏移差值分别为{x2-x1,y2-y1};{x3-x1,y3-y1}。在一个实施例中,所述文字信息为txt格式的文字。

请参阅图5,所述lua测试脚本执行模块3,具体用于:根据所述测试脚本存储的按键区域的特征点集合的数据信息,定位按键区域的位置,模拟用户按键,并获取按键操作。为解决在自动化测试中,只能通过控件识别定位按键,导致识别效率低,不支持非原生界面测试的问题,在一个实施例中,所述lua测试脚本执行模块13用于定位按键区域的位置定位按键位置时,还包括:

截屏模块1311,用于对当前待测试移动应用的屏幕状态进行截屏,获得截屏图片。

搜索路径确定模块1312,用于根据设定的检索方向,确定搜索路径。

在一个实施例中,所述检索方向为先水平方向后垂直方向或先垂直方向后水平方向、从左到右或从右到左、以及从上到下或从下到上三个维度确定的检索方向。

像素点获取模块1313,用于根据所述搜索路径依次遍历截屏图片,确定所述按键区域的特征点集合中第一个特征点的rgb值的比对范围内的像素点。

按键区域确定模块1314,用于以截屏图片左上角为原点建立x-y坐标系,获取所述像素点的绝对坐标值,并根据测试脚本中其他特征点的坐标偏移差值,确定与其他特征点的绝对值坐标分别对应一致的像素点;比对各像素点的rgb值是否在对应的特征点的rgb值比对范围内,若是,则根据预设的按键区域的确定方式,获得所述按键区域的位置,否则,反馈定位失败的测试结果。

在一个实施例中,所述按键区域确定模块用于根据预设的按键区域的确定方式,获得所述按键区域的位置时,具体用于:

以第一个特征点对应的像素点的绝对值坐标作为中心,根据预设的长宽值,确定获得一长方形区域,并将所述长方形区域作为所述按键区域的位置;或;

以各特征点对应的像素点为边缘点确定的区域作为按键区域的位置。

为更加准确地确定所述按键区域的位置,在一个实施例中,所述测试脚本还存储有按键区域的文字信息,所述lua测试脚本执行模块3用于根据预设的按键区域的确定方式,获得所述按键区域的位置之后,还包括:

文字信息比对模块,用于获取所述按键区域的文字信息,并将所述文字信息与测试脚本内存储的按键区域的文字信息进行比对,判断是否与存储的文字信息一致,若一致,则反馈所述按键区域的位置,否则,反馈定位失败的测试结果。

请参阅图6,为解决在自动化测试中,通过执行inputtext的系统底层命令来实现跨应用文字输入时,不支持中文输入的问题,在一个实施例中,所述lua测试脚本执行模块3,还具体用于:模拟用户输入中文文本,显示输入的中文文本信息;其中,所述lua测试脚本执行模块3用于模拟用户输入中文文本时,包括:

输入法切换指令触发模块1321,用于模拟用户点击待测试应用的输入编辑框,并在所述输入编辑框中获取到输入焦点,且触发输入法切换指令。

存储模块1322,用于根据所述输入法切换指令,记录当前采用的输入法,并切换到测试脚本实现的中文输入法,且存储待输入的中文文本信息。

显示模块1323,用于在中文输入法启动初始化回调时,取出存储的所述中文文本信息,并将所述中文文本信息输出显示到所述输入编辑框中。

切换模块1324,用于将当前的中文输入法切换回记录的输入法。

本发明还提供一种计算机可读存储介质,其上储存有计算机程序,该计算机程序被处理器执行时实现如上述任意一项所述的移动应用的自动化测试方法的步骤。

本发明可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。计算机可读储存介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

本发明还提供一种计算机设备,包括储存器、处理器以及储存在所述储存器中并可被所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述任意一项所述的移动应用的自动化测试方法的步骤。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1