一种测试游戏引擎应用的性能的移动终端及方法与流程

文档序号:12068410阅读:291来源:国知局
本发明涉及应用测试技术及终端
技术领域
:,具体而言,涉及一种测试游戏引擎应用的性能的移动终端及方法。
背景技术
::日常生活中,人们的移动终端上都安装有各种游戏引擎应用,如游戏引擎开发的游戏。为了确保移动终端上安装的游戏引擎应用的可靠性,需要对游戏引擎应用进行性能测试,以检测游戏引擎应用是否存在性能问题并在出现性能问题时记录问题数据。目前,相关技术中存在一种对游戏引擎应用进行性能测试的方法,包括:将游戏引擎应用安装到移动终端,将移动终端连接至监控终端如PC(PersonalComputer,个人计算机)机上,在移动终端上运行游戏引擎应用,通过监控终端的测试工具中的分析器对游戏引擎进行性能监控,当监控到游戏引擎出现性能问题时,移动终端以流式传输的方式将问题数据输出到监控终端。在实现本发明的过程中,发明人发现上述测试方法至少存在以下问题:移动终端必须连接到监控终端才能进行性能测试,且一台监控终端只能测试一台移动终端,限制了对大批量移动终端的测试。且 移动终端流式输出问题数据到监控终端,问题数据无法自动保存,需要人工保存和整理问题数据,导致整体的测试效率不高。技术实现要素:有鉴于此,本发明实施例的目的在于提供一种测试游戏引擎应用的性能的移动终端及方法,不需要将移动终端连接到监控服务器或监控终端,通过性能监控模块就可以对移动终端安装的待测游戏引擎应用进行性能测试。第一方面,本发明实施例提供了一种测试游戏引擎应用的性能的移动终端,所述移动终端上安装有包含性能测试插件的待测游戏引擎应用;所述移动终端包括性能监控模块和数据收集模块;所述性能监控模块,用于对所述移动终端上运行的待测游戏引擎应用进行性能监控;并在监控到所述待测游戏引擎应用出现性能异常时,控制所述性能测试插件记录所述待测游戏引擎应用出现性能异常时的运行数据;所述数据收集模块,用于获取所述性能测试插件记录的运行数据,根据记录的所述运行数据生成测试结果。结合第一方面,本发明实施例提供了上述第一方面的第一种可能的实现方式,其中,所述性能监控模块包括:第一获取单元,用于获取所述移动终端上运行的所述待测游戏引擎应用的帧率;第一判断单元,用于判断所述第一获取单元获取的所述帧率是否低于预设帧率,如果是,则控制所述性能测试插件记录所述待测游戏引擎应用出现性能异常时的运行数据;或者,第二判断单元,用于判断连续预设时间段内的所述帧率是否均低于所述预设帧率,如果是,则控制所述性能测试插件记录所述待测游戏引擎应用出现性能异常时的运行数据。结合第一方面,本发明实施例提供了上述第一方面的第二种可能的实现方式,其中,所述性能监控模块还包括:截取更新单元,用于控制所述性能测试插件截取所述待测游戏引擎应用出现性能异常时的场景的图片,控制所述性能测试插件抓取性能分析数据以及控制所述性能测试插件更新所述场景对应的异常次数及平均帧率;第二获取单元,用于控制所述性能测试插件从所述待测游戏引擎应用中获取所述场景的场景标识及所述待测游戏引擎应用的版本号,以及获取所述移动终端的终端型号;组成存储单元,用于控制所述性能测试插件将所述场景的图片、所述性能分析数据、所述场景标识、所述异常次数、所述平均帧率、所述版本号、所述终端型号以及测试时间组成所述待测游戏引擎应用出现性能异常时的运行数据,存储所述运行数据。结合第一方面,本发明实施例提供了上述第一方面的第三种可能的实现方式,其中,所述性能监控模块,还用于获取预设的记录参数,将所述预设的记录参数传输给所述性能测试插件,并在监控到所述待测游戏引擎应用出现性能异常时,控制所述性能测试插件根据所述预设的记录参数记录所述待测游戏引擎应用的运行数据,所述预设的记录参数包括预设磁盘空间;所述性能监控模块,还用于监控所述性能测试插件记录的运行数据占用的磁盘空间,当监控到记录的运行数据占用的磁盘空间达 到所述预设磁盘空间时,控制所述性能测试插件停止记录所述待测游戏引擎应用出现性能异常时的运行数据。结合第一方面,本发明实施例提供了上述第一方面的第四种可能的实现方式,其中,所述性能监控模块,还用于判断所述性能测试插件记录运行数据的时间是否达到预设记录时间,如果是,则控制所述性能测试插件停止记录所述待测游戏引擎应用出现性能异常时的运行数据;或者,所述性能监控模块,还用于获取所述待测游戏引擎应用的当前帧率,若所述当前帧率小于预设帧率,则控制计数器的数值减一,若所述当前帧率大于或等于所述预设帧率,则控制所述计数器的数值加一,当所述计数器的数值大于预设阈值时,控制所述性能测试插件停止记录所述待测游戏引擎应用出现性能异常时的运行数据。结合第一方面的第四种可能的实现方式,本发明实施例提供了上述第一方面的第五种可能的实现方式,其中,所述性能监控模块,还用于当所述计数器的数值小于或等于所述预设阈值时,确定所述待测游戏引擎应用出现新的性能异常的场景,则延长所述性能测试插件记录运行数据的所述预设记录时间,控制所述性能测试插件记录所述新的性能异常的场景对应的运行数据。结合第一方面,本发明实施例提供了上述第一方面的第六种可能的实现方式,其中,所述数据收集模块,还用于通过所述移动终端上的网络通信接口将所述测试结果上传给监控服务器。第二方面,本发明实施例提供了一种测试游戏引擎应用的性能的方法,所述方法包括:移动终端对自身运行的待测游戏引擎应用进行性能监控;其中,所述待测游戏引擎应用中包括性能测试插件;所述移动终端在监控到所述待测游戏引擎应用出现性能异常时,通过所述性能测试插件记录所述待测游戏引擎应用出现性能异常时的运行数据;所述移动终端获取所述性能测试插件记录的运行数据,根据记录的所述运行数据生成测试结果。结合第二方面,本发明实施例提供了上述第二方面的第一种可能的实现方式,其中,所述移动终端对自身运行的待测游戏引擎应用进行性能监控,包括:所述移动终端获取自身运行的待测游戏引擎应用的帧率;所述移动终端判断所述帧率是否低于预设帧率,如果是,则通过所述性能测试插件记录所述待测游戏引擎应用的运行数据;或者,所述移动终端判断连续预设时间段内的所述帧率是否均低于所述预设帧率,如果是,则通过所述性能测试插件记录所述待测游戏引擎应用的运行数据。结合第二方面,本发明实施例提供了上述第二方面的第二种可能的实现方式,其中,所述移动终端在监控到所述待测游戏引擎应用出现性能异常时,通过所述性能测试插件记录所述待测游戏引擎应用出现性能异常时的运行数据,包括:所述移动终端通过所述性能测试插件截取所述待测游戏引擎应用出现性能异常时的场景的图片,通过所述性能测试插件抓取性能分析数据以及更新所述场景对应的异常次数及平均帧率;所述移动终端从所述待测游戏引擎应用中获取所述场景的场景标识及所述待测游戏引擎应用的版本号,以及获取所述移动终端的终端型号;所述移动终端将所述场景的图片、所述性能分析数据、所述场景标识、所述异常次数、所述平均帧率、所述版本号、所述终端型号以及测试时间组成所述待测游戏引擎应用出现性能异常时的运行数据,存储所述运行数据。结合第二方面,本发明实施例提供了上述第二方面的第三种可能的实现方式,其中,所述方法还包括:所述移动终端获取预设的记录参数,将所述预设的记录参数传输给所述性能测试插件,并控制所述性能测试插件根据所述预设的记录参数记录所述待测游戏引擎应用出行性能异常时的运行数据,所述预设的记录参数包括预设磁盘空间;所述移动终端监控所述性能测试插件记录的运行数据占用的磁盘空间,当监控到记录的运行数据占用的磁盘空间达到所述预设磁盘空间时,控制所述性能测试插件停止记录所述待测游戏引擎应用出现性能异常时的运行数据。结合第二方面,本发明实施例提供了上述第二方面的第四种可能的实现方式,其中,所述移动终端通过所述性能测试插件记录所述待测游戏引擎应用出现性能异常时的运行数据之后,还包括:所述移动终端判断所述性能测试插件记录运行数据的时间是否达到预设记录时间,如果是,则控制所述性能测试插件停止记录所述待测游戏引擎应用出现性能异常时的运行数据;或者,所述移动终端获取所述待测游戏引擎应用的当前帧率,若所述当前帧率小于预设帧率,则控制计数器的数值减一,若所述当前帧率大于或等于所述预设帧率,则控制所述计数器的数值加一,当所述计数器的数值大于预设阈值时,控制所述性能测试插件停止记录所述待测游戏引擎应用出现性能异常时的运行数据。结合第二方面的第四种可能的实现方式,本发明实施例提供了上述第二方面的第五种可能的实现方式,其中,所述方法还包括:当所述计数器的数值小于或等于所述预设阈值时,所述移动终端确定所述待测游戏引擎应用出现新的性能异常的场景,则延长所述性能测试插件记录运行数据的所述预设记录时间,控制所述性能测试插件记录所述新的性能异常的场景对应的运行数据。结合第二方面,本发明实施例提供了上述第二方面的第六种可能的实现方式,其中,所述移动终端获取所述性能测试插件记录的运行数据,根据记录的所述运行数据生成测试结果之后,还包括:所述移动终端通过自身的网络通信接口将所述测试结果上传给监控服务器。在本发明实施例中,移动终端安装有包含性能测试插件的待测游戏引擎应用;移动终端包括上述性能监控模块和数据收集模块。不需要将移动终端连接到监控服务器或监控终端,通过性能监控模块就可以对移动终端安装的待测游戏引擎应用进行性能测试,可以实现大批量的移动终端同时进行测试,且通过数据收集模块能够自动记录并保存待测游戏引擎应用出现性能异常时的运行数据。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1示出了本发明实施例1所提供的一种测试游戏引擎应用的性能的移动终端的结构示意图;图2A示出了本发明实施例2所提供的一种测试游戏引擎应用的性能的方法流程图;图2B示出了本发明实施例2所提供的一种控制性能测试插件记录运行数据的流程图。具体实施方式下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。考虑到应用于移动终端上的游戏引擎应用在发布之前,需要对其性能进行测试,以保障游戏引擎应用的可靠性,而相关技术中的移动终端必须连接到监控终端才能实现游戏引擎应用的性能测试,且一台监控终端只能测试一台移动终端,测试效率较差。同时,测试过程中的问题数据均流式输出到监控终端,移动终端无法自动保存问题数据,不便于后续数据的分析。基于此,本发明实施例提供了一种测试游戏引擎应用的性能的移动终端及游戏引擎的性能测试方法。下面通过实施例进行描述。实施例1本发明实施例提供了一种测试游戏引擎应用的性能的移动终端。能够对自身运行的游戏引擎应用进行性能测试,如可以对移动终端上的Unity3D应用进行性能测试,并在运行的游戏引擎应用出现性能异常时记录当时的运行数据。如图1所示,本发明实施例提供的移动终端包括性能监控模块101和数据收集模块102;该移动终端上安装有包含性能测试插件的待测游戏引擎应用。其中,性能监控模块101,用于对该移动终端上运行的待测游戏引擎应用进行性能监控;并在监控到所述待测游戏引擎应用出现性能异常时,控制上述性能测试插件记录待测游戏引擎应用出现性能异常时的运行数据;数据收集模块102,用于获取性能测试插件记录的运行数据,根据记录的运行数据生成测试结果。上述性能监控模块101和数据收集模块102均可以采用软件或者硬件的形式实现。即性能监控模块101和数据收集模块102可以为安装在移动终端上的软件,或者可以为设置在移动终端上的特定硬件设备。另外,能够想到的是,采用软件实现时,性能监控模块101和数据收集模块102可以合并为一个软件;采用硬件实现时,性能监控模块101和数据收集模块102可以集成到一个特定硬件设备中。上述性能测试插件与性能监控模块101之间通过数据传输接口进行数据及指令的传输。当性能监控模块101采用软件实现时,该数据传输接口可以为特定的接口程序,当性能监控模块101采用硬件实现时,可以利用特定的固件实现数据传输接口的功能。在移动终端中,软/硬件与插件进行数据传输可以有多种实现方式,于此不再赘述。上述待测游戏引擎应用一般为利用游戏引擎所开发的某一款游戏,当在移动终端上启动该游戏时,包含在该游戏中的游戏引擎首先被启动,然后待测游戏引擎调用该游戏中的图像、声音或动画等数据资源,以实现该游戏的场景的搭建及显示。在本发明实施例中,不需要将移动终端连接到监控服务器或监控终端,通过上述性能监控模块101就可以对移动终端安装的待测游戏引擎应用进行性能测试,可以实现大批量的移动终端同时进行测试,且通过数据收集模块102能够自动记录并保存待测游戏引擎应用出现性能异常时的运行数据。在对移动终端上的待测游戏引擎进行性能测试之前,可以预先设置性能监控模块101判断是否出现性能异常的判断阈值,该判断阈值可以为预设帧率。在性能监控模块101对待测游戏引擎应用进行性能监控时,性能监控模块101获取待测游戏引擎应用控制游戏显示场景的帧率,将获取的帧率与预设帧率进行比较,来判断待测游戏引擎应用是否出现了性能异常。上述性能监控模块101具体可以通过如下第一获取单元和第一判断单元来进行性能监控,也可以通过如下第一获取单元和第二获取单元来进行性能监控。第一获取单元获取移动终端上运行的待测游戏引擎应用的帧率,该帧率为待测游戏引擎应用控制游戏每秒显示场景的图像的数量,第一获取单元可以实时获取待测游戏引擎应用的帧率。以待测游戏引擎应用为Unity3D应用为例进行说明,性能监控模块101获取待测游戏引擎应用的帧率的操作可以为:性能监控模块101抓取Unity3D应用在Logcat(命令行工具)中输出的帧率,并通过如下算法获取帧率:fps=extractField(line.getMessage(),"avg:")其中,fps为帧率,line.getMessage()函数用于获得当前行的内容,extractField()函数用于提取当前行中以“avg:”开头的数据。第一判断单元判断第一获取单元获取的帧率是否低于预设帧率,如果判断出获取的帧率低于预设帧率,则控制性能测试插件记录待测游戏引擎应用出现性能异常时的运行数据。但是待测游戏引擎在运行过程中可能会存在帧率不稳定的情况,待测游戏引擎应用的帧率可能出现偶尔低于预设帧率,经过很短时间又恢复至高于预设帧率的情况。这种短时间的偶发状况并不影响待测游戏引擎应用的正常运行,但若每次出现这种情况,第一判断单元判断出帧率低于预设帧率时都控制性能测试插件记录此时的运行数据,将会占用大量的系统资源。所以在本发明实施例中,通过第一获取单元实时获取待测游戏引擎应用的帧率后,还可以通过如下第二判断单元来判断是否出现性能异常。第二判断单元判断连续预设时间段内第一获取单元获取的帧率是否均低于预设帧率,如果是,则控制性能测试插件记录待测游戏引擎应用出现性能异常时的运行数据。在本发明实施例中,当性能监控模块101监控出待测游戏引擎应用出现性能异常时,性能监控模块101通过与性能测试插件之间的通信接口,传输监控通知给性能测试插件。性能测试插件接收到该监控通知时,开始记录待测游戏引擎应用此时的运行数据。另外,由于记录待测游戏引擎应用出现性能异常时的运行数据会占用大量的系统资源,为避免占用的系统资源过多而影响到移动终端上运行的其他应用进程。在本发明实施例中,可以预先设置记录性能异常时的运行数据的记录参数,性能监控模块101在监控到出现性能异常时,控制性能测试插件根据预设的记录参数来记录性 能异常时的运行数据。预设的记录参数可以包括预设磁盘空间、单次记录时长和记录总时长等。预设磁盘空间为记录的运行数据可以占用的最大磁盘空间。单次记录时长为一次性能异常时记录此次性能异常时的运行数据的最长记录时间。记录总时长为出现多次性能异常时允许记录这多次性能异常时运行数据的总时长。上述性能监控模块101控制性能测试插件记录待测游戏引擎应用出现性能异常时的运行数据之前,还获取预设的记录参数,通过与性能测试插件之间的通信接口,将预设的记录参数传输给性能测试插件。性能监控模块101在监控到待测游戏引擎应用出现性能异常时,通过与性能测试插件之间的通信接口,传输监控通知给性能测试插件,性能测试插件接收到该监控通知后,根据上述预设的记录参数记录待测游戏引擎应用的运行数据。在本发明实施例中,待测游戏引擎应用的运行数据包括待测游戏引擎应用出现性能异常时显示的场景的图片、该场景的场景标识、该场景出现异常的异常次数、该异常次数对应的平均帧率、待测游戏引擎应用的版本号、移动终端的终端型号、性能分析数据以及测试时间等。该场景的场景标识可以为该场景的场景名称或场景标号等。由于运行数据中包括待测游戏引擎应用的版本号、移动终端的终端型号、场景标识和测试时间,所以可以根据待测游戏引擎应用的版本号、移动终端的终端型号、场景标识和测试时间,对运行数据进行分类存储。性能监控模块101可以通过如下截取更新单元、第二获取单元、和组成存储单元来控制性能测试插件记录并保存出现异常时的运行数据。截取更新单元用于控制性能测试插件截取待测游戏引擎应用出现性能异常时的场景的图片,控制性能测试插件抓取性能分析数据以及控制性能测试插件更新场景对应的异常次数及平均帧率。每当性能监控模块101监控到该场景出现性能异常时,通过截取更新单元控制性能测试插件将记录的该场景对应的异常次数加一,并根据该场景之前出现的异常次数对应的平均帧率与当前出现性能异常时的帧率,重新计算该场景目前为止出现异常的平均帧率。当待测游戏引擎应用为Unity3D应用时,上述控制性能测试插件抓取性能分析数据的操作为,截取更新单元控制性能测试插件调用UnityEngine.Profiler函数,该UnityEngine.Profiler函数用于对运行的Unity3D应用进行性能分析,通过UnityEngine.Profiler函数抓取Unity3D出现异常时的性能分析数据。第二获取单元用于控制性能测试插件从待测游戏引擎应用中获取该场景的场景标识及待测游戏引擎应用的版本号,以及获取移动终端的终端型号。组成存储单元用于控制性能测试插件将该场景的图片、场景标识、异常次数、平均帧率、版本号、终端型号以及测试时间组成待测游戏引擎应用出现性能异常时的运行数据,存储该运行数据。上述组成存储单元控制性能测试插件存储该运行数据之后,性能监控模块101还监控性能测试插件记录的运行数据占用的磁盘空间。即性能监控模块101还获取此时对待测游戏引擎应用进行性能测试过程中记录的运行数据所占用的磁盘空间。当性能监控模块101监控到记录的运行数据占用的磁盘空间达到预设磁盘空间时,控制性能测试插件停止记录待测游戏引擎应用出现性能异常时的运 行数据;其中,该预设磁盘空间可以是上述预设的记录参数中的预设磁盘空间。另外,若长时间记录性能异常时的运行数据,也会导致占用大量的系统资源,为了防止占用过量的系统资源而影响到其他进程的运行,性能监控模块101还记录性能测试插件记录运行数据的时间。性能监控模块101可以采用单次计时方式来记录性能测试插件单次记录运行数据的时间,即此次监控出待测游戏引擎应用出现性能异常,并发送监控通知给性能测试插件时,性能监控模块101从0秒开始对性能测试插件记录运行数据进行计时。性能监控模块101也可以采用累计计时方式来记录性能测试插件过去累计多次记录运行数据的时间,即发送监控通知给性能测试插件时,性能监控模块101在上次出现性能异常时记录的时长的基础上对此次记录运行数据进行计时。性能监控模块101在对性能测试插件记录运行数据的时间进行计时的过程中,实时判断性能测试插件记录运行数据的时间是否达到预设记录时间。当性能监控模块101采用单次计时方式时,预设记录时间可以为预设的记录参数中包括的单次记录时长。当性能监控模块101采用累计计时方式时,预设记录时间可以为预设的记录参数中包括的记录总时长。当然预设记录时间也可以为预设的其他任意时长。当性能监控模块101判断出记录运行数据的时间达到预设记录时间时,性能监控模块101控制性能测试插件停止记录待测游戏引擎应用出现性能异常时的运行数据,从而避免由于记录超时导致占用过量系统资源的情况。另外,由于待测游戏引擎在运行过程中可能会存在短时间偶发的帧率不稳定的情况,帧率可能连续一段时间低于预设帧率,但是只要帧率的回升速度大于下跌速度,表明待测游戏引擎应用出现的性能异常正在自动恢复,在这种情况下出现性能异常时的运行数据已经记录,自动恢复过程中的运行数据对后续分析解决性能异常问题的参考价值不大,若再继续记录自动恢复过程中的运行数据,会额外占用系统资源,造成系统资源的浪费。所以在本发明实施例中,性能监控模块101还用于获取待测游戏引擎应用的当前帧率,若当前帧率小于预设帧率,则控制计数器的数值减一,若当前帧率大于或等于预设帧率,则控制计数器的数值加一,当计数器的数值大于预设阈值时,表明此时帧率的回升速度大于下跌速度,则控制性能测试插件停止记录待测游戏引擎应用出现性能异常时的运行数据。上述控制性能测试插件停止记录运行数据的操作,具体包括:性能监控模块101通过与性能测试插件之间的通信接口发送停止监控通知给性能测试插件,性能测试插件接收到该停止监控通知时停止记录待测游戏引擎应用出现性能异常时的运行数据。在本发明实施例中,当性能监控模块101监控到待测游戏引擎应用出现性能异常,并控制性能测试插件记录此时显示的场景对应的运行数据的过程中,随着时间的推移待测游戏引擎应用可能继续显示了其它场景的图像,而显示其它场景时也可能会出现性能异常,此时需要记录出现性能异常的其它场景对应的运行数据。首先性能监控模块101需要监控待测游戏引擎应用是否出现了新的性能异常的场景。性能监控模块101监控上述计数器的数值,当监控到计数器的数值小于或等于预设阈值时,表明帧率的下跌速 度大于回升速度,确定待测游戏引擎应用出现新的性能异常的场景,则延长性能测试插件记录运行数据的预设记录时间,控制性能测试插件记录新的性能异常的场景对应的运行数据。移动终端通过性能监控模块101监控到待测游戏引擎应用出现性能异常,并通过上述方式控制性能测试插件记录此时待测游戏引擎应用的运行数据后,通过数据收集模块102根据记录的运行数据来生成测试结果。上述数据收集模块102可以直接将记录的运行数据作为测试结果,也可以根据记录的运行数据按照测试时间或出现异常的场景标识等分类排列,生成测试报告或测试报表,将该测试报告或测试报表作为测试结果。数据收集模块102生成测试结果后,还可以通过移动终端上的网络通信接口将该测试结果上传给监控服务器。数据收集模块102可以在每次记录异常时的运行数据并生成测试结果后立即将测试结果上传至监控服务器。也可以周期性地每隔一小时或两小时等一定时间段将测试结果上传至监控服务器。将测试结果上传至监控服务器后,开发人员可以到监控服务器查看该测试结果,并根据该测试结果对待测游戏引擎的性能进行改良。由于通过移动终端上的性能监控模块101来对移动终端上运行的待测游戏引擎应用进行性能监控,并在监控到出现性能异常时,控制待测游戏引擎应用中包含的与性能监控模块101相适配的性能测试插件记录此时的运行数据,并根据记录的运行数据生成测试结果,通过移动终端上的网络通信接口将测试结果上传给监控服务器。如此实现移动终端可以对自身运行的待测游戏引擎进行性能测试, 不需要将移动终端连接到专门的监控终端上进行测试,可以实现对大批量的移动终端上的待测游戏引擎应用进行同时测试。另外,本发明实施例中的性能测试插件可以集成到具体的游戏的代码中,不需要进行代码维护,通过移动终端上的性能监控模块101即可完成对待测游戏引擎应用的自动化测试,大大提高了游戏引擎应用的性能测试的适用场景和便捷性。实施例2参见图2A,本发明实施例提供了一种测试游戏引擎应用的性能的方法,该方法可以通过上述实施例1提供的移动终端来执行。该方法具体包括以下步骤:步骤201:移动终端对自身运行的待测游戏引擎应用进行性能监控,该待测游戏引擎应用中包括性能测试插件;上述待测游戏引擎应用可以为Unity3D等游戏引擎应用。上述移动终端中包括性能监控模块,该性能监控模块可以为移动终端上的独立的硬件,也可以为一种监控应用。移动终端就是通过该性能监控模块来对自身运行的待测游戏引擎应用进行性能测试的。上述性能测试插件与移动终端包括的性能监控模块之间通过通信接口进行数据及指令的传输。在对待测游戏引擎进行性能测试之前,可以在移动终端上预先设置判断是否出现性能异常的判断阈值,该判断阈值可以为预设帧率。在对待测游戏引擎应用进行性能监控时,移动终端通过性能监控模块获取待测游戏引擎应用控制游戏显示场景的帧率,将获取的帧率与预设帧率进行比较,来判断待测游戏引擎应用是否出现了性能异常。上述移动终端对自身运行的待测游戏引擎应用进行性能监控的操作,具体包括:移动终端获取自身运行的待测游戏引擎应用的帧率,该帧率为待测游戏引擎应用控制游戏每秒显示场景的图像的数量,移动终端可以实时获取待测游戏引擎应用的帧率;移动终端判断该帧率是否低于预设帧率,如果是,则通过步骤202的操作控制性能测试插件记录待测游戏引擎应用的运行数据。在本发明实施例中,当待测游戏引擎应用为Unity3D应用时,性能监控模块101获取待测游戏引擎应用的帧率的操作可以为,性能监控模块101抓取Unity3D应用在Logcat中输出的帧率,并通过如下算法获取帧率:fps=extractField(line.getMessage(),"avg:")其中,fps为帧率,line.getMessage()函数用于获得当前行的内容,extractField()函数用于提取当前行中以“avg:”开头的数据。但是待测游戏引擎在运行过程中可能会存在帧率不稳定的情况,待测游戏引擎应用的帧率可能出现偶尔低于预设帧率,经过很短时间又恢复至高于预设帧率的情况。这种短时间的偶发状况并不影响待测游戏引擎应用的正常运行,但若每次出现这种情况,移动终端判断出帧率低于预设帧率时都控制性能测试插件记录此时的运行数据,将会占用大量的系统资源。所以在本发明实施例中,移动终端获取待测游戏引擎应用的帧率后,还可以通过如下操作来判断是否出现性能异常,具体包括:移动终端判断连续预设时间段内的帧率是否均低于预设帧率,如果是,则通过步骤202的操作控制性能测试插件记录待测游戏引擎应用的运行数据。在本发明实施例中,当移动终端通过性能监控模块监控出待测游戏引擎应用出现性能异常时,通过性能监控模块与性能测试插件 之间的通信接口,传输监控通知给性能测试插件。性能测试插件接收到该监控通知时,通过如下步骤202的操作开始记录待测游戏引擎应用此时的运行数据。步骤202:移动终端在监控到待测游戏引擎应用出现性能异常时,通过性能测试插件记录待测游戏引擎应用出现性能异常时的运行数据;由于记录待测游戏引擎应用出现性能异常时的运行数据会占用大量的系统资源,为避免占用的系统资源过多而影响到移动终端上运行的其他应用进程。在本发明实施例中,可以预先设置记录性能异常时的运行数据的记录参数,移动终端在监控到出现性能异常时,控制性能测试插件根据预设的记录参数来记录性能异常时的运行数据。预设的记录参数可以包括预设磁盘空间、单次记录时长和记录总时长等。预设磁盘空间为记录的运行数据可以占用的最大磁盘空间。单次记录时长为一次性能异常时记录此次性能异常的运行数据的最长记录时间。记录总时长为出现多次性能异常时允许记录这多次性能异常时运行数据的总时长。移动终端在控制性能测试插件记录待测游戏引擎应用出现性能异常时的运行数据之前,还获取预设的记录参数,将预设的记录参数传输给性能测试插件,并控制性能测试插件根据预设的记录参数记录待测游戏引擎应用出行性能异常时的运行数据。在本发明实施例中,待测游戏引擎应用的运行数据包括待测游戏引擎应用出现性能异常时显示的场景的图片、该场景的场景标识、该场景出现异常的异常次数、该异常次数对应的平均帧率、待测游戏引擎应用的版本号、移动终端的终端型号、性能分析数据以及测试时间。该场景的场景标识可以为该场景的场景名称或场景标号等。 由于运行数据中包括待测游戏引擎应用的版本号、移动终端的终端型号、场景标识和测试时间,所以可以根据待测游戏引擎应用的版本号、移动终端的终端型号、场景标识和测试时间,对运行数据进行分类存储。如图2B所示,移动终端可以通过如下步骤S1-S4的操作来控制性能测试插件记录待测游戏引擎应用出现性能异常时的运行数据,具体包括:S1:移动终端通过性能测试插件截取待测游戏引擎应用出现性能异常时的场景的图片,以及更新场景对应的异常次数及平均帧率;每当监控到该场景出现性能异常时,控制性能测试插件将记录的该场景对应的异常次数加一,并根据该场景之前出现的异常次数对应的平均帧率与当前出现性能异常时的帧率,重新计算该场景目前为止出现异常的平均帧率;S2:移动终端控制性能测试插件抓取性能分析数据;在本发明实施例中,当待测游戏引擎应用为Unity3D应用时,上述控制性能测试插件抓取性能分析数据的操作为,截取更新单元控制性能测试插件调用UnityEngine.Profiler函数,该UnityEngine.Profiler函数用于对运行的Unity3D应用进行性能分析,通过UnityEngine.Profiler函数抓取Unity3D出现异常时的性能分析数据;S3:移动终端从待测游戏引擎应用中获取该场景的场景标识及待测游戏引擎应用的版本号,以及获取移动终端的终端型号;S4:移动终端将该场景的图片、场景标识、异常次数、平均帧率、版本号、终端型号、性能分析数据以及测试时间组成待测游戏引擎应用出现性能异常时的运行数据,存储该运行数据。存储该运行数据之后,移动终端还监控性能测试插件记录的运行数据占用的磁盘空间。即移动终端还获取此时对待测游戏引擎应用进行性能测试过程中记录的运行数据所占用的磁盘空间。当监控到记录的运行数据占用的磁盘空间达到预设磁盘空间时,控制性能测试插件停止记录待测游戏引擎应用出现性能异常时的运行数据。另外,若长时间记录性能异常时的运行数据,也会导致占用大量的系统资源,为了防止占用过量的系统资源而影响到其他进程的运行,移动终端还记录性能测试插件记录运行数据的时间。移动终端可以采用单次计时方式来记录性能测试插件单次记录运行数据的时间,即此次监控出待测游戏引擎应用出现性能异常,并发送监控通知给性能测试插件时,移动终端从0秒开始对性能测试插件记录运行数据进行计时。移动终端也可以采用累计计时方式来记录性能测试插件过去累计多次记录运行数据的时间,即发送监控通知给性能测试插件时,移动终端在上次出现性能异常时记录的时长的基础上对此次记录运行数据进行计时。移动终端在对性能测试插件记录运行数据的时间进行计时的过程中,实时判断性能测试插件记录运行数据的时间是否达到预设记录时间。当移动终端采用单次计时方式时,预设记录时间可以为预设的记录参数中包括的单次记录时长。当移动终端采用累计计时方式时,预设记录时间可以为预设的记录参数中包括的记录总时长。当然预设记录时间也可以为预设的其他任意时长。当移动终端判断出性能测试插件记录运行数据的时间达到预设记录时间时,控制性能测试插件停止记录待测游戏引擎应用出现性能异常时的运行数据,以避免由于记录超时导致占用过量系统资源的情况。另外,由于待测游戏引擎在运行过程中可能会存在短时间偶发的帧率不稳定的情况,帧率可能连续一段时间低于预设帧率,但是只要帧率的回升速度大于下跌速度,表明待测游戏引擎应用出现的性能异常正在自动恢复,在这种情况下出现性能异常时的运行数据已经记录,自动恢复过程中的运行数据对后续分析解决性能异常问题的参考价值不大,若再继续记录自动恢复过程中的运行数据,会额外占用系统资源,造成系统资源的浪费。所以移动终端还获取待测游戏引擎应用的当前帧率,若当前帧率小于预设帧率,则控制计数器的数值减一,若当前帧率大于或等于预设帧率,则控制计数器的数值加一,当计数器的数值大于预设阈值时,表明此时帧率的回升速度大于下跌速度,控制性能测试插件停止记录待测游戏引擎应用出现性能异常时的运行数据。上述控制性能测试插件停止记录运行数据的操作,具体包括:移动终端通过性能监控模块与性能测试插件之间的通信接口发送停止监控通知给性能测试插件,性能测试插件接收到该停止监控通知时停止记录待测游戏引擎应用出现性能异常时的运行数据。在本发明实施例中,当移动终端监控到待测游戏引擎应用出现性能异常,并控制性能测试插件记录此时显示的场景对应的运行数据的过程中,随着时间的推移待测游戏引擎应用可能继续显示了其它场景的图像,而显示其它场景时也可能会出现性能异常,此时需要记录出现性能异常的其它场景对应的运行数据。首先移动终端需要监控待测游戏引擎应用是否出现了新的性能异常的场景。移动终端监控上述计数器的数值,当监控出该计数器的数值小于或等于预设阈值时,表明帧率的下跌速度大于回升速度,移动终端确定待测游戏引擎应用出现新的性能异常的场景,则延长 性能测试插件记录运行数据的预设记录时间,通过性能测试插件记录新的性能异常的场景对应的运行数据。通过上述步骤201和202的操作对待测游戏引擎应用进行性能监控,并在监控到出现性能异常时记录异常时的运行数据后,通过如下步骤203的操作来根据记录的运行数据生成测试结果。步骤203:移动终端获取性能测试插件记录的运行数据,根据记录的运行数据生成测试结果。移动终端可以直接将记录的运行数据作为测试结果,也可以根据记录的运行数据按照测试时间或出现异常的场景标识等分类排列,生成测试报告或测试报表,将该测试报告或测试报表作为测试结果。移动终端生成测试结果之后,还可以通过自身的网络通信接口将测试结果上传给监控服务器。移动终端可以在每次记录异常时的运行数据并生成测试结果后立即将测试结果上传至监控服务器。也可以周期性地每隔一小时或两小时等一定时间段将测试结果上传至监控服务器。将测试结果上传至监控服务器后,开发人员可以到监控服务器查看该测试结果,并根据该测试结果对待测游戏引擎的性能进行改良。由于移动终端对自身运行的待测游戏引擎应用进行性能监控,并在监控到出现性能异常时,控制待测游戏引擎应用中包含的性能测试插件记录此时的运行数据,并根据记录的运行数据生成测试结果,还可以通过移动终端上的网络通信接口将测试结果上传给监控服务器。如此不需要将移动终端连接到专门的监控终端上就可以进 行测试,能够实现对大批量的移动终端上的待测游戏引擎应用进行同时测试。另外,本发明实施例中的性能测试插件可以集成到具体的游戏的代码中,不需要进行代码维护,移动终端可以对待测游戏引擎应用进行自动化测试,大大提高了游戏引擎应用的性能测试的适用场景和便捷性。以上移动终端可以是手机或pad(portableandroiddevice,平板电脑)等便捷式的终端设备,上述游戏引擎可以是Unity3D应用,Unity3D是指由UnityTechnologies开发的用于创建三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型开发工具。下面以基于手机端的Unity3D应用性能测试为例,简单描述以上实施例提供的技术的运行过程:(1)在待测Unity3D应用中添加性能测试插件,并打包;(2)在目标手机安装监控软件及打包好的待测Unity3D应用;(3)启动监控软件,设置判断阈值及数据记录参数(例如最大磁盘占用空间、单次记录时长、最大记录时长等),如果不设置这些数值,可采用默认值进行测试;(4)在运行待测Unity3D应用时,监控软件会监控待测Unity3D应用的性能情况,出现问题后通知性能测试插件开启记录,即下发监控通知给性能测试插件;(5)当待测Unity3D应用恢复稳定性能标准后,监控软件会通知性能测试插件停止记录;(6)测试完毕后,监控软件收集所有问题记录数据上传至网页后台,网页后台生成报表及数据附件供开发人员查看。其中,上述性能测试插件的主要工作原理包括:在收到上述监控通知后,先保存当前问题场景的截图;再从待测Unity3D应用中获取场景名称,记录该场景共发生了多少次性能问题,更新该场景的平均帧率;最后开始抓取性能分析数据并按待测“应用版本-场景名-手机型号-测试日期”的分类方式区分保存数据。其中,抓取性能分析数据的方法包括:通过性能测试插件调用UnityEngine.Profiler函数,该函数可以返回等同于Unity3D自带Profiler的数据量,保证获取到最丰富的数据,方便后续分析性能瓶颈。上述步骤(2)中的监控软件的主要工作原理包括:抓取Unity3D应用在Logcat中输出的性能信息,通过如下算法获取相应数据,以帧率数据为例:fps=extractField(line.getMessage(),"avg:")其中,line.getMessage()函数用于获得当前行的内容,extractField用于提取当前行中,以”avg:”开头的数据。获取帧率数据后与用户设置的阀值数据做比较,超过阀值数据则向性能测试插件发送监控通知。上述帧率即设备每秒播放多少帧画面,是衡量三维应用是否能流畅运行的指标之一。Logcat是安卓中一个命令行工具,可以用于得到程序的日志信息。上述步骤(4)中,出现问题的判断标准可以采用如下方式:条件1:判定当前帧率是否低于预设帧率,不要求连续;条件2:判定是否连续预设时间段内的帧率均低于预设帧率,若已经连续数秒帧率低于预设帧率,但未满足设定的临界值连续预设时间段,而此时帧率回升至正常水平,则清零累计的记录时间;上述步骤(5)中,恢复稳定性能标准的判定算法如下:条件-定时器:判断本次记录时间是否达到单次记录时长,是则停止;条件-帧率回升:每秒统计一次,若当前帧率小于预设帧率,则计数器减一,若当前帧率大于预设帧率,则计数器加一。当计数器大于预设阈值时,停止记录。不要求连续,因为帧率一次波动可能导致停止。仅要求帧率的回升速度大于下跌速度。对于已经在记录中,但当记录时出现新的问题场景的判定算法可以如下:条件:每秒统计一次,若当前帧率小于预设帧率,则计数器减一,若当前帧率大于预设帧率,则计数器加一。当计数器小于预定阈值时,认为出现新的问题场景。满足上述条件后,若开启了由定时器停止记录运行数据的方式,则延长定时器。上述预设帧率、预设阈值及单次记录时长等,均可在测试前设置。上述判定方式均独立运作,即可单独使用,或按需组合使用。在本发明实施例中,移动终端安装有包含性能测试插件的待测游戏引擎应用;移动终端对自身运行的待测游戏引擎应用进行性能监控,在监控到待测游戏引擎应用出现性能异常时,通过性能测试插件记录待测游戏引擎应用出现性能异常时的运行数据。不需要将移动终端连接到监控服务器或监控终端,就可以对移动终端安装的待测游戏引擎应用进行性能测试,可以实现大批量的移动终端同时进行测试,且能够自动记录并保存待测游戏引擎应用出现性能异常时的运行数据,测试结束后提供对应的数据和场景供开发人员进行分析,大大提升了效率。本发明实施例所提供的测试游戏引擎应用的性能的移动终端包括的性能监控模块和数据收集模块可以为设备上的特定硬件或者安装于设备上的软件或固件等。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的模块和单元的具体工作过程,均可以参考上述方法实施例中的对应过程。在本申请所提供的几个实施例中,应该理解到,所揭露的移动终端和方法,可以通过其它的方式实现。以上所描述的测试游戏引擎应用的性能的移动终端的实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部 分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1