无侵入APP软件性能测试方法和系统转让专利

申请号 : CN202210733768.4

文献号 : CN115048309B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐浩曹拓荒吴勇梁东城薛健司徒俊贤

申请人 : 广州掌动智能科技有限公司

摘要 :

本发明公开了一种无侵入APP软件性能测试方法和系统,涉及测试和图像识别技术,本方法包括初始化步骤和测试步骤;所述初始化步骤包括:加载待测软件;对待测软件进行随机操作,获取多个软件界面截图;从各所述软件界面截图中识别可操作按钮;对软件界面进行分块,统计各分块中出现可操作按钮的概率;测试步骤包括:根据各分块对应的概率生成各分块的点击链表;在对待测软件进行性能测试时,按照所述点击链表确定每次点击的分块;随机生成坐标偏移值,根据点击的分块和坐标偏移值确定每次的点击位置。本方案在测试是无需引入图像识别模型,但是可以减少无效的点击,优化测试效果。

权利要求 :

1.一种无侵入APP软件性能测试方法,其特征在于,包括初始化步骤和测试步骤;

所述初始化步骤包括:

加载待测软件;

对待测软件进行随机操作,获取多个软件界面截图;

从各所述软件界面截图中识别可操作按钮;

对软件界面进行分块,统计各分块中出现可操作按钮的概率;

测试步骤包括:

根据各分块对应的概率生成各分块的点击链表;

在对待测软件进行性能测试时,按照所述点击链表确定每次点击的分块;

随机生成坐标偏移值,根据点击的分块和坐标偏移值确定每次的点击位置;

其中,所述对软件界面进行分块,统计各分块中出现可操作按钮的概率,具体是:将软件界面等分成若干个矩形块,统计各分块中包含的可操作按钮的累计面积;

根据各分块对应的累计面积确定各分块中出现可操作按钮的概率。

2.根据权利要求1所述的无侵入APP软件性能测试方法,其特征在于,从各所述软件界面截图中识别可操作按钮,具体是:采集软件界面中可操作按钮的样图作为训练样本;

根据多个训练样本对YOLOv4模型进行训练,得到用于识别软件界面中操作按钮的图像识别模型;

基于所述图像识别模型从各所述软件界面截图中识别可操作按钮。

3.根据权利要求1所述的无侵入APP软件性能测试方法,其特征在于,所述点击链表中以各分块的一个顶点的坐标表示该分块;所述坐标偏移值的取值范围根据分块的尺寸确定;

所述根据点击的分块和坐标偏移值确定每次的点击位置,具体是:将点击的分块对应在点击链表中的顶点坐标与所述坐标偏移值相加,得到本次的点击坐标。

4.根据权利要求1所述的无侵入APP软件性能测试方法,其特征在于,所述点击链表是循环链表,所述循环链表中设置有指针单元,所述指针单元用于指示当前的链表单元,每个链表单元中存储分块左下角的顶点坐标;

每执行一次点击操作,所述指针单元指向下一个链表单元。

5.根据权利要求1所述的无侵入APP软件性能测试方法,其特征在于,所述对待测软件进行随机操作,获取多个软件界面截图,具体包括:针对待测软件产生随机的点击操作;

在待测软件页面发生跳转时记录截取的软件界面截图;

计算获取的软件界面截图之间的相似度,将相似度大于预设值的两个软件界面截图之一删除。

6.根据权利要求1所述的无侵入APP软件性能测试方法,其特征在于,所述对待测软件进行随机操作,获取多个软件界面截图,还包括:当经历若干个点击操作后,待测软件页面未发生跳转时,重启所述待测软件,继续对待测软件进行随机操作。

7.根据权利要求1所述的无侵入APP软件性能测试方法,其特征在于,还包括以下步骤:记录所有点击对应于软件界面的坐标;

生成测试过程中软件界面被点击位置的分布图。

8.一种无侵入APP软件性能测试系统,其特征在于,包括:初始化模块,用于:

加载待测软件;

对待测软件进行随机操作,获取多个软件界面截图;

从各所述软件界面截图中识别可操作按钮;

对软件界面进行分块,统计各分块中出现可操作按钮的概率;

测试模块,用于:

根据各分块对应的概率生成各分块的点击链表;

在对待测软件进行性能测试时,按照所述点击链表确定每次点击的分块;

随机生成坐标偏移值,根据点击的分块和坐标偏移值确定每次的点击位置;

其中,所述对软件界面进行分块,统计各分块中出现可操作按钮的概率,具体是:将软件界面等分成若干个矩形块,统计各分块中包含的可操作按钮的累计面积;

根据各分块对应的累计面积确定各分块中出现可操作按钮的概率。

9.一种无侵入APP软件性能测试系统,其特征在于,包括:存储器,用于存储程序;

处理器,用于加载所述程序以执行如权利要求1‑7任一项所述的无侵入APP软件性能测试方法。

说明书 :

无侵入APP软件性能测试方法和系统

技术领域

[0001] 本发明涉及软件测试技术及图像识别技术,尤其是一种无侵入APP软件性能测试方法和系统。

背景技术

[0002] 现有的软件(如APP)测试,会涉及到性能测试,具体是通过不断操作软件来测试软件所需要占用的硬件资源。借助这样的方式,可以观测到软件所消耗的资源。
[0003] 现有性能测试工具,诸如monkey等,所采取的是随机点击画面的方案,随机点击画面的方案虽然算法简单不需要涉及图像识别模型等,但是在部分条件下,这类方案并不能点击到触发APP动作的位置,导致部分场景一直在做无效点击,不能提高软件负载。例如,在APP的内容页,尤其是文字类的内容页,页面中大部分位置都是点击后不会有响应的位置。如果采取随机点击的方法软件并不会产生响应,从而不会增加系统负载。在部分方案之中,在执行点击的时候,带入图像识别技术,识别出按钮的位置再进行点击,这类方案虽然可以避免随机点击的问题,但是图像识别模型也会占用较多的运算资源影响性能测试,此外,图像识别所导致的点击延迟较高,也未必能够使得软件达到较高的负荷。

发明内容

[0004] 本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种无侵入APP软件性能测试方法和系统,以避免特定场景有效点击率低的问题且无需在测试过程中引入图像识别模型。
[0005] 一方面,本发明实施例提供了一种无侵入APP软件性能测试方法,包括初始化步骤和测试步骤;
[0006] 所述初始化步骤包括:
[0007] 加载待测软件;
[0008] 对待测软件进行随机操作,获取多个软件界面截图;
[0009] 从各所述软件界面截图中识别可操作按钮;
[0010] 对软件界面进行分块,统计各分块中出现可操作按钮的概率;
[0011] 测试步骤包括:
[0012] 根据各分块对应的概率生成各分块的点击链表;
[0013] 在对待测软件进行性能测试时,按照所述点击链表确定每次点击的分块;
[0014] 随机生成坐标偏移值,根据点击的分块和坐标偏移值确定每次的点击位置。
[0015] 在一些实施例中,所述对软件界面进行分块,统计各分块中出现可操作按钮的概率,具体是:
[0016] 将软件界面等分成若干个矩形块,统计各分块中包含的可操作按钮的累计面积;
[0017] 根据各分块对应的累计面积确定各分块中出现可操作按钮的概率。
[0018] 在一些实施例中,从各所述软件界面截图中识别可操作按钮,具体是:
[0019] 采集软件界面中可操作按钮的样图作为训练样本;
[0020] 根据多个训练样本对YOLOv4模型进行训练,得到用于识别软件界面中操作按钮的图像识别模型;
[0021] 基于所述图像识别模型从各所述软件界面截图中识别可操作按钮。
[0022] 在一些实施例中,所述点击链表中以各分块的一个顶点的坐标表示该分块;所述坐标偏移值的取值范围根据分块的尺寸确定;
[0023] 所述根据点击的分块和坐标偏移值确定每次的点击位置,具体是:
[0024] 将点击的分块对应在点击链表中的顶点坐标与所述坐标偏移值相加,得到本次的点击坐标。
[0025] 在一些实施例中,所述点击链表是循环链表,所述循环链表中设置有指针单元,所述指针单元用于指示当前的链表单元,每个链表单元中存储分块左下角的顶点坐标;
[0026] 每执行一次点击操作,所述指针单元指向下一个链表单元。
[0027] 在一些实施例中,所述对待测软件进行随机操作,获取多个软件界面截图,具体包括:
[0028] 针对待测软件产生随机的点击操作;
[0029] 在待测软件页面发生跳转时记录截取的软件界面截图;
[0030] 计算获取的软件界面截图之间的相似度,将相似度大于预设值的两个软件界面截图之一删除。
[0031] 在一些实施例中,所述对待测软件进行随机操作,获取多个软件界面截图,还包括:
[0032] 当经历若干个点击操作后,待测软件页面未发生跳转时,重启所述待测软件,继续对待测软件进行随机操作。
[0033] 在一些实施例中,还包括以下步骤:
[0034] 记录所有点击对应于软件界面的坐标;
[0035] 生成测试过程中软件界面被点击位置的分布图。
[0036] 另一方面本申请实施例提供了一种无侵入APP软件性能测试系统,包括:
[0037] 初始化模块,用于:
[0038] 加载待测软件;
[0039] 对待测软件进行随机操作,获取多个软件界面截图;
[0040] 从各所述软件界面截图中识别可操作按钮;
[0041] 对软件界面进行分块,统计各分块中出现可操作按钮的概率;
[0042] 测试模块,用于:
[0043] 根据各分块对应的概率生成各分块的点击链表;
[0044] 在对待测软件进行性能测试时,按照所述点击链表确定每次点击的分块;
[0045] 随机生成坐标偏移值,根据点击的分块和坐标偏移值确定每次的点击位置。
[0046] 另一方面本申请实施例提供了一种无侵入APP软件性能测试系统,包括:
[0047] 存储器,用于存储程序;
[0048] 处理器,用于加载所述程序以执行所述的无侵入APP软件性能测试方法。
[0049] 本发明实施例的有益效果是设置了初始化步骤和测试步骤,在初始化步骤中加载待测软件,并对待测软件进行随机操作,获取多个软件界面截图,然后基于得到的截图识别可操作按钮,接着对软件界面进行分块,统计各分块出现可操作按钮的概率;通过这一方式,可以预先使得系统自动化地学习到待测软件可操作按钮的分布情形;在测试步骤中,根据各分块对应的概率生成各分块的点击链表;在对待测软件进行性能测试时,按照所述点击链表确定每次点击的分块;随机生成坐标偏移值,根据点击的分块和坐标偏移值确定每次的点击位置;通过这一方式,在测试阶段不用引入图像识别模型,可以降低测试程序对整体性能的影响,降低点击时的延迟,同时,通过可操作按钮的分布情形生成链表来选择点击的分块,并在分块内随机生成偏移,可以避免随机点击的方法一直在点击不能操作的区域,从而避免测试时无法测试出软件的真实情况。

附图说明

[0050] 下面结合附图和实施例对本发明做进一步的说明,其中:
[0051] 图1为本申请实施例提供的无侵入APP软件性能测试方法的流程图;
[0052] 图2为本申请实施例提供的一种软件界面分块的示意图;
[0053] 图3为本申请实施例提供的另一种软件界面分块的示意图。

具体实施方式

[0054] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
[0055] 参照图1,一种无侵入APP软件性能测试方法,包括S1、初始化步骤和S2、测试步骤;
[0056] S1、初始化步骤包括:
[0057] S101、加载待测软件。
[0058] 待测软件一般是手机APP,当然也可以是平板、PC上的软件。初始化步骤主要目的是为后续性能测试做准备。
[0059] S102、对待测软件进行随机操作,获取多个软件界面截图。
[0060] 在该步骤中,可以训练AI模型进行点击操作,也可以纯随机操作。区别在于,训练AI模型可以在每次点击界面时点中按钮,而纯随机操作则以数量来确保软件产生跳转。每次跳转的时候会截图相关的截图。在部分实施例中,也可以按一定时间间隔进行截图,在截图后只需要将相同的截图进行合并或者删除即可。
[0061] 在一些实施例中,步骤S102,所述对待测软件进行随机操作,获取多个软件界面截图,具体包括:
[0062] S1021、针对待测软件产生随机的点击操作。
[0063] S1022、在待测软件页面发生跳转时记录截取的软件界面截图。
[0064] S1023、计算获取的软件界面截图之间的相似度,将相似度大于预设值的两个软件界面截图之一删除。需要理解的是,在本步骤主要目的是为了删除相同的页面,当然,通过调节相似度的预设值可以删除一些近似的截图。这样的方式可以避免部分页面在随机操作过程中反复出现而致使可操作按钮的分布概率产生偏差。
[0065] S1024、当经历若干个点击操作后,待测软件页面未发生跳转时,重启所述待测软件,继续对待测软件进行随机操作。在现代软件设计中,虽然页面之间可以相互跳转,但是总体软件UI设计仍然遵循一定的树状结构,于是,当页面到达一定层级后,其跳转到其他页面的按钮一般会减少。有一些内容页面,其跳转其他页面的按钮比较少,为了增加获取更多不同的软件界面截图的速度,当页面经过多次随机操作后仍然发生跳转,当作软件已经进入了卡死状态、无法跳转的页面或者认其已经进入到比较深入的页面,进而导致多次随机操作仍然不能发生跳转。
[0066] S103、从各所述软件界面截图中识别可操作按钮。
[0067] 可以理解的是,可操作按钮并不限定于按钮形状的UI组件,其也可能是文字、可能是图像。通过一定得到学习训练,图像识别模型可以很好地从软件页面中区分出这些按钮的位置。
[0068] 本质上,在该步骤中会引入图像识别模型,但是其在初始化阶段,在真正性能测试时,该图像识别模型不会影响软件性能。此外,通过方案,可以将初始化阶段在上位机(电脑)完成,而测试阶段可以在设备(如手机)上完成。这样即便是不能运行相关图像识别模型的设备,也可以通过读取其画面来完成初始化步骤。
[0069] S104、对软件界面进行分块,统计各分块中出现可操作按钮的概率。
[0070] 具体是:
[0071] 将软件界面等分成若干个矩形块,统计各分块中包含的可操作按钮的累计面积;
[0072] 根据各分块对应的累计面积确定各分块中出现可操作按钮的概率。
[0073] 参照图2,可以将界面A200划分成N*M个等面积的方块,图中包括多个可操作按钮A201,可以通过统计落入某个分块中的可操作按钮的面积来衡量,对分块进行点击时触发APP响应的概率。通过多个页面的统计,可以大致分析出点击各分块时APP响应的概率。参照图3,当我们把分块细化到一定的程度后,有一些区域由于UI设计的原因,往往都不会存在可以点击的按钮。这些区域由于出现可操作按钮的概率太低,因此在后续点击中,会基本被排除。通过这一方式,在进行性能测试的时候,本方法就会倾向于点击出现可操作按钮高的位置,这样可以尽可能提高对APP随机操作的有效性。特别是在遇到有大量不能操作区域的页面时,可以快速点击到有效区域从而离开该页面。概率的计算可以是各页面累计落入各分块的可操作按钮的面积,除以分块面积和页面数的积。
[0074] S2、测试步骤包括:
[0075] S201、根据各分块对应的概率生成各分块的点击链表。
[0076] 在测试结果中,首先会获取初始化步骤的结果,即各分块对应的概率,那么这之后可以根据概率大小来产生一个有足够长度的链表,链表中链表单元对应各分块的数量比例可以按照各分块对应的概率比例相同或者相近,其中,相近是指两者的偏差在一定范围内。
[0077] S202、在对待测软件进行性能测试时,按照所述点击链表确定每次点击的分块。
[0078] 其中,所述点击链表是循环链表,所述循环链表中设置有指针单元,所述指针单元用于指示当前的链表单元,每个链表单元中存储分块左下角的顶点坐标;
[0079] 每执行一次点击操作,所述指针单元指向下一个链表单元。那么可以通过一个循环链表来确定每次点击的分块所在位置,而链表生成时,按照分块的概率生成的,因此,按照循环链表来确定需要点击的分块也遵循上述概率。
[0080] S203、随机生成坐标偏移值,根据点击的分块和坐标偏移值确定每次的点击位置。
[0081] 所述点击链表中以各分块的一个顶点的坐标表示该分块;所述坐标偏移值的取值范围根据分块的尺寸确定。
[0082] 步骤S203中,根据点击的分块和坐标偏移值确定每次的点击位置,具体是:
[0083] 将点击的分块对应在点击链表中的顶点坐标与所述坐标偏移值相加,得到本次的点击坐标。
[0084] 在分块内,可以随机生成一个偏移量,如果以界面的左下角为原点建立XY坐标,那么,只需要根据分块大小作为幅度限制生成一个随机的偏移量(包括X方向和Y方向的偏移量),就可以在分块内随机点击,例如分块大小是100*100个像素,那么偏移量在X和Y方向上的取值都是0~100。随机偏移量的产生,可以避免固定点击分块位置导致在部分页面中,该分块不可能点击到有效位置。
[0085] 在一些实施例中,从各所述软件界面截图中识别可操作按钮,具体是:
[0086] 采集软件界面中可操作按钮的样图作为训练样本;
[0087] 根据多个训练样本对YOLOv4模型进行训练,得到用于识别软件界面中操作按钮的图像识别模型;
[0088] 基于所述图像识别模型从各所述软件界面截图中识别可操作按钮。
[0089] 可见,在本实施例中,可以基于常见样式的按钮图片对YOLOv4模型进行训练,从而获得一个图像识别模型来完成初始化的工作。当然,YOLOv4模型也可以采取YOLO其他版本的模型实现。不同模型在结构上有所差异,在执行识别任务时各有特点。
[0090] 在一些实施例中,为了可以方便用户分析测试过程所点击的位置,本实施例的方法还包括以下步骤:
[0091] 记录所有点击对应于软件界面的坐标。
[0092] 生成测试过程中软件界面被点击位置的分布图。
[0093] 通过生成点击位置的分布图,用户可以大致了解在测试过程中,点击的情况是否和UI的按钮分布有明显偏差,从而发现测中的问题。例如操作中大量点击空白位置,这说明测试程序存在异常。
[0094] 本实施例公开了一种无侵入APP软件性能测试系统,包括:
[0095] 初始化模块,用于:
[0096] 加载待测软件;
[0097] 对待测软件进行随机操作,获取多个软件界面截图;
[0098] 从各所述软件界面截图中识别可操作按钮;
[0099] 对软件界面进行分块,统计各分块中出现可操作按钮的概率;
[0100] 测试模块,用于:
[0101] 根据各分块对应的概率生成各分块的点击链表;
[0102] 在对待测软件进行性能测试时,按照所述点击链表确定每次点击的分块;
[0103] 随机生成坐标偏移值,根据点击的分块和坐标偏移值确定每次的点击位置。
[0104] 本实施例公开了一种无侵入APP软件性能测试系统,包括:
[0105] 存储器,用于存储程序;
[0106] 处理器,用于加载所述程序以执行所述的无侵入APP软件性能测试方法。
[0107] 上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。此外,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。