界面加载时长的自动化测试方法与流程

文档序号:21847851发布日期:2020-08-14 17:15阅读:347来源:国知局
界面加载时长的自动化测试方法与流程

本发明涉及自动化测试领域,尤其是涉及界面加载时长的自动化测试方法。



背景技术:

目前,在对app加载时长的测试过程中,主要通过人工估算的方式完成。所以无论在测试阶段,还是app上线后的拨测阶段,都必须接受这种主观因素所带来的误差,而获得的结果并不能真实反映出实际的app加载时长。

比如,在一些地图类app路况加载时长的测试中,首先测试人员点击“路况”按钮,并同时开始记录当前时间,仅能精确到秒;当肉眼判断已经加载完成后,再记录当前时间,也仅能精确到秒;同时计算出当前测试活动的加载时长。另外对于测试过程中需要统计不同路况的占比情况,也是根据app显示情况大致估算。测试人员最后将当前测试时间、当前位置、当前设备类型、不同路况占比等一并录入系统内,如果需要覆盖不同终端类型、需要覆盖不同的测试地点或不同的网络类型,则该测试内容将成指数级增长,这个过程需要耗费极大的人力物力来完成,而且还不能达到精准的测试效果。



技术实现要素:

本发明旨在至少解决现有技术中存在的技术问题之一。为此,该发明实施例提出界面加载时长的自动化测试方法,对界面截屏前后图像信息进行比对,根据对比结果计算加载时长,能更精准的测试得到界面加载时长。

第一方面,本发明的一个实施例提供了界面加载时长的自动化测试方法,包括步骤:

获取界面加载前的一截屏图像,以作为第一图像;

以第一图像的截屏时间为基准时间点,按照预设时间间隔获取界面加载后的截屏图像,记为第二图像,将第二图像与第一图像的像素点进行比对,计算得到不同的像素点的总和;

若不同的像素点的总和大于预设值,按照预设时间间隔循环获取界面加载后的截屏图像,记为第n图像,将第n图像的前一时间点的截屏图像记为第n-1图像;

将第n图像与第n-1图像进行像素点的比对,若不同的像素点的总和小于预设值,获取第一图像与第n图像截屏的时间差为界面加载时长;

或者获取第一图像与第n-1图像截屏的时间差为界面加载时长。

本发明实施例的界面加载时长的自动化测试方法至少具有如下有益效果:通过自动化测试脚本,模拟人工对界面进行操作,并对界面截屏前后图像信息进行比对,更精准的测试得到界面加载时长。

根据本发明的另一些实施例的界面加载时长的自动化测试方法,适用于路况显示界面加载时长的测试,包括:

获取截屏图像及对应的像素点的rgb值;

基于像素点的rgb值的对比实现像素点对比。

根据本发明的另一些实施例的界面加载时长的自动化测试方法,用不同的rgb值表示不同的路况,按照rgb值分别计算不同的路况的像素点的总和;

获取第一图像与第n图像的不同像素点的总和记为t;

通过不同的路况的像素点的总和与t的比值设置不同的路况占比。

根据本发明的另一些实施例的界面加载时长的自动化测试方法,路况可设置为:顺畅、缓慢、拥堵、非常拥堵,计算得到顺畅占比、缓慢占比、拥堵占比和/或非常拥堵占比。通过界面加载后的统计计算可以测试准确的不同的路况占比。

第二方面,本发明的一个实施例提供了界面加载时长的自动化测试装置,包括:界面获取模块,用于获取界面的截屏图像;

界面加载时长获取模块,包括比对单元和计算单元:

界面获取模块获取界面加载前的一截屏图像,以作为第一图像,以第一图像的截屏时间为基准时间点,按照预设时间间隔获取界面加载后的截屏图像,记为第二图像;

比对单元用于将第二图像与第一图像的像素点进行比对,计算得到不同的像素点的总和;

若不同的像素点的总和大于预设值,界面获取模块按照预设时间间隔循环获取界面加载后的截屏图像,记为第n图像,将第n图像的前一时间点的截屏图像记为第n-1图像;

将第n图像与第n-1图像进行像素点的比对,若不同的像素点的总和小于预设值,计算单元用于获取第一图像与第n图像截屏的时间差为界面加载时长;

计算单元,或者获取第一图像与第n-1图像截屏的时间差为界面加载时长。

本发明实施例的界面加载时长的自动化测试装置,至少具有如下有益效果:。

根据本发明的另一些实施例的界面加载时长的自动化测试装置,适用于路况显示界面加载时长的测试,包括:

界面获取模块,还同时获取截屏图像对应的像素点的rgb值,用不同的rgb值表示不同的路况;

比对单元,还包括基于像素点的rgb值的对比实现像素点对比;

计算单元,还包括计算不同路况占比,按照rgb值分别计算不同的路况的像素点的总和;

获取第一图像与第n图像的不同像素点的总和记为t;

通过不同的路况的像素点的总和与t的比值设置不同的路况占比。

第三方面,本发明的一个实施例提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行如第一方面的方法。

附图说明

图1是本发明实施例中界面加载时长测试方法的一具体实施例流程示意图;

图2是本发明实施例中界面加载时长测试方法的另一具体实施例流程示意图;

图3是本发明实施例中界面加载时长的自动化测试方法的另一具体实施例流程示意图;

图4是本发明实施例中界面加载时长的自动化测试装置的一具体实施例结构示意图;

图5是本发明实施例中界面加载时长的自动化测试装置的另一具体实施例结构示意图。

具体实施方式

以下将结合实施例对本发明的构思及产生的技术效果进行清楚、完整地描述,以充分地理解本发明的目的、特征和效果。显然,所描述的实施例只是本发明的一部分实施例,而不是全部实施例,基于本发明的实施例,本领域的技术人员在不付出创造性劳动的前提下所获得的其他实施例,均属于本发明保护的范围。

在本发明实施例的描述中,如果涉及到“若干”,其含义是一个以上,如果涉及到“多个”,其含义是两个以上,如果涉及到“大于”、“小于”、“超过”,均应理解为不包括本数,如果涉及到“以上”、“以下”、“以内”,均应理解为包括本数。如果涉及到“第一”、“第二”,应当理解为用于区分技术特征,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。

本发明实施例的基本思想是利用界面加载时延前后界面截图中颜色的差异来实现,同时借助自动化测试工具及截图比对技术可以精确计算完成界面加载时长。

参照图1,示出了本发明实施例中界面加载时长测试方法的一具体实施例流程示意图。包括步骤:

s、101获取界面加载前的一截屏图像,以作为第一图像;

s、102界面开始加载。程序自动点击开始加载界面;

s、103获取界面加载后的截屏图像,记为第二图像,具体的以第一图像的截屏时间为基准时间点,按照预设时间间隔获取界面加载后的截屏图像,记为第二图像;

s、104将第一图像与第二图像进行比对,计算得到不同的像素点的总和;

若不同的像素点的总和大于预设值,在一些具体实施例中,预设值是按照手工测试的经验设置的,具体可设置预设值为100像素点。

s、105按照预设时间间隔获取界面加载后的截屏图像,记为第n图像,将第n图像的前一时间点的截屏图像记为第n-1图像;

s、106将第n图像与第n-1图像进行像素点的比对;

若不同的像素点的总和大于预设值,则循环获取截屏图像;

s、107若不同的像素点的总和小于预设值,计算得到界面加载时长,获取第一图像与所述第n图像截屏的时间差为界面加载时长;

或者获取第一图像与第n-1图像截屏的时间差为界面加载时长,在一些具体实施例中,由于第n-1图像截屏的变化像素点和第n图像几乎相同,所以算法按照第n-1图像截屏的时间点为准,计算获得界面加载时长。

如背景技术提到的问题,在实践中,通过人工的方式判断界面是否加载完成的方法,费时费力。

本实施例中,通过截取界面加载前的一个图像,作为比较的基础,例如,一个软件的界面处于等待状态,则对应的图像的内容不变。然后预定一个时间点,例如a时刻,在a时刻开启界面的加载,那么在a时刻后的一段时间内,界面显示的图像会一直变化,直到其内容不变。本实施例通过图像变化的趋势来判断加载是否完成。具体通过在a时刻前的一个时刻,例如a-时刻,截图得到第一图像;然后按照预定的时间间隔截取界面图像,记为第二图像,在第二图像后截取若干图像。然后根据a时刻后的若干图像与第一图像之间的区别判断是否加载完成。

其中,当第二图像与第一图像的不同的像素点的总和大于预设值,循环截取界面图像,记为第n图像,循环比对相邻两个时间间隔的图像,直到两张图像的不同的像素点的总和小于预设值,则加载完成,获取与第一图像的时间差就是界面加载时间。

参照图2,示出了本发明实施例中界面加载时长测试方法的另一具体实施例流程示意图。本发明实施例具体应用在测试移动终端页面加载时长时,首先在pc端安装uiautomator自动化测试工具,搭建测试环境,遵循java语言规范编写测试脚本;通过ide开发环境,如androidstudio将脚本文件打包编译成为对应的jar,最后通过adb进行运行,如adbshelluiautomatorruntest<jar文件名>-c<包名.类名>,运行成功后,通过usb线连接在pc侧的终端设备会自动进行地图类app的安装启动、并根据脚本控制来点击对应的按钮。

在一些具体实施例中,通过minicap对应用界面截图,包括:

在pc侧运行如下命令:

adbshellld_library_path=/data/local/tmp/data/local/tmp/minicap-p%s@%s/0

在一些具体实施例中,%s@%s/0可以为1920x1080@1920x1080/0,当前屏幕分辨率为1920*1080,截取后图像分辨率为1920*1080(可以设置截取后采用压缩分辨率,如960*540)。

运行后pc侧和终端建立的socket通道就会传输当前截取的屏幕图像,在minicap中设置截屏间隔时间,目前终端分辨率以1920*1080为准,本发明实施例的比对算法在x86架构64bitcpu下每张界面截图预估可在10ms内完成计算,,程序会按照设定的间隔时间截取屏幕图像,并发送给pc端进行图像对比。

包括步骤:

201pc通过usb线连接终端设备;

202启动自动化测试脚本完成app安装并启动;

203获取界面加载前的一截屏图像,以作为第一图像;在一些具体实施例中,截屏工具可以采用第三方工具minicap来进行截图,minicap运行于android设备端,负责设备屏幕视频的实时采集并通过socket接口发送。minicap采集屏幕的原理为:通过ndk的截屏接口按照预设时间间隔截屏并通过socket接口实时发送给pc端;

204界面开始加载,程序自动点击开始加载界面;

205获取界面加载后的截屏图像,记为第二图像,具体的以第一图像的截屏时间为基准时间点,按照预设时间间隔获取界面加载后的截屏图像,记为第二图像;

206将第一图像与第二图像进行比对,计算得到不同的像素点的总和;

若不同的像素点的总和大于预设值,在一些具体实施例中,预设值是按照手工测试的经验设置,具体可设置预设值为100。

207按照预设时间间隔获取界面加载后的截屏图像,记为第n图像,将第n图像的前一时间点的截屏图像记为第n-1图像;

208将第n图像与第n-1图像进行像素点的比对;

若不同的像素点的总和大于预设值,则循环获取截屏图像;

209若不同的像素点的总和小于预设值,计算得到界面加载时长,包括:获取第一图像与所述第n图像截屏的时间差为界面加载时长;

或者获取第一图像与第n-1图像截屏的时间差为界面加载时长,在一些具体实施例中,由于第n-1图像截屏的变化像素点和第n图像几乎相同,所以算法按照第n-1图像截屏的时间点为准,计算获得界面加载时长。

在一些实施例中,当终端app为地图类app,目前对于地图类app路况的加载时长的测试是通过人工掐表的方式来完成,精确度仅能到秒,会因为人工的主观因素带来误差,而获得的结果并不能真实反映出实际的路况加载时长,其次无法统计不同路况占比,如顺畅、缓慢、拥堵、非常拥堵的占比情况,不能更好获取路况占比的实时数据。

在一些实施例中,对地图类app中的不同路况采用不同的rgb值表示,顺畅用像素值spixels表示。在一些具体实施例中,24位bmp图像中每个像素由三个字节分别表示red、green、blue三种颜色的强度,在地图类app中对不同路况采用不同颜色表示。其中顺畅为(0,250,0)、缓慢为(245,200,50)、拥堵为(250,80,80)、非常拥堵为(155,35,35),该路况分类中在实际测试中可动态调整且需要进行参数化保存。

参照图3,示出了本发明实施例中界面加载时长的自动化测试方法的另一具体实施例流程示意图。在一些具体实例中,本发明实施例适用于路况显示界面加载时长的测试,用不同的rgb值表示不同的路况,首先准备测试环境和测试脚本,并完成启动,包括:

301pc通过usb线连接终端设备;

302启动自动化测试脚本完成app安装并启动,在一些具体实施例中,包括:自动安装地图类app,并通过uiautomator自动启动。

在一些具体实施例中,使用安装有linux(推荐ubuntu)的pc设备将终端设备通过usb线连接到usb口,其中android终端设备需要打开手机设置中的开发者选项的usb调试,首先通过执行adbdevices获得当前连接的设备的编号,然后在shell命令行下执行adbinstall-rmap.apk(map.apk为地图类app安装包);

打开androidstudio编辑器进行测试脚本的编写,导入android.jar和uiautomator.jar两个依赖包到当前project中,另外同时增加junit包到当前project中。将当前启动脚本由uiautomatortestcase基础类继承而来,uiautomator框架将自动适配连接的终端设备及android版本进行测试,在启动方法类中增加getuidevice().executeshellcommand("amstart-nmappackage/firstactivity");从而完成对应app启动工作。

303获取界面加载前的一截屏图像,以作为第一图像;同时,获取截屏图像及对应的像素点的rgb值;

在一些具体实施例中,截屏工具可以采用第三方工具minicap来进行截图,minicap运行于android设备端,负责设备屏幕视频的实时采集并通过socket接口发送。minicap采集屏幕的原理为:通过ndk的截屏接口按照预设时间间隔截屏并通过socket接口实时发送给pc端;

304界面开始加载,程序自动点击开始加载界面;

在一些具体实施中,获取界面初始屏幕信息并记录包括:

①待启动步骤完成后,app自动化展示当前位置的地图信息,且默认未打开路况信息,然后通过adbshellld_library_path=/data/local/tmp/data/local/tmp/minicap-p分辨率@分辨率/0-s获取当前屏幕的截图(其中-s参数为只截取一张图片),然后通过循环方式对该截图进行像素点的记录,并且将记录的信息存放到内存数组中保存,该过程通过编写java方法实现,即int[][]getpixelarray(inputstreamis),其中is为当前截图的文件流,如pixel[x,y],其中x为横坐标轴,y为纵坐标轴。并且通过system.currenttimemillis()记录当前时间戳记为t0,可精确到毫秒级。

②点击地图类app的“路况”按钮

记录完成初始屏幕信息后,通过uiautomator的控件查找能力进行“路况”按钮控件的获得和点击。

#首先定义“路况”按钮文字信息

stringbuttiontext="路况";

#设置待查找的路况控件为uiobject,并且查找控件

uiobjectuiobject=null;

uiobject=mdevice.findobject(new

uiselector().textstartswith(buttontext));

#如果找到后进行点击

if(uiobject!=null){

uiobject2.click();

}

对于“路况”的文字描述可在配置文件中定义,对于不同的地图类app可以通过修改配置文件灵活设置。

305获取界面加载后的截屏图像,记为第二图像,具体的以第一图像的截屏时间为基准时间点,按照预设时间间隔获取界面加载后的截屏图像,记为第二图像;

306将第一图像与第二图像进行比对基于像素点的rgb值对比实现像素点对比,计算得到不同的像素点的总和;

在一些具体实施例中,获取地图类当前屏幕信息并比对包括:

当点击动作完成后,地图开始装载路况信息。脚本触发连续截图动作:adbshellld_library_path=/data/local/tmp/data/local/tmp/minicap-p分辨率@分辨率/0,获得截图后使用getpixelarray()获取当前截屏的像素点信息,然后跟初始的截图信息进行比对,为提高比对速度,本发明使用java多线程技术进行比对,由单独的java方法intcomparepixel()完成,获得比较值记为c1,且当前时间戳为t1;然后进入下一次循环进行比较,获得比较值为c2,且当前时间戳为t2;当t2-t1<100时循环结束,计算路况加载时长为t1-t0。

若不同的像素点的总和大于预设值,在一些具体实施例中,预设值是按照手工测试的经验设置,具体可设置预设值为100。

307按照预设时间间隔获取界面加载后的截屏图像,记为第n图像,将第n图像的前一时间点的截屏图像记为第n-1图像;

308将第n图像与第n-1图像进行像素点的比对,计算得到不同的像素点的总和,同时按照rgb值分别计算不同的路况的像素点的总和,这是对变化的像素点按照不同的rgb值进行不同路况的像素点分类统计;

在一些具体实施例中,像素点差距发生较小变化时,判断为路况加载完成,从而获得t1时间戳对应的屏幕截图。

#比较t1截图和初始截图中像素点差异数量

intcomparepixelcount(inputstreamlastis)

#获取t1截图中不同路况的像素点数量

intgetscreentrafficcount(inputstreamlastis,intrgb)

通过获得的不同路况的像素点和总的变化像素点进行统计,从而获得不同路况的占比情况,最后将所有统计信息存到测试结果文件中,使用测试步骤getuidevice().executeshellcommand("amforce-stop地图app包名");退出应用。

若不同的像素点的总和大于预设值,则循环获取截屏图像;

309若不同的像素点的总和小于预设值,计算得到界面加载时长及不同路况的占比,包括:获取第一图像与所述第n图像截屏的时间差为界面加载时长,同时获取第一图像与第n图像的不同像素点的总和记为t,通过不同的路况的像素点的总和与t的比值设置不同的路况占比,路况可设置为:顺畅、缓慢、拥堵、非常拥堵,计算得到顺畅占比、缓慢占比、拥堵占比和/或非常拥堵占比;

或者获取第一图像与第n-1图像截屏的时间差为界面加载时长,在一些具体实施例中,由于第n-1图像截屏的变化像素点和第n图像几乎相同,所以算法按照第n-1图像截屏的时间点为准,计算获得界面加载时长。

参照图4,示出了本发明实施例中界面加载时长的自动化测试装置的一具体实施例结构意图。具体为:

界面加载时长的自动化测试装置400包括:

界面获取模块410,用于获取界面的截屏图像;

界面加载时长获取模块420,包括比对单元421和计算单元422:

界面获取模块410获取界面加载前的一截屏图像,以作为第一图像,以第一图像的截屏时间为基准时间点,按照预设时间间隔获取界面加载后的截屏图像,记为第二图像,比对421模块用于将所述第二图像与所述第一图像的像素点进行比对,计算单元422计算得到不同的像素点的总和,若所述不同的像素点的总和大于预设值,界面获取模块410按照所述预设时间间隔循环获取界面加载后的截屏图像,记为第n图像,将所述第n图像的前一时间点的截屏图像记为第n-1图像;将所述第n图像与所述第n-1图像进行像素点的比对,若所述不同的像素点的总和小于预设值,计算单元422用于获取所述第一图像与所述第n图像截屏的时间差为界面加载时长;

计算单元422,或者获取所述第一图像与所述第n-1图像截屏的时间差为界面加载时长。

参照图5,示出了本发明实施例中界面加载时长的自动化测试装置的另一具体实施例结构示意图。包括:

界面获取模块510,用于获取界面的截屏图像的同时获取截屏图像对应的像素点的rgb值,用不同的rgb值表示不同的路况;

界面获取模块510获取界面加载前的一截屏图像,以作为第一图像,以第一图像的截屏时间为基准时间点,按照预设时间间隔获取界面加载后的截屏图像,记为第二图像,比对521模块用于将所述第二图像与所述第一图像的像素点进行比对,计算单元522计算得到不同的像素点的总和,若所述不同的像素点的总和大于预设值,界面获取模块510按照所述预设时间间隔循环获取界面加载后的截屏图像,记为第n图像,将所述第n图像的前一时间点的截屏图像记为第n-1图像;将所述第n图像与所述第n-1图像进行像素点的比对,若所述不同的像素点的总和小于预设值,计算单元522用于获取所述第一图像与所述第n图像截屏的时间差为界面加载时长;

界面加载时长获取模块520,包括比对单元521和计算单元522:

比对单元521,还包括基于像素点的rgb值的对比实现像素点对比;

计算单元522,还包括计算不同路况占比,按照rgb值分别计算不同的路况的像素点的总和;

获取第一图像与第n图像的不同像素点的总和记为t;

通过所述不同的路况的像素点的总和与t的比值设置不同的路况占比。

本发明的一个实施例提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行如上所述的方法。

以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。此外,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。

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