基于运行分析的游戏引擎开发测试系统技术方案

技术编号:37818273 阅读:14 留言:0更新日期:2023-06-09 09:50
本发明专利技术涉及一种测试方法,尤其为基于运行分析的游戏引擎开发测试系统,包括:数据存储模块:用于提供数据接口进行游戏引擎开发测试数据的交互和存储;引擎开发模块:用于对游戏引擎的子部分进行开发;运行分析模块:用于对引擎开发模块开发的游戏引擎子部分进行运行分析;功能实现模块:用于对开发的游戏引擎的子部分进行汇总生成完整的游戏引擎。本发明专利技术通过对生成的游戏引擎的各子部分通过生成测试用例,并进行测试用例的变异,通过A*算法和Bresenham算法相结合的自适应寻优算法进行运行测试分析,并对无法完成既定功能的代码进行返回,能够有效提高开发人员的开发效率,提升用户体验感。用户体验感。用户体验感。

【技术实现步骤摘要】
基于运行分析的游戏引擎开发测试系统


[0001]本专利技术涉及一种一种测试方法,尤其是基于运行分析的游戏引擎开发测试系统。

技术介绍

[0002]游戏引擎是缩短游戏开发周期、提高游戏研发效率的应用程序组件集合,包含多种功能模块接口,是游戏开发质量的关键。游戏开发是多个工种合力完成的一项大型复杂的工程。游戏引擎出现之前,需要各个领域的专家耗费大量时间与精力才能完成一个简单的游戏。游戏引擎出现后,许多功能组件都进行了封装,开发人员不再需要面对底层开发,不必从零开始,从而有效提高了游戏开发效率。游戏引擎在最近几年得到了快速发展,也成为互联网用户访问搜索的热点话题之一,游戏引擎的开发过程中涉及的代码数量冗杂,游戏引擎开发代码生成的测试用例的检测能力不足,其问题主要来自于两个方面,一方面,计时器精度与JavaScript操作的执行时间不匹配使性能测试变得困难。例如,JavaScript中计时器的精度在不同的JavaScript引擎中实现不一致,目前精度较高的JavaScript计时器是time.js,其精度也只能达到毫秒级别。另一方面,JavaScript引擎在执行简单的操作时可能不会暴露出潜在的性能问题,但随着操作次数的不断增加,引擎的执行效率会越来越低,当达到一定程度时这种性能缺陷就会表现出来。例如,在测试数组扩容算法是否高效时,需要测试用例中存在扩容操作且扩容的频率要足够高。无区别的对游戏引擎开发代码生成的测试用例中的每条语句都分别添加循环并利用其进行测试可能会导致大量完全等价的测试用例被反复执行,或是导致原始测试用例中的部分分支可能没有被执行,对此分支中的语句添加for循环没有意义且浪费计算资源。
[0003]为了避免这种无效变异造成计算资源的浪费,本专利技术提出一种基于自适应寻优算法的游戏引擎运行分析测试系统,对游戏引擎开发代码生成的测试用例进行变异检测,并将A*算法与Bresenham算法相结合生成自适应寻优算法,以提高对测试用例的搜索效率,提升开发人员检测效率。

技术实现思路

[0004]本专利技术的目的是通过提出基于运行分析的游戏引擎开发测试系统,以解决上述
技术介绍
中提出的缺陷。
[0005]本专利技术采用的技术方案如下:提供基于运行分析的游戏引擎开发测试系统,包括:数据存储模块:用于提供数据接口进行游戏引擎开发测试数据的交互和存储;引擎开发模块:用于对游戏引擎的子部分进行开发;运行分析模块:用于对引擎开发模块开发的游戏引擎子部分进行运行分析;功能实现模块:用于对开发的游戏引擎的子部分进行汇总生成完整的游戏引擎。
[0006]作为本专利技术的一种优选技术方案:所述数据存储模块中的数据接口用于提供标准化数据接口和各类模板函数,还提供各类枚举类型作为键值,用以实现游戏引擎开发过程
中的数据交互。
[0007]作为本专利技术的一种优选技术方案:所述引擎开发模块的子部分包括硬件部分、开发部分、场景部分和游戏性部分。
[0008]作为本专利技术的一种优选技术方案:所述硬件部分包括I/O接口、声音、网络和图形;所述开发部分包括开发环境、脚本解析和插件;所述场景部分包括渲染引擎和物理引擎;所述游戏性部分包括资源管理、场景管理、数据库与人工智能。
[0009]作为本专利技术的一种优选技术方案:所述运行分析模块对引擎开发模块中开发出的各子部分生成的代码进行运行分析,并对无法完成既定功能的代码进行反馈。
[0010]作为本专利技术的一种优选技术方案:所述运行分析模块根据开发的游戏引擎代码,在原有函数定义的基础上添加函数调用生成测试用例,对测试用例进行性能变异以进行功能测试。
[0011]作为本专利技术的一种优选技术方案:所述性能变异算法如下:S2.1:初始化存储变异测试用例的数组,将测试用例转化成抽象语法树,并将抽象语法树的根节点添加到待变异的节点队列中;S2.2:采用广度优先遍历算法遍历抽象语法树中的每一层节点,遍历的顺序是由外层到内存逐层遍历,直到当前节点中不存在子节点为止;S2.3:查找当前节点的子节点是否可以添加循环且不会导致语法错误,即当前节点的子节点是语句类型;在抽象语法树上分别对每条语句添加循环实现变异,每一次变异都生成一个变异测试用例并且在获取变异测试用例后将抽象语法树恢复为未变异前的测试用例的语法树状态;S2.4:如果当前节点只是一个普通的节点,则将其加入待变异的节点队列中;如果其不是节点类型,结束对当前节点的变异。
[0012]作为本专利技术的一种优选技术方案:所述S2.3中,每个变异的测试用例只修改原测试用例中一条语句。
[0013]作为本专利技术的一种优选技术方案:所述运行分析模块根据变异的测试用例通过A*算法和Bresenham算法相结合的自适应寻优算法对开发的游戏引擎代码进行测试。
[0014]作为本专利技术的一种优选技术方案:所述自适应寻优算法步骤如下:S3.1:从起始点START到目标点END之间,首先使用Bresenham算法按照开发的游戏引擎代码开始运行测试,将搜索到非障碍物路径节点和顺序保存到列表BList1中,如果在START和END节点之间没有障碍物(无法完成既定功能的测试用例),则测试成功;S3.2:如果使用Bresenham算法搜索路径阶段遇到障碍物节点,将碰到的障碍物节点的前一个节点记作start节点,从目标点END开始到起始点START使用Bresenham算法进行测试,直到遇到障碍物,将不是障碍物的测试用例顺序保存到列表BList2中,并将遇到第一个障碍物之前的节点记作end节点;S3.3:使用标准A*算法寻找start节点到end节点之间的可实现既定功能的测试用例,如果没有测试用例,则寻路失败,退出测试用例测试,如果存在测试用例,将搜索到的测试用例保存到列表AList中;S3.4:如果AList为空,则BList1为测试用例集合;如果AList不为空,则将BList2中的测试用例顺序进行反转,依次将BList1,AList和BList2按顺序存储到List,得到List
为测试用例集合。
[0015]本专利技术提供的基于运行分析的游戏引擎开发测试系统,与现有技术相比,其有益效果有:本专利技术通过对生成的游戏引擎的各子部分通过生成测试用例,并进行测试用例的变异,对测试用例中未执行的语句进行检测并删除,只保留测试用例中能被执行的语句。删除未执行语句后的测试用例将作为性能变异的种子用例,通过A*算法和Bresenham算法相结合的自适应寻优算法进行运行测试分析,并对无法完成既定功能的代码进行返回,能够有效提高开发人员的开发效率,提升用户体验感。
附图说明
[0016]图1为本专利技术优选实施例的系统框图。
[0017]图中各个标记的意义为:100、数据存储模块;200、引擎开发模块;300、运行分析模块;400、功能实现模块。
实施方式
[0018]需要说明的是,在不冲突的情况下,本实施例中的实施例及实施例中的特征可以相互组合,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于运行分析的游戏引擎开发测试系统,其特征在于:包括:数据存储模块(100):用于提供数据接口进行游戏引擎开发测试数据的交互和存储;引擎开发模块(200):用于对游戏引擎的子部分进行开发;运行分析模块(300):用于对引擎开发模块(200)开发的游戏引擎子部分进行运行分析;功能实现模块(400):用于对开发的游戏引擎的子部分进行汇总生成完整的游戏引擎。2.根据权利要求1所述的基于运行分析的游戏引擎开发测试系统,其特征在于:所述数据存储模块(100)中的数据接口用于提供标准化数据接口和各类模板函数,还提供各类枚举类型作为键值,用以实现游戏引擎开发过程中的数据交互。3.根据权利要求1所述的基于运行分析的游戏引擎开发测试系统,其特征在于:所述引擎开发模块(200)的子部分包括硬件部分、开发部分、场景部分和游戏性部分。4.根据权利要求3所述的基于运行分析的游戏引擎开发测试系统,其特征在于:所述硬件部分包括I/O接口、声音、网络和图形;所述开发部分包括开发环境、脚本解析和插件;所述场景部分包括渲染引擎和物理引擎;所述游戏性部分包括资源管理、场景管理、数据库与人工智能。5.根据权利要求1所述的基于运行分析的游戏引擎开发测试系统,其特征在于:所述运行分析模块(300)对引擎开发模块中开发出的各子部分生成的代码进行运行分析,并对无法完成既定功能的代码进行反馈。6.根据权利要求5所述的基于运行分析的游戏引擎开发测试系统,其特征在于:所述运行分析模块(300)根据开发的游戏引擎代码,在原有函数定义的基础上添加函数调用生成测试用例,对测试用例进行性能变异以进行功能测试。7.根据权利要求6所述的基于运行分析的游戏引擎开发测试系统,其特征在于:所述性能变异算法如下:S2.1:初始化存储变异测试用例的数组,将测试用例转化成抽象语法树,并将抽象语法树的根节点添加到待变异的节点队列中;S2.2:采用广度优先遍历算法遍历抽象语法树中的每一层节点,遍历的顺序是由外层到内存逐层遍历,直到当前节点中不存在子节点为止;S2.3:查找当前节点的子节点是...

【专利技术属性】
技术研发人员:朱时球陆雨帆
申请(专利权)人:深圳指尖互娱科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1