CN110196799B - 一种客户端性能测试方法、装置及终端 - Google Patents
一种客户端性能测试方法、装置及终端 Download PDFInfo
- Publication number
- CN110196799B CN110196799B CN201810156919.8A CN201810156919A CN110196799B CN 110196799 B CN110196799 B CN 110196799B CN 201810156919 A CN201810156919 A CN 201810156919A CN 110196799 B CN110196799 B CN 110196799B
- Authority
- CN
- China
- Prior art keywords
- test object
- frame
- action
- client
- test
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种客户端性能测试方法、装置以及终端。所述方法包括:创建测试对象用例,所述测试对象用例包含计数函数;关联所述测试对象用例与测试对象的动作,以使得所述计数函数随所述测试对象的动作而计数;调用所述计数函数的计数值以计算所述客户端性能。在无需其他工具辅助的情况下,可以在操作系统不进行ROOT/越狱的情况下实现终端性能的测试。尤其可以对于无法ROOT的手机型号的性能参数进行测试,或者对即使进行越狱也无法测量的参数进行测量。
Description
技术领域
本发明涉及测试领域,尤其涉及一种客户端性能测试方法及装置。
背景技术
随着移动互联网的不断发展,客户端作为人机交流的平台,其性能越来越被用户和开发者重视。然而,目前公众正在使用的移动终端系统型号有多种,例如,IOS系统包含多个系统版本,Iphone手机的硬件也包含Iphone5、Iphone5c、Iphone5s、Iphone6、Iphone6s、Iphone6splus、Iphone7、Iphone7plus、Iphone8、Iphone8splus、IphoneX等多个型号。安卓系统则由于有多个厂商,其操作系统和硬件更加多样化,包括华为、三星、OPPO、VIVO、小米等等,不同的手机厂商对于手机系统的设置和开放权限不同,也会导致对客户端的进行测试的难度加大。就主流测试方法而言,需要获取操作系统的系统级权限,需要对IOS系统进行越狱,对安卓系统进行ROOT,但是这种操作会导致操作系统的不稳定,同时提高测试成本。
发明内容
为了解决上述技术问题,本发明提出了一种客户端性能测试方法、装置以及终端。
本说明书的第一方面,提供一种客户端性能测试方法,所述方法包括:
创建测试对象用例,所述测试对象用例包含计数函数;
关联所述测试对象用例与测试对象的动作,以使得所述计数函数随所述测试对象的动作而计数;
调用所述计数函数的计数值以计算所述终端性能。
本说明书的第二方面,提供一种客户端性能测试评估装置,包括:
创建模块,用于创建测试对象用例,所述测试对象用例包含计数函数;
关联模块,关联所述测试对象用例与测试对象的动作,以使得所述计数函数随所述测试对象的动作而计数;
计算模块,调用所述计数函数的计数值以计算所述终端性能参数。
进一步地,所述装置还包括属性设置模块,用于将所述测试对象用例的属性设置为不可被销毁。
进一步地,所述关联所述测试对象用例与测试对象的动作,包括将所述测试对象用例加载到测试对象的每一帧。
进一步地,所述关联模块中,所述计数函数随着测试对象的每一帧动作记录测试对象的相关参数。
进一步地,所述测试对象的相关参数至少包括:执行每一帧动作的时间,执行每一帧动作的CPU占用率,执行每一帧动作的内存占用率,伴随每一帧动作所产生的互联网流量。
进一步地,调用所述计数函数的计数值以量化计算所述性能参数包括:基于所述计数函数的计数值计算FPS、CPU占用率、内存占用率、互联网流量中的至少一项;基于所述FPS、CPU占用率、内存占用率、互联网流量中的至少一项对所述终端性能参数进行量化打分。
进一步地,所述装置还包括:将所述终端的性能参数展示于所述测试对象的显示界面。本说明书的第三方面,提供一种终端,包括前述的装置。
本说明书提供的技术方案带来的有益效果包括:
在无需其他工具辅助的情况下,可以在操作系统不进行ROOT/越狱的情况下实现终端性能的测试。尤其可以对于无法ROOT的手机型号的性能参数进行测试,或者对即使进行越狱也无法测量的参数进行测量。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书实施例提供的客户端性能测试方法。
图2是本说明书实施例提供的客户端性能测试方法。
图3是本说明书实施例提供的客户端性能测试方法。
图4是本说明书实施例提供的客户端性能测试方法。
图5是本说明书实施例提供的客户端性能测试方法。
图6是本说明书实施例提供的客户端性能测试方法效果展示图。
图7是本说明书实施例提供的客户端性能测试装置。
图8是本说明书实施例提供的客户端性能测试装置。
图9是本说明书实施例提供的终端结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
对移动客户端的性能进行测试是游戏开发者的重要工作,本说明书中提供如下实施例以实现对移动客户端的测试的。在本说明书中客户端可以是游戏客户端、视频客户端、新闻客户端、即时通信客户端等等。
在一个实施例中,如图1所示,本说明书提供一种客户端性能测试方法,包括:当用户需要对移动终端中的客户端进行性能测试时,首先需要获取移动终端中的系统权限。系统权限的获得通常是对于移动终端的ROOT操作或者越狱操作获得。在获得移动终端的系统的权限之后,可以在移动终端中安装测试客户端测试软件以对客户端的性能进行测试。测试结果会通过测试客户端的界面展示给用户。
在上述技术方案中,移动终端需要通过ROOT或者越狱的手段来获取系统权限,并且需要安装第三方客户端,通过客户端来实现测试功能,并将测试结果显示在客户端上,该方案由于ROOT等操作会导致客户端的安全性变低,尤其是第三方测试软件的引入会进一步降低系统的安全性,测试成本也会增高。此外,由于第三方测试软件的限制,测试结果的准确性也无法得以保证。
此外,由于IOS的封闭特性,无论是否越狱,IOS系统中都无法基于测试客户端实现对于帧频率(FPS)的测量。而对于安卓系统,安卓6.0以上版本的ROOT成本很高,且不能保证所有安卓机型都能够ROOT成功;部分手机存在额外的限制,例如华为手机需要14天才能够通过刷ROM的方式ROOT。
在一个实施例中,如图2所示,本说明书提供一种客户端性能测试方法,其是一种无须进行ROOT的性能测试方法。其需要移动终端与客户端之间连接实现。具体地,移动终端需要开启调试模式并连接PC端,连接可以是基于USB调试的连接,也可以是基于同一局域网的无线调制。PC端运行免ROOT工具并连接移动终端,在PC端确认连接手机成功后会开启免ROOT服务,免ROOT服务运行成功之后,移动终端开启其中的测试客户端开始测试,并将最终的测试结果发送至PC端予以显示。
在上述技术方案中,需要利用移动终端与PC端的连接实现安卓机型的免ROOT,但是免ROOT过程出错率高,移动终端与PC端之间的连接可能遇到:后台程序未启动、未发现设备连接、ADB server冲突等系统问题,导致测试无法正常进行。作为PC端测试软件,在测试之后,需要移动终端的将测试结果上传,并且在移动终端重启测试对象,整体耗时也比较高,不利于测试的连贯性。
在一个实施例中,如图3所示,本说明书提供一种客户端性能测试方法,具体地,所述方法包括如下步骤:
步骤S110,创建测试对象用例,所述测试对象用例包含测试对象的计数函数。
测试对象用例是为了对客户端的性能进行测试而创建的,其用于记录测试过程中产生的、与客户端性能相关的中间数值。中间数值可以是测试过程中伴随着客户端动作而产生的显示帧数(f)、执行动作的时间(t)、执行动作是产生的CPU占用值(m)、执行动作是产生的CPU占用值(n)以及执行动作所产生的流量(s)。
步骤S120,关联所述测试对象用例与测试目标对象的动作,以使得当所述客户端工作时,所述计数函数随测试目标对象的动作而计数。
关联所述测试对象用例与测试目标对象的动作,是为了使测试对象用例能够获得测试目标的每一次动作,使得计数函数受到该动作的触发而产生计数。
在一个具体的示例中,测试对象用例被放在每一帧中,在每一帧中被渲染,每当帧发生改变时,便会触发计数函数计数,同时记录帧发生改变的时间。
步骤S130,调用所述计数函数的计数值以计算所述客户端的性能参数。
为了量化计算客户端的性能值,通过调用计数函数的计数值计算测试客户端的性能参数。
计算的性能参数可以包括:帧频率、CPU占用率、内存占用率、流量使用情况等与客户端运行相关的参数,以及基于相关参数的综合评价。
帧频率是反映客户端是否流畅的重要指标,的计算通过读取帧的数量以及帧的时间来计算。通过关联测试对象用例与测试目标对象的动作,以使得当所述客户端工作时,所述计数函数随测试目标对象的动作而计数从而获得每个帧动作所需的时间。通过对帧时间的全部或者部分处理可以获得测试客户端的FPS数据。
在一个实施例中,如图4所示,本说明书提供一种客户端性能测试方法,具体地,所述方法包括如下步骤:
步骤S210,创建测试对象用例,所述测试对象用例包含测试对象的计数函数。
测试对象用例是为了对客户端的性能进行测试而创建的,其用于记录测试过程中产生的、与客户端性能相关的中间数值。中间数值可以是测试过程中伴随着客户端动作而产生的显示帧数(f)、执行动作的时间(t)、执行动作是产生的CPU占用值(m)、执行动作是产生的CPU占用值(n)以及执行动作所产生的流量(s)。在创建测试对象时,建立测试对象的计数函数,以对中间数值进行计数。因此,计数函数可以理解为一个关于多参数的函数,该函数可以表示为:
G(f,t,m,n,s)
出于计算的考虑,计数函数也可以使用数组或者向量来表示:
例如,根据每一次记录的计数值按照帧数排序表示为[f,δt,m,n,s]的形式,那么表示为数组为:
[1,0.04,0.3,500,0.2,……],[2,0.025,0.35,400,0.21,……],
[3,0.03,0.3,500,0.2,……],[4,0.035,0.35,400,0.21,……],
…………
第一帧的数组表示的含义为,第一帧耗时0.04秒,CPU占用率为0.3,内存占用量为500M,应用发包0.2M。
第二帧的数组表示的含义为,第一帧耗时0.025秒,CPU占用率为0.35,内存占用量为400M,应用发包0.21M。
…………
在一个示例中,还可以沿时间轴方向展开中间数值。
可选地,步骤S210之后还包含步骤S220,将测试对象用例的属性设置为不可销毁。将测试对象用例的属性设置为不可销毁是通过诸如重载操作函数实现的。在测试对象用例本身没有被销毁的情况下,将测试对象用例的属性设置为已销毁状态。这样表述测试对象用例销毁状态的关键字在系统检测时表现为被销毁状态,但是测试对象用例本身却实际上没有被销毁。
在一个示例中,测试对象用例销毁状态的关键字是通过NULL来表示测试对象用例的销毁状态,而在测试对象用例销毁状态的关键字设置为NULL之后,测试对象本身却不会立即被销毁,而是经过一定延迟之后才会被销毁。因此,通过将销毁状态的关键字设置为NULL,并且中止之后的销毁操作可以保证:销毁状态的关键字设置为NULL,而测试对象用例本身没有被销毁。
由于销毁状态的关键字设置为NULL,在之后对其进行检查的过程中,该测试对象用例始终被认为是处于销毁状态,而其实际并没有被销毁。从而实现在测试过程中测试对象用例的属性被设置为不可销毁。
创建不可被销毁的测试对象用例,是因为被测试客户端在进行场景切换时需要清除一般对象。通过将测试对象用例设置为不可销毁状态,能够保证在测试客户端的进行场景切换时,其中对象不会被清除,从而保留测试对象用例内保存的计数数据。
步骤S230,关联所述测试对象用例与测试目标对象的动作,以使得当所述客户端工作时,所述计数函数随测试目标对象的动作而计数。
关联所述测试对象用例与测试目标对象的动作,是为了使测试对象用例能够获得测试目标的每一次动作,使得计数函数受到该动作的触发而产生计数。
在一个具体的示例中,测试对象用例被放在每一帧中,在每一帧中被渲染,每当帧发生改变时,便会触发计数函数计数,同时记录帧发生改变的时间。
在一个具体的示例中,每当帧发生改变时,可以触发计数函数计数,通过读取系统API函数引用操作系统库,将计数的类型修改为CPU,可以获得PerformanceCounter中的NextValue值来获得当前帧CPU的占用率。
在一个具体的示例中,每当帧发生改变时,可以触发计数函数计数,通过读取系统API函数引用操作系统库,将计数的类型修改为内存,可以获得PerformanceCounter中的NextValue值来获得当前帧内存的占用率。
在一个具体的示例中,每当帧发生改变时,可以触发计数函数计数,通过读取系统API函数引用操作系统库函数,通过诸如TrafficStats类的getUidRxBytes(uid[n])来获的当前帧的流量统计。
步骤S240,调用所述计数函数的计数值以计算所述客户端的性能参数。
为了量化计算客户端的性能值,通过调用计数函数的计数值计算测试客户端的性能参数。
计算的性能参数可以包括:帧频率、CPU占用率、内存占用率、流量使用情况等与客户端运行相关的参数,以及基于相关参数的综合评价。
帧频率是反映客户端是否流畅的重要指标,计算通过读取帧的数量以及帧的时间来计算。通过关联测试对象用例与测试目标对象的动作,以使得当所述客户端工作时,所述计数函数随测试目标对象的动作而计数从而获得每个帧动作所需的时间。通过对帧时间的全部或者部分处理可以获得测试客户端的FPS数据。
在一个具体的示例中,测试场景结束时,通过场景记录的全部数值内容计算帧频率。记录在测试场景中执行的帧数(FrameCount),记录在测试场景的执行时间(TimePassed),那么整个测试过程的帧率(FPS)就可以通过帧数和执行时间获得:
FPS= FrameCount/ TimePassed
测试场景中执行的帧数(FrameCount)可以由一个计数器实现,这个计数器是内嵌在测试对象用例中的一部分,由于测试对象用例是被放置到每一帧中渲染的,当帧发生变动时,该计数器执行“+1”操作,由此机制可以实现对于测试客户端帧数的准确计数。
在一些示例中,某些测试对象,例如具有开场场景的游戏APP,由于开场帧数据对整体测试结果有影响,造成测试结果的不过准确。需要去除开场部分的帧数,对测试的部分数据进行处理。开场测试的帧数可以利用异常值检测的方法获得,例如检测到某些游戏APP的前240帧,帧率明显异常于正常帧率,此时会在执行的帧数中减去前240帧(记为FrameCount241,表示起始帧数为第241,默认帧结束时结束),同时也减掉TimePassed中前240帧的时间(记为TimePassed241,表示起始帧数为第241,默认帧结束时结束),那么测试过程帧率就可以表示为:
FPS240= FrameCount241/ TimePassed241
在另一个示例中,对于某些测试对象,除开场动画外,还存在过度动画,例如游戏动画、视频APP的插播广告等等,此时,基于异常帧检测的方法可以将该类帧识别并标记出来,并对对应帧的取值范围进行计算:
FPS【a,b】= FrameCount【a,b】/ TimePassed【a,b】
其中[a,b]表示帧取值范围,其可以是连续的[100,200],也可以是不连续的[100,200],[300,400]。
在一个示例中,展示了对于帧频率方差的计算。方差的计算以预设单位数量的帧计算帧频率FPS,分别计算每个单位的帧频率方差variance。以A个FPS为一个单位,分别计算每个单位的FPS方差。在方差大于设定的第一阈值THRESHOLDA时,将方差转换为小于第二阈值THRESHOLDB一个分数,并对分数进行累加并保存。
Sum表示各FPS求和;
Count表示计数;
SumofSquares表示平方和,SumofSquares=FPS*FPS
Average表示平均数,Average=Sum/Count;
Variance表示方差,Variance= SumofSquares/Count- Average* Average。
例如,以150个FPS为一个单位(150为分组数,可以自定义),分别计算每个单位的FPS方差。在方差大于9(THRESHOLDA)的情况下,将方差转换为小于10(THRESHOLDB)的一个分数。
varianceScore = 0.21f * variance - 1.89f
其中0.21和1.89是可调数值。
通过的对公式中计算得到的分数结果进行累加,并保存,最终可以得到sumOfScore的结果。
根据整体的平均FPS值avgFPS,预定一个平均FPS的分数范围; avgFPS<=10,分数为10,avgFPS>10同时avgFPS<=20,分数范围为(10,70],avgFPS>20同时avgFPS<=25,分数范围为(70,90],avgFPS=>25,分数范围为(90,100]),根据分数范围和平均FPS生成一个分数系数afpsFactor
用满分100减去方差累计所得分sumOfScore,再乘以分数系数afpsFactor,即为最终分数finalScore。
在一个示例中,对CPU占用率进行计算,如前所述,每当帧发生改变时,可以触发计数函数计数,通过读取操作系统库,获得当前的CPU占用率,CPU占用率可以反映当前的终端运行情况。除CPU占用的数值外还可以使用计算FPS方差的方法来计算CPU占用率,并由此获得在运行当前客户端时,对于终端CPU的占用情况。即,本说明书中的方法在对客户端进行测试的同时,还能够实现对于终端性能的测试。
在一个示例中,对内容占用率进行计算,如前所述,每当帧发生改变时,可以触发计数函数计数,通过读取系统API函数引用操作系统库,将计数的类型修改为内存。获得当前的内存占用率,内存占用率可以反映当前的终端运行情况。除内存占用的数值外还可以使用计算FPS方差的方法来计算内存占用率,并由此获得在运行当前客户端时,终端内存占用的变化情况。即,本说明书中的方法在对客户端进行测试的同时,还能够实现对于终端性能的测试。
在一个示例中,每当帧发生改变时,可以触发计数函数计数,通过读取系统API函数引用操作系统库函数,通过诸如TrafficStats类的getUidRxBytes(uid[n])来获的当前帧的流量统计。除流量占用的数值外还可以使用计算FPS方差的方法来计算流量变化的方差,并由此获得在运行当前客户端时,终端流量的变化情况。
测试过程可以作为客户端插件的形式存在,并在需要进行测试的时候开启。
在一个示例中,在测试结束时,可以将测试结果直接展示在客户端的界面上,和/或将测试结果保存在WEB上。
在一个示例中,在测试过程中,可以将伴随每一帧测量获得的结果实时更新在客户端的界面上,同时将测试结果保存,并且可选地保存在WEB上;不妨碍所述领域技术人员能够实施,实时测得的数据也可以只选择保存在WEB上。
在一个示例中,由于前后两帧的变化大可能导致明显卡顿,本实施例的方案还可以根据前后两帧的变化量或者变化率来计算分数以评估终端性能。
在一个实施例中,如图5所示,提供一种客户端性能测试方法,在进入测试场景后,按测试用例进行测试,并在测试过程中记录每一帧的测试数据,在测试完成后,计算FPS均值、FPS方差、CPU占用率、内存占用量、流量等,同时依据计算内容对客户端性能进行评分,然后打印分数到客户端的结算界面,之后场景测试的结束。
图6则展示了本说明书实施例提供的客户端性能测试方法,效果展示图。以游戏客户端为例,在游戏进行过程中或者游戏测试结束后,在客户端的界面上展示对客户端的打分情况,以及FPS均值、FPS方差、CPU占用率、内存占用量、流量等内容。不失一般性地,展示的终端可以是横屏也可以是竖屏,客户端性能可以是静态的展示,也可以是弹幕或者滚屏的方式展示在所述客户端界面上。用户还可以通过输入指令的方式重启测试过程。
在一个实施例中,如图7所示,提供一种客户端性能测试装置,具体地,所述装置包括如下模块:
创建模块,用于创建测试对象用例,所述测试对象用例包含测试对象的计数函数。
测试对象用例是为了对客户端的性能进行测试而创建的,其用于记录测试过程中产生的、与客户端性能相关的中间数值。中间数值可以是测试过程中伴随着客户端动作而产生的显示帧数(f)、执行动作的时间(t)、执行动作是产生的CPU占用值(m)、执行动作是产生的CPU占用值(n)以及执行动作所产生的流量(s)。
关联模块,用于关联所述测试对象用例与测试目标对象的动作,以使得当所述客户端工作时,所述计数函数随测试目标对象的动作而计数。
关联所述测试对象用例与测试目标对象的动作,是为了使测试对象用例能够获得测试目标的每一次动作,使得计数函数受到该动作的触发而产生计数。
在一个具体的示例中,测试对象用例被放在每一帧中,在每一帧中被渲染,每当帧发生改变时,便会触发计数函数计数,同时记录帧发生改变的时间。
计算模块,用于调用所述计数函数的计数值以计算所述客户端的性能参数。
为了量化计算客户端的性能值,通过调用计数函数的计数值计算测试客户端的性能参数。
计算的性能参数可以包括:帧频率、CPU占用率、内存占用率、流量使用情况等与客户端运行相关的参数,以及基于相关参数的综合评价。
帧频率是反映客户端是否流畅的重要指标,的计算通过读取帧的数量以及帧的时间来计算。通过关联测试对象用例与测试目标对象的动作,以使得当所述客户端工作时,所述计数函数随测试目标对象的动作而计数从而获得每个帧动作所需的时间。通过对帧时间的全部或者部分处理可以获得测试客户端的FPS数据。
在一个实施例中,如图8所示,提供一种客户端性能测试装置,具体地,所述装置包括如下模块:
创建模块,创建测试对象用例,所述测试对象用例包含测试对象的计数函数。测试对象用例是为了对客户端的性能进行测试而创建的,其用于记录测试过程中产生的、与客户端性能相关的中间数值。中间数值可以是测试过程中伴随着客户端动作而产生的显示帧数(f)、执行动作的时间(t)、执行动作是产生的CPU占用值(m)、执行动作是产生的CPU占用值(n)以及执行动作所产生的流量(s)。在创建测试对象时,建立测试对象的计数函数,以对中间数值进行计数。因此,计数函数可以理解为一个关于多参数的函数,该函数可以表示为:
G(f,t,m,n,s)
出于计算的考虑,计数函数也可以使用数组或者向量来表示:
例如,根据每一次记录的计数值按照帧数排序表示为[f,δt,m,n,s]的形式,那么表示为数组为:
[1,0.04,0.3,500,0.2,……],[2,0.025,0.35,400,0.21,……],
[3,0.03,0.3,500,0.2,……],[4,0.035,0.35,400,0.21,……],
…………
第一帧的数组表示的含义为,第一帧耗时0.04秒,CPU占用率为0.3,内存占用量为500M,应用发包0.2M。
第二帧的数组表示的含义为,第一帧耗时0.025秒,CPU占用率为0.35,内存占用量为400M,应用发包0.21M。
…………
在一个示例中,还可以沿时间轴方向展开中间数值。
属性设置模块,用于将测试对象用例的属性设置为不可销毁。将测试对象用例的属性设置为不可销毁是通过诸如重载操作函数实现的。在测试对象用例本身没有被销毁的情况下,将测试对象用例的属性设置为已销毁状态。这样表述测试对象用例销毁状态的关键字在系统检测时表现为被销毁状态,但是测试对象用例本身却实际上没有被销毁。
在一个示例中,测试对象用例销毁状态的关键字是通过NULL来表示测试对象用例的销毁状态,而在测试对象用例销毁状态的关键字设置为NULL之后,测试对象本身却不会立即被销毁,而是经过一定延迟之后才会被销毁。因此,通过将销毁状态的关键字设置为NULL,并且中止之后的销毁操作可以保证:销毁状态的关键字设置为NULL,而测试对象用例本身没有被销毁。
由于销毁状态的关键字设置为NULL,在之后对其进行检查的过程中,该测试对象用例始终被认为是处于销毁状态,而其实际并没有被销毁。从而实现在测试过程中测试对象用例的属性被设置为不可销毁。创建不可被销毁的测试对象用例,是因为被测试客户端在进行场景切换时需要清除一般对象。通过将测试对象用例设置为不可销毁状态,能够保证在测试客户端的进行场景切换时,其中对象不会被清除,从而保留测试对象用例内保存的计数数据。
关联模块,用于关联所述测试对象用例与测试目标对象的动作,以使得当所述客户端工作时,所述计数函数随测试目标对象的动作而计数。
关联所述测试对象用例与测试目标对象的动作,是为了使测试对象用例能够获得测试目标的每一次动作,使得计数函数受到该动作的触发而产生计数。
在一个具体的示例中,测试对象用例被放在每一帧中,在每一帧中被渲染,每当帧发生改变时,便会触发计数函数计数,同时记录帧发生改变的时间。
在一个具体的示例中,每当帧发生改变时,可以触发计数函数计数,通过读取系统API函数引用操作系统库,将计数的类型修改为CPU。例如,可以获得PerformanceCounter中的NextValue值来获得当前帧CPU的占用率。
在一个具体的示例中,每当帧发生改变时,可以触发计数函数计数,通过读取系统API函数引用操作系统库,将计数的类型修改为内存。例如,可以可以获得PerformanceCounter中的NextValue值来获得当前帧内存的占用率。
在一个具体的示例中,每当帧发生改变时,可以触发计数函数计数,通过读取系统API函数引用操作系统库函数,通过诸如TrafficStats类的getUidRxBytes(uid[n])来获的当前帧的流量统计。
计算模块,调用所述计数函数的计数值以计算所述客户端的性能参数。
为了量化计算客户端的性能值,通过调用计数函数的计数值计算测试客户端的性能参数。
计算的性能参数可以包括:帧频率、CPU占用率、内存占用率、流量使用情况等与客户端运行相关的参数,以及基于相关参数的综合评价。
帧频率是反映客户端是否流畅的重要指标,计算通过读取帧的数量以及帧的时间来计算。通过关联测试对象用例与测试目标对象的动作,以使得当所述客户端工作时,所述计数函数随测试目标对象的动作而计数从而获得每个帧动作所需的时间。通过对帧时间的全部或者部分处理可以获得测试客户端的FPS数据。
在一个具体的示例中,测试场景结束时,通过场景记录的全部数值内容计算帧频率。记录在测试场景中执行的帧数(FrameCount),记录在测试场景的执行时间(TimePassed),那么整个测试过程的帧率(FPS)就可以通过帧数和执行时间获得:
FPS= FrameCount/ TimePassed
测试场景中执行的帧数(FrameCount)可以由一个计数器实现,这个计数器是内嵌在测试对象用例中的一部分,由于测试对象用例是被放置到每一帧中渲染的,当帧发生变动时,该计数器执行“+1”操作,由此机制可以实现对于测试客户端帧数的准确计数。
在一些示例中,某些测试对象,例如具有开场场景的游戏APP,由于开场帧数据对整体测试结果有影响,造成测试结果的不过准确。需要去除开场部分的帧数,对测试的部分数据进行处理。开场测试的帧数可以利用异常值检测的方法获得,例如检测到某些游戏APP的前240帧,帧率明显异常于正常帧率,此时会在执行的帧数中减去前240帧(记为FrameCount241,表示起始帧数为第241,默认帧结束时结束),同时也减掉TimePassed中前240帧的时间(记为TimePassed241,表示起始帧数为第241,默认帧结束时结束),那么测试过程帧率就可以表示为:
FPS240= FrameCount241/ TimePassed241
在另一个示例中,对于某些测试对象,除开场动画外,还存在过度动画,例如游戏动画、视频APP的插播广告等等,此时,基于异常帧检测的方法可以将该类帧识别并标记出来,并对对应帧的取值范围进行计算:
FPS【a,b】= FrameCount【a,b】/ TimePassed【a,b】
其中[a,b]表示帧取值范围,其可以是连续的[100,200],也可以是不连续的[100,200],[300,400]。
在一个示例中,展示了对于帧频率方差的计算。方差的计算以预设单位数量的帧计算帧频率FPS,分别计算每个单位的帧频率方差variance。以A个FPS为一个单位,分别计算每个单位的FPS方差。在方差大于设定的第一阈值THRESHOLDA时,将方差转换为小于第二阈值THRESHOLDB一个分数,并对分数进行累加并保存。
Sum表示各FPS求和;
Count表示计数;
SumofSquares表示平方和,SumofSquares=FPS*FPS
Average表示平均数,Average=Sum/Count;
Variance表示方差,Variance= SumofSquares/Count- Average* Average。
例如,以150个FPS为一个单位(150为分组数,可以自定义),分别计算每个单位的FPS方差。在方差大于9(THRESHOLDA)的情况下,将方差转换为小于10(THRESHOLDB)的一个分数。
varianceScore = 0.21f * variance - 1.89f
其中0.21和1.89是可调数值。
通过的对公式中计算得到的分数结果进行累加,并保存,最终可以得到sumOfScore的结果。
根据整体的平均FPS值avgFPS,预定一个平均FPS的分数范围; avgFPS<=10,分数为10,avgFPS>10同时avgFPS<=20,分数范围为(10,70],avgFPS>20同时avgFPS<=25,分数范围为(70,90],avgFPS=>25,分数范围为(90,100]),根据分数范围和平均FPS生成一个分数系数afpsFactor
用满分100减去方差累计所得分sumOfScore,再乘以分数系数afpsFactor,即为最终分数finalScore。
在一个示例中,对CPU占用率进行计算,如前所述,每当帧发生改变时,可以触发计数函数计数,通过读取操作系统库,获得当前的CPU占用率,CPU占用率可以反映当前的终端运行情况。除CPU占用的数值外还可以使用计算FPS方差的方法来计算CPU占用率,并由此获得在运行当前客户端时,对于终端CPU的占用情况。即,本说明书中的方法在对客户端进行测试的同时,还能够实现对于终端性能的测试。
在一个示例中,对内容占用率进行计算,如前所述,每当帧发生改变时,可以触发计数函数计数,通过读取系统API函数引用操作系统库,将计数的类型修改为内存。获得当前的内存占用率,内存占用率可以反映当前的终端运行情况。除内存占用的数值外还可以使用计算FPS方差的方法来计算内存占用率,并由此获得在运行当前客户端时,终端内存占用的变化情况。即,本说明书中的方法在对客户端进行测试的同时,还能够实现对于终端性能的测试。
在一个示例中,每当帧发生改变时,可以触发计数函数计数,通过读取系统API函数引用操作系统库函数,通过诸如TrafficStats类的getUidRxBytes(uid[n])来获的当前帧的流量统计。除流量占用的数值外还可以使用计算FPS方差的方法来计算流量变化的方差,并由此获得在运行当前客户端时,终端流量的变化情况。
测试过程可以作为客户端插件的形式存在,并在需要进行测试的时候开启。
在一个示例中,在测试结束时,可以将测试结果直接展示在客户端的界面上,和/或将测试结果保存在WEB上。
在一个示例中,在测试过程中,可以将伴随每一帧测量获得的结果实时更新在客户端的界面上,同时将测试结果保存,并且可选地保存在WEB上;不妨碍所述领域技术人员能够实施,实时测得的数据也可以只选择保存在WEB上。
在一个示例中,由于前后两帧的变化大可能导致明显卡顿,本实施例的方案还可以根据前后两帧的变化量或者变化率来计算分数以评估终端性能。
请参考图9,其示出了本发明一个实施例提供的终端的结构示意图。该终端用于实施上述实施例中提供的方法。具体来讲:
终端 1000 可以包括RF(Radio Frequency,射频)电路110、包括有一个或一个以上计算机可读存储介质的存储器120、输入单元130、显示单元140、视频传感器150、音频电路160、WiFi(wireless fidelity,无线保真)模块170、包括有一个或者一个以上处理核心的处理器180、以及电源190 等部件。本领域技术人员可以理解,图8中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
RF 电路110 可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,交由一个或者一个以上处理器180处理;另外,将涉及上行的数据发送给基站。通常,RF 电路110 包括但不限于天线、至少一个放大器、调谐器、一个或多个振荡器、用户身份模块(SIM)卡、收发信机、耦合器、LNA(Low Noise Amplifier,低噪声放大器)、双工器等。此外,RF 电路110 还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobilecommunication,全球移动通讯系统)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA(Code Division Multiple Access,码分多址)、WCDMA(Wideband CodeDivision Multiple Access, 宽带码分多址)、LTE(Long Term Evolution,长期演进)、电子邮件、SMS(Short Messaging Service,短消息服务)等。
存储器 120 可用于存储软件程序以及模块,处理器180 通过运行存储在存储器120 的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器120 可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1000 的使用所创建的数据(比如视频数据、电话本等)等。此外,存储器120 可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器120 还可以包括存储器控制器,以提供处理器180 和输入单元130对存储器120 的访问。
输入单元 130 可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元130 可包括图像输入设备131 以及其他输入设备132。图像输入设备131 可以是摄像头,也可以是光电扫描设备。除了图像输入设备131,输入单元130 还可以包括其他输入设备132。具体地,其他输入设备132 可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元140 可用于显示由用户输入的信息或提供给用户的信息以及终端1000的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。显示单元140 可包括显示面板141,可选的,可以采用LCD(Liquid Crystal Display,液晶显示器)、OLED(Organic Light-Emitting Diode,15 有机发光二极管)等形式来配置显示面板141。
终端1000可包括至少一种视频传感器150,视频传感器用于获取用户的视频信息。终端1000还可以包括其它传感器(未示出),比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板141 的亮度,接近传感器可在终端1000 移动到耳边时,关闭显示面板141 和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端1000 还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
视频电路 160、扬声器161,传声器162 可提供用户与终端1000 之间的视频接口。音频电路160 可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161 转换为声音信号输出;另一方面,传声器162 将收集的声音信号转换为电信号,由音频电路160 接收后转换为音频数据,再将音频数据输出处理器180 处理后,经RF 电路11 以发送给比如另一终端,或者将音频数据输出至存储器120 以便进一步处理。音频电路160 还可能包括耳塞插孔,以提供外设耳机与终端1000 的通信。
WiFi 属于短距离无线传输技术,终端1000 通过WiFi 模块70 可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图9示出了WiFi 模块170,但是可以理解的是,其并不属于终端1000的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器180 是终端1000 的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器120 内的软件程序和/或模块,以及调用存储在存储器120 内的数据,执行终端1000 的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器180 可包括一个或多个处理核心;优选的,处理器180 可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。
可以理解的是,上述调制解调处理器也可以不集成到处理器180中。
终端 1000 还包括给各个部件供电的电源190(比如电池),优选的,电源可以通过电源管理系统与处理器180 逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源190 还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管未示出,终端 1000 还可以包括蓝牙模块等,在此不再赘述。
具体在本实施例中,终端1000 还包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述辅助信息展示方法的指令。所述指令用于在被处理器执行时实现如下步骤:响应于辅助信息展示请求,收集用户界面的界面信息;根据所述用户界面的界面信息,生成辅助信息请求;检索与所述辅助信息请求匹配的辅助数据;根据触发条件,在当前用户界面展示所述辅助数据。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A 和/或B,可以表示:单独存在A,同时存在A 和B,单独存在B 这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种客户端性能测试方法,其特征在于,所述方法包括:
创建测试对象用例,所述测试对象用例包含测试对象的计数函数;
关联所述测试对象用例与测试对象的动作,包括将所述测试对象用例加载到测试对象的每一帧,使得在所述测试对象工作过程中,所述测试对象用例能够获得所述测试对象的每一帧动作,所述计数函数随所述测试对象的每一帧动作记录测试对象的相关参数,所述测试对象的相关参数至少包括:执行每一帧动作的时间,执行每一帧动作的CPU占用率,执行每一帧动作的内存占用率,伴随每一帧动作所产生的互联网流量;
调用所述计数函数记录的测试对象的相关参数以计算客户端性能参数。
2.根据权利要求1所述的方法,其特征在于,所述测试对象用例具有不可被销毁的属性。
3.根据权利要求1所述的方法,其特征在于,调用所述计数函数的计数值以量化计算所述性能参数包括:
基于所述计数函数的计数值计算FPS、CPU占用率、内存占用率、互联网流量中的至少一项;
基于所述FPS、CPU占用率、内存占用率、互联网流量中的至少一项对所述性能参数进行量化打分。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述客户端的性能参数展示于所述测试对象的显示界面。
5.一种客户端性能测试装置,其特征在于,所述装置包括:
创建模块,用于创建测试对象用例,所述测试对象用例包含测试对象的计数函数;
关联模块,关联所述测试对象用例与测试对象的动作,包括将所述测试对象用例加载到测试对象的每一帧,使得在所述测试对象工作过程中,所述测试对象用例能够获得所述测试对象的每一帧动作,所述计数函数随所述测试对象的每一帧动作记录测试对象的相关参数,所述测试对象的相关参数至少包括:执行每一帧动作的时间,执行每一帧动作的CPU占用率,执行每一帧动作的内存占用率,伴随每一帧动作所产生的互联网流量;
计算模块,调用所述计数函数记录的测试对象的相关参数以计算客户端性能参数。
6.一种终端,其特征在于,所述终端包括权利要求5所述的装置。
7.一种设备,其特征在于,包括处理器和存储装置;
所述存储装置,用于存储计算机程序指令;
所述处理器,调用所述计算机程序指令,用于:
创建测试对象用例,所述测试对象用例包含测试对象的计数函数;
关联所述测试对象用例与测试对象的动作,包括将所述测试对象用例加载到测试对象的每一帧,使得在所述测试对象工作过程中,所述测试对象用例能够获得所述测试对象的每一帧动作,所述计数函数随所述测试对象的每一帧动作记录测试对象的相关参数,所述测试对象的相关参数至少包括:执行每一帧动作的时间,执行每一帧动作的CPU占用率,执行每一帧动作的内存占用率,伴随每一帧动作所产生的互联网流量;
调用所述计数函数记录的测试对象的相关参数以计算客户端性能参数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810156919.8A CN110196799B (zh) | 2018-02-24 | 2018-02-24 | 一种客户端性能测试方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810156919.8A CN110196799B (zh) | 2018-02-24 | 2018-02-24 | 一种客户端性能测试方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110196799A CN110196799A (zh) | 2019-09-03 |
CN110196799B true CN110196799B (zh) | 2022-03-29 |
Family
ID=67743975
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810156919.8A Active CN110196799B (zh) | 2018-02-24 | 2018-02-24 | 一种客户端性能测试方法、装置及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110196799B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110636537B (zh) * | 2019-11-21 | 2020-04-10 | 翱捷科技(上海)有限公司 | 一种基于ttcn-3的多卡移动终端测试系统及其方法 |
CN113360343B (zh) * | 2021-06-15 | 2022-08-16 | 网易(杭州)网络有限公司 | 分析内存占用状况的方法、装置、存储介质及计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103955428A (zh) * | 2014-04-30 | 2014-07-30 | 百度在线网络技术(北京)有限公司 | 用于测试应用的响应速度的方法和设备 |
CN105100784A (zh) * | 2014-04-21 | 2015-11-25 | 展讯通信(上海)有限公司 | 流畅度的测试方法及装置 |
CN106649024A (zh) * | 2016-09-22 | 2017-05-10 | 微梦创科网络科技(中国)有限公司 | 一种应用性能实时监控方法及装置 |
CN107102936A (zh) * | 2017-05-27 | 2017-08-29 | 腾讯科技(深圳)有限公司 | 一种流畅度的评估方法和移动终端以及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8589140B1 (en) * | 2005-06-10 | 2013-11-19 | Wapp Tech Corp. | System and method for emulating and profiling a frame-based application playing on a mobile device |
-
2018
- 2018-02-24 CN CN201810156919.8A patent/CN110196799B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105100784A (zh) * | 2014-04-21 | 2015-11-25 | 展讯通信(上海)有限公司 | 流畅度的测试方法及装置 |
CN103955428A (zh) * | 2014-04-30 | 2014-07-30 | 百度在线网络技术(北京)有限公司 | 用于测试应用的响应速度的方法和设备 |
CN106649024A (zh) * | 2016-09-22 | 2017-05-10 | 微梦创科网络科技(中国)有限公司 | 一种应用性能实时监控方法及装置 |
CN107102936A (zh) * | 2017-05-27 | 2017-08-29 | 腾讯科技(深圳)有限公司 | 一种流畅度的评估方法和移动终端以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110196799A (zh) | 2019-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107800651B (zh) | 应用程序关闭方法、装置、存储介质和电子设备 | |
CN107038112B (zh) | 应用界面的调试方法及装置 | |
WO2017206916A1 (zh) | 处理器中内核运行配置的确定方法以及相关产品 | |
CN106357897B (zh) | 跌落信息的获取方法及装置 | |
TWI520043B (zh) | 消息查看方法、裝置和移動終端 | |
CN108156508B (zh) | 弹幕信息处理的方法、装置、移动终端、服务器及系统 | |
WO2017008569A1 (zh) | 消息更新方法、装置及终端 | |
CN106371964B (zh) | 一种进行消息提示的方法和装置 | |
KR101813437B1 (ko) | 스트리밍 미디어 데이터에 대한 통계치를 수집하기 위한 방법 및 시스템과, 관련 장치 | |
CN106649010B (zh) | 一种终端设备测试方法及终端设备 | |
WO2017206915A1 (zh) | 处理器中内核运行配置的确定方法以及相关产品 | |
CN106294108B (zh) | 应用程序测试方法及装置 | |
CN106294168B (zh) | 一种进行应用程序测试的方法和系统 | |
CN111273955B (zh) | 热修复插件优化方法、装置、存储介质及电子设备 | |
CN108984374B (zh) | 一种数据库性能的测试方法和系统 | |
CN110196799B (zh) | 一种客户端性能测试方法、装置及终端 | |
CN110069407B (zh) | 一种应用程序的功能测试方法和装置 | |
CN115174418A (zh) | 一种通信环境安全预警方法、装置、电子设备和存储介质 | |
CN106055598B (zh) | 信息显示方法及装置 | |
CN105278942B (zh) | 组件管理方法及装置 | |
CN106709330B (zh) | 记录文件执行行为的方法及装置 | |
WO2015135457A1 (en) | Method, apparatus, and system for sending and playing multimedia information | |
CN106339391B (zh) | 一种网页显示方法,及终端设备 | |
CN105159655B (zh) | 行为事件的播放方法和装置 | |
CN109041212B (zh) | 一种定位方法及可穿戴设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |