一种虚拟现实软件性能的远程测试方法及终端与流程

文档序号:14714235发布日期:2018-06-16 01:01阅读:159来源:国知局
一种虚拟现实软件性能的远程测试方法及终端与流程

本发明涉及数据处理领域,尤其涉及一种虚拟现实软件性能的远程测试方法及终端。



背景技术:

随着虚拟现实技术的发展,越来越多的虚拟现实软件出现在人们的生活中。作为虚拟现实软件,沉浸感一直是用户体验的核心。目前,制约用户感官体验的最大因素就是晕动症,而造成晕动症的最直接原因就是虚拟现实软件的卡顿现象。造成卡顿现象的因素很多,其中就包含了软件的性能因素。

虚拟现实软件的性能瓶颈一般分为CPU,GPU,内存三大方面,经过长期的实践证明,目前虚拟现实软件市场上,九成的软件都存在着不同程度的内存使用问题。就目前虚拟现实软件而言,内存的主要开销大致上可以分为:引擎自身对于内存的消耗,软件资源对于内存的占用,托管堆内存占用。

据统计,在一个较为复杂的虚拟现实项目中,资源对于内存的占用往往占据了总体内存的70%以上,因此资源使用是否合理,往往决定了资源对于内存的占用情况。在Unity3D引擎中,资源类型分别有如下几种:纹理,网格,动画,材质,音频等,其中纹理资源则占据最大内存开销。

现有的测试虚拟现实软件中纹理资源占用内存情况的方法为,通过Unity3D引擎内置的Profiler性能分析器,对资源占用的内存数据进行分析,排查出其中占用内存较高的纹理资源。但是,通过Profiler分析器仅仅能够测试出占用内存较大的纹理资源,而无法测试出占用内存小的纹理资源。再者,需要在拥有源代码的情况下才能通过Profiler性能分析器进行测试,而大部分企业无法提供测试人员软件的源代码,导致在黑盒测试时,测试人员无法对虚拟现实软件中纹理资源占用内存情况进行测试。



技术实现要素:

本发明所要解决的技术问题是:如何在无源代码的前提下,提高检测出不合理占用内存的纹理资源的准确度。

为了解决上述技术问题,本发明采用的技术方案为:

本发明提供一种虚拟现实软件性能的远程测试方法,包括:

挂载预设的测试脚本至虚拟现实软件;

当接收到服务器发送的测试请求时,所述测试脚本获取与虚拟现实软件对应的所有UI对象,得到第一UI对象集合;

所述测试脚本获取所述第一UI对象集合中每一所述UI对象对应的MipMap功能状态,得到功能状态集合;所述MipMap功能状态包括开启状态和关闭状态;

所述测试脚本发送所述第一UI对象集合和所述功能状态集合至服务器,以使服务器根据所述第一UI对象集合和所述功能状态集合生成测试报告。

本发明还提供一种虚拟现实软件性能的远程测试终端,包括一个或多个处理器及存储器,所述存储器存储有程序,并且被配置成由所述一个或多个处理器执行以下步骤:

挂载预设的测试脚本至虚拟现实软件;

当接收到服务器发送的测试请求时,所述测试脚本获取与虚拟现实软件对应的所有UI对象,得到第一UI对象集合;

所述测试脚本获取所述第一UI对象集合中每一所述UI对象对应的MipMap功能状态,得到功能状态集合;所述MipMap功能状态包括开启状态和关闭状态;

所述测试脚本发送所述第一UI对象集合和所述功能状态集合至服务器,以使服务器根据所述第一UI对象集合和所述功能状态集合生成测试报告。

本发明的有益效果在于:MipMap是一种针对纹理资源的图形图像技术,在Unity3D引擎中,通过开启纹理贴图的MipMap功能能够有效降低渲染带宽的压力,提升虚拟现实软件的渲染效率。然而,开启MipmMap功能将会使纹理资源对于内存的占用提高1.33倍。对于虚拟场景中具有较大纵深感的虚拟现实软件来说,3D场景模型和角色一般是需要开启MipMap功能的,但是对于虚拟场景中的UI对象,则是没有必要的。UI对象开启MipMap功能不仅无法提升渲染效率,反而会增加不必要的内存占用。本发明通过检测虚拟现实软件包含的所有UI对象引用的纹理资源的MipMap功能的状态,从而排查出不合理占用内存的纹理资源,实现在无需虚拟现实软件源代码的前提下提高检测出不合理占用内存的纹理资源的准确度,并形成测试报告,有利于开发工程师根据测试报告精准地对特定纹理资源进行处理,从而降低不必要的纹理资源的内存占用,以改善虚拟现实软件的性能。此外,本发明通过远程服务器控制安装虚拟现实软件的终端测试UI对象所引用的纹理资源是否开启MipMap功能,有利于摆脱资源检测时对于源代码的依赖性,并且能够很好的支持跨平台测试。

附图说明

图1为本发明提供的一种虚拟现实软件性能的远程测试方法的具体实施方式的流程框图;

图2为本发明提供的一种虚拟现实软件性能的远程测试终端的具体实施方式的结构框图;

标号说明:

1、处理器; 2、存储器。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

请参照图1以及图2,

如图1所示,本发明提供一种虚拟现实软件性能的远程测试方法,包括:

挂载预设的测试脚本至虚拟现实软件;

当接收到服务器发送的测试请求时,所述测试脚本获取与虚拟现实软件对应的所有UI对象,得到第一UI对象集合;

所述测试脚本获取所述第一UI对象集合中每一所述UI对象对应的MipMap功能状态,得到功能状态集合;所述MipMap功能状态包括开启状态和关闭状态;

所述测试脚本发送所述第一UI对象集合和所述功能状态集合至服务器,以使服务器根据所述第一UI对象集合和所述功能状态集合生成测试报告。

进一步地,所述测试脚本发送所述第一UI对象集合和所述功能状态集合至服务器,具体为:

预设数据字典;所述数据字典包括一个以上键值对;

存储所述第一UI对象集合和所述功能状态集合至所述数据字典;所述第一UI对象集合中的每一UI对象的名称为键值名;所述功能状态集合中的元素为所述第一UI对象集合中对应UI对象的键值;

转换所述数据字典为JSON数据格式,得到JSON数据;

发送所述JSON数据至服务器。

进一步地,还包括:

通过Socket服务与服务器建立通信连接。

由上述描述可知,socket通信可以现实跨平台和同平台之间的通信。

进一步地,包括:

获取所述测试报告中与开启状态对应的UI对象,得到第二UI对象集合;

设置所述第二UI对象集合中每一UI对象的MipMap功能状态为关闭状态。

由上述描述可知,关闭UI对象的MipMap功能不仅不影响渲染效率,而且极大程度上减少了相关纹理资源对内存的占用,提高了虚拟现实软件的性能。

进一步地,所述测试脚本获取所述第一UI对象集合中每一所述UI对象对应的MipMap功能状态,得到功能状态集合,具体为:

S1、所述测试脚本从所述第一UI对象集合中获取一UI对象;

S2、所述测试脚本获取所述一UI对象的材质组件;

S3、所述测试脚本获取与所述材质组件对应的着色器;

S4、若所述着色器的类型为纹理类型,则:所述测试脚本获取与所述着色器对应的纹理资源;所述测试脚本获取所述纹理资源的MipMap功能状态;否则:所述测试脚本标记与所述一UI对象对应的MipMap功能状态为关闭状态;

重复执行所述S1至所述S4,直至所述第一UI对象集合被遍历,得到所述功能状态集合。

如图2所示,本发明还提供一种虚拟现实软件性能的远程测试终端,包括一个或多个处理器1及存储器2,所述存储器2存储有程序,并且被配置成由所述一个或多个处理器1执行以下步骤:

挂载预设的测试脚本至虚拟现实软件;

当接收到服务器发送的测试请求时,所述测试脚本获取与虚拟现实软件对应的所有UI对象,得到第一UI对象集合;

所述测试脚本获取所述第一UI对象集合中每一所述UI对象对应的MipMap功能状态,得到功能状态集合;所述MipMap功能状态包括开启状态和关闭状态;

所述测试脚本发送所述第一UI对象集合和所述功能状态集合至服务器,以使服务器根据所述第一UI对象集合和所述功能状态集合生成测试报告。

进一步地,所述测试脚本发送所述第一UI对象集合和所述功能状态集合至服务器,具体为:

预设数据字典;所述数据字典包括一个以上键值对;

存储所述第一UI对象集合和所述功能状态集合至所述数据字典;所述第一UI对象集合中的每一UI对象的名称为键值名;所述功能状态集合中的元素为所述第一UI对象集合中对应UI对象的键值;

转换所述数据字典为JSON数据格式,得到JSON数据;

发送所述JSON数据至服务器。

进一步地,还包括:

通过Socket服务与服务器建立通信连接。

进一步地,包括:

获取所述测试报告中与开启状态对应的UI对象,得到第二UI对象集合;

设置所述第二UI对象集合中每一UI对象的MipMap功能状态为关闭状态。

进一步地,所述测试脚本获取所述第一UI对象集合中每一所述UI对象对应的MipMap功能状态,得到功能状态集合,具体为:

S1、所述测试脚本从所述第一UI对象集合中获取一UI对象;

S2、所述测试脚本获取所述一UI对象的材质组件;

S3、所述测试脚本获取与所述材质组件对应的着色器;

S4、若所述着色器的类型为纹理类型,则:所述测试脚本获取与所述着色器对应的纹理资源;所述测试脚本获取所述纹理资源的MipMap功能状态;否则:所述测试脚本标记与所述一UI对象对应的MipMap功能状态为关闭状态;

重复执行所述S1至所述S4,直至所述第一UI对象集合被遍历,得到所述功能状态集合。

本发明的实施例一为:

本实施例提供一种虚拟现实软件性能的远程测试方法,包括:

S1、通过Socket服务与服务器建立通信连接。

S2、挂载预设的测试脚本至虚拟现实软件。

其中,在虚拟现实软件运行时创建客户端Socket,Socket服务监听来自服务器Socket的连接请求,开启阻塞模式直到服务器发来连接请求。接收到请求后,对请求数据进行处理。

S3、当接收到服务器发送的测试请求时,所述测试脚本获取与虚拟现实软件对应的所有UI对象,得到第一UI对象集合。具体为:

S31、所述测试脚本获取与虚拟现实软件对应的所有游戏对象,得到游戏对象集合。

S32、所述测试脚本从所述游戏对象集合中获取标签类型为UI的游戏对象,得到第一UI对象集合。

其中,游戏对象可以称为GameObject,是Unity3D引擎中的一种对象类型,而UI对象则是GameObject类型的对象中被标记为“UI”的对象,unity引擎中每一个对象都有自己的标签,方便识别。遍历所有类型为GameObject的对象,通过FindObjectWithTag方法筛选出所有标签类型为UI的游戏对象,这些对象就是当前虚拟场景中所包含的所有UI对象。

S4、所述测试脚本获取所述第一UI对象集合中每一所述UI对象对应的MipMap功能状态,得到功能状态集合;所述MipMap功能状态包括开启状态和关闭状态;具体为:

S41、所述测试脚本从所述第一UI对象集合中获取一UI对象;

S42、所述测试脚本获取所述一UI对象的材质组件;

S43、所述测试脚本获取与所述材质组件对应的着色器;

S44、若所述着色器的类型为纹理类型,则:所述测试脚本获取与所述着色器对应的纹理资源;所述测试脚本获取所述纹理资源的MipMap功能状态;否则:所述测试脚本标记与所述一UI对象对应的MipMap功能状态为关闭状态;

重复执行所述S1至所述S4,直至所述第一UI对象集合被遍历,得到所述功能状态集合。

其中,Mipmap是一种针对纹理资源的图形图像技术,在Unity3D引擎中,通过开启纹理资源的Mipmap功能能够有效降低渲染带宽的压力,提升虚拟现实软件的渲染效率。然而,开启Mipmap将会使纹理资源对于内存的占用提高1.33倍。对于虚拟场景中具有较大纵深感的虚拟现实软件来说,3D场景模型和角色一般是需要开启Mipmap功能的,但是对于虚拟场景中的UI对象,则是没有必要的。UI对象开启Mipmap功能不仅无法提升渲染效率,反而会增加不必要的内存占用。

遍历第一UI对象集合,获取每一个UI对象下的材质组件。材质组件包含了渲染UI对象所需要的纹理贴图和渲染着色相关的配置信息。通过shader方法获取材质组件对应的着色器。着色器是Unity3D引擎中用于处理图形显示的处理流水线,其包含了多个Property(属性),Property中记录了用于图形显示的资源的基本信息。通过GetPropertyType方法函数获取着色器属性的属性类型,并判断属性的属性类型是否属于TexEnv类型(纹理类型),该类型的属性用于存储纹理贴图相关的信息,UI对象所引用的每一张纹理贴图都会在着色器中生成一个对应的TexEnv类型的属性。获取类型为TexEnv类型的属性后,通过name函数读取TexEnv属性的名称信息,这个名称信息就是该属性所对应的纹理贴图的名称,最后调用GetTexture(Texture TextureName),所传递的参数为获取的纹理贴图的名称信息,即可返回对应的纹理资源。再通过调用GenerateMipMaps函数获取纹理资源的MipMaps功能的状态,当返回值为true时,表示MipMaps功能为开启状态;当返回值为fail时,表示MipMaps功能为关闭状态。

S5、所述测试脚本发送所述第一UI对象集合和所述功能状态集合至服务器,以使服务器根据所述第一UI对象集合和所述功能状态集合生成测试报告。

可选地,预设数据字典;所述数据字典包括一个以上键值对;

存储所述第一UI对象集合和所述功能状态集合至所述数据字典;所述第一UI对象集合中的每一UI对象的名称为键值名;所述功能状态集合中的元素为所述第一UI对象集合中对应UI对象的键值;

转换所述数据字典为JSON数据格式,得到JSON数据;

发送所述JSON数据至服务器。

其中,通过DataContractJsonSerializer类对数据字典进行序列化处理,转化为JSON格式的数据,返回处理的数据到服务器Socket,服务器对数据进行解析处理,解析后的数据会存储到数据库中,该数据库用于存储生成测试报告所需要的数据信息,提取数据库数据生成对应的测试报告。

可选地,服务器根据所述第一UI对象集合和所述功能状态集合生成测试报告,具体为:

获取所述第一UI对象集合中MipMap功能状态为开启状态的UI对象,得到第三UI对象集合;

根据所述第三UI对象集合生成测试报告。

其中,测试报告中列出虚拟现实软件中所有引用了纹理资源且开启MipMap功能的UI对象,有利于开发工程师根据测试报告精准地对特定纹理资源进行处理,从而降低不必要的纹理资源的内存占用,以改善虚拟现实软件的性能。

S6、获取所述测试报告中与开启状态对应的UI对象,得到第二UI对象集合;设置所述第二UI对象集合中每一UI对象的MipMap功能状态为关闭状态。

由上述描述可知,Unity3D引擎自带的Profiler性能分析器只有通过Unity3D引擎打开软件的项目工程以后,才能够被使用,如果需要对软件的性能进行分析,就必须在Unity3D引擎中运行虚拟现实软件的工程源代码,在运行的过程中,Profiler就会对每一帧的性能数据进行采集。而本实施例提供的检测方式采用了Sockect通信的方式,通过客户端socket和服务端socket之间的通信连接,实现了远程数据传输,同时在软件中挂载测试脚本用于数据的采集和检测,完成检测的数据会通过socket之间的通信被返回给socket客户端,并在客户端生成相应的测试报告。此外,本实施例通过远程服务器控制安装虚拟现实软件的终端测试UI对象所引用的纹理资源是否开启MipMap功能,有利于摆脱资源检测时对于源代码的依赖性,并且能够很好的支持跨平台测试。例如,当socket客户端在电脑上时,并且需要测试的虚拟现实软件是一个移动端应用,能够通过远程发送指令的方式进行远程测试,数据会被返回到电脑上,通过这样的方式可以更加方便的对检测的测试数据进行操作。

本发明的实施例二为:

本实施例提供一种虚拟现实软件性能的远程测试终端,包括一个或多个处理器1及存储器2,所述存储器2存储有程序,并且被配置成由所述一个或多个处理器1执行以下步骤:

S1、通过Socket服务与服务器建立通信连接。

S2、挂载预设的测试脚本至虚拟现实软件。

S3、当接收到服务器发送的测试请求时,所述测试脚本获取与虚拟现实软件对应的所有UI对象,得到第一UI对象集合。具体为:

S31、所述测试脚本获取与虚拟现实软件对应的所有游戏对象,得到游戏对象集合。

S32、所述测试脚本从所述游戏对象集合中获取标签类型为UI的游戏对象,得到第一UI对象集合。

S4、所述测试脚本获取所述第一UI对象集合中每一所述UI对象对应的MipMap功能状态,得到功能状态集合;所述MipMap功能状态包括开启状态和关闭状态;具体为:

S41、所述测试脚本从所述第一UI对象集合中获取一UI对象;

S42、所述测试脚本获取所述一UI对象的材质组件;

S43、所述测试脚本获取与所述材质组件对应的着色器;

S44、若所述着色器的类型为纹理类型,则:所述测试脚本获取与所述着色器对应的纹理资源;所述测试脚本获取所述纹理资源的MipMap功能状态;否则:所述测试脚本标记与所述一UI对象对应的MipMap功能状态为关闭状态;

重复执行所述S1至所述S4,直至所述第一UI对象集合被遍历,得到所述功能状态集合。

S5、所述测试脚本发送所述第一UI对象集合和所述功能状态集合至服务器,以使服务器根据所述第一UI对象集合和所述功能状态集合生成测试报告。

可选地,预设数据字典;所述数据字典包括一个以上键值对;

存储所述第一UI对象集合和所述功能状态集合至所述数据字典;所述第一UI对象集合中的每一UI对象的名称为键值名;所述功能状态集合中的元素为所述第一UI对象集合中对应UI对象的键值;

转换所述数据字典为JSON数据格式,得到JSON数据;

发送所述JSON数据至服务器。

可选地,服务器根据所述第一UI对象集合和所述功能状态集合生成测试报告,具体为:

获取所述第一UI对象集合中MipMap功能状态为开启状态的UI对象,得到第三UI对象集合;

根据所述第三UI对象集合生成测试报告。

S6、获取所述测试报告中与开启状态对应的UI对象,得到第二UI对象集合;设置所述第二UI对象集合中每一UI对象的MipMap功能状态为关闭状态。

综上所述,本发明提供的一种虚拟现实软件性能的远程测试方法及终端,通过检测虚拟现实软件包含的所有UI对象引用的纹理资源的MipMap功能的状态,从而排查出不合理占用内存的纹理资源,实现在无需虚拟现实软件源代码的前提下提高检测出不合理占用内存的纹理资源的准确度,并形成测试报告,有利于开发工程师根据测试报告精准地对特定纹理资源进行处理,从而降低不必要的纹理资源的内存占用,以改善虚拟现实软件的性能。此外,本发明通过远程服务器控制安装虚拟现实软件的终端测试UI对象所引用的纹理资源是否开启MipMap功能,有利于摆脱资源检测时对于源代码的依赖性,并且能够很好的支持跨平台测试。进一步地,关闭UI对象的MipMap功能不仅不影响渲染效率,而且极大程度上减少了相关纹理资源对内存的占用,提高了虚拟现实软件的性能。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

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