游戏测试方法及装置与流程

文档序号:17319500发布日期:2019-04-05 21:27阅读:349来源:国知局
游戏测试方法及装置与流程

本发明涉及游戏测试领域,具体而言,涉及一种游戏测试方法及装置。



背景技术:

相关技术中,在发生代码更改时,往往需要对更改的代码进行验证,通过验证结果,确认代码中的更改会按预期运行,不会破坏整个版本的稳定性。当前在进行代码更改时,往往是以代码版本的更替进行代码更改,从而实现游戏的优化,常用的方式包括传统冒烟测试、遍历冒烟测试、需求关联冒烟测试,下面对每一种测试进行说明。

第一种,传统冒烟测试,关注本次修改代码所对应的功能,从而进行回归测试,图1(a)是现有技术中一种冒烟测试的示意图,如图1(a)所示,本次修改是由需求a(demanda)迭代引起的,即当前版本revisiona(对应于版本号176780)经过需求demanda的修改,版本变成了revisiona+1(对应于版本号176781)的过程,但是这种传统冒烟测试,测试不全面,只测试了表面修改,与该修改相关的功能没有覆盖到,且每次修改都需要手动归类,根据归类后的功能进行回归,人工成本较大,不及时的更新类型,会导致后续提交的累积,从而失去冒烟测试的意义。

而对于第二种,遍历冒烟测试,无需关注本次提交的内容,也不需要关注每个需求之间的依赖关系,只需要把目前有的所有测试用例执行一遍来发现错误,即遍历冒烟测试是从开始到代码结尾都执行一遍,该种方式虽然能全部测试完成,但是在大型项目中,无法在短时间完成多个功能的遍历,造成测试阻塞,同时每次冒烟测试中存在大量冗余,增加了测试成本。

对于第三种,需求关联冒烟测试,根据需求关联关系,确定测试用例内容,图1(b)是现有技术中另一种冒烟测试的示意图,如图1(b)中所示,本次修改了需求a(demanda),并且与需求a关联的需求有需求b,那么本次修改将会影响需求a和需求b,对应的测试用例是test-taska和test-taskb,该种方式存在如下缺陷:需要对每次修改进行手动归类,在根据归类后的功能进行回归,人工成本较大,而且规定需求关系是人为规定的,可能存在遗漏和误差,导致回归测试不全。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种游戏测试方法及装置,以至少解决相关技术中在游戏测试时,需要手动对修改进行归类,人工成本较大,且测试不全面的技术问题。

根据本发明实施例的一个方面,提供了一种游戏测试方法,包括:获取修改文件列表,其中,所述修改文件列表中包括多个修改文件;获取文件关系引用树,其中,所述文件关系引用树中包括各个文件之间的引用关系;依据所述文件关系引用树,查询所述修改文件列表中每个修改文件对应的目标关联文件,其中,所述目标关联文件是关联游戏玩法的文件;对所述目标关联文件关联的游戏玩法进行回归测试,得到测试结果。

可选地,在获取文件关系引用树之前,所述方法还包括:每隔预设时间段,获取一次游戏中的各个文件和每个文件之间的第一映射关系,其中,所述映射关系指示了文件之间的调用关系;依据文件之间的第一映射关系,建立所述文件关系引用树。

可选地,获取修改文件列表还包括:在游戏版本库中增加一个文件的情况下,确定该增加的文件为一个修改文件,将所述增加的文件补入所述修改文件列表中,并查询该增加的文件所引用的文件;在游戏版本库中删除一个文件的情况下,确定该删除的文件为一个修改文件,将所述删除的文件补入所述修改文件列表中,并将所述文件关系引用树中所有关于该删除文件的内容删除。

可选地,获取修改文件列表包括:获取游戏版本控制的提交信息,其中,所述提交信息中至少包括:游戏版本控制中进行修改的文件和文件路径;依据所述提交信息,确定多个修改文件,以建立所述修改文件列表。

可选地,在获取修改文件列表时,还包括:对每个所述修改文件,获取所述提交信息中的关键词;建立所述文件路径和所述关键词之间的第二映射关系;将每个所述第二映射关系输入至聚类分析模型中,以训练所述聚类分析模型,其中,所述聚类分析模型用于输出与每个所述修改文件所关联的游戏玩法。

可选地,依据所述文件关系引用树,查询所述修改文件列表中每个修改文件对应的目标关联文件包括:通过递归方式,遍历所述文件关系引用树中引用所述修改文件的所有文件;检测所述引用所述修改文件的所有文件中影响游戏玩法的关键文件;将所述关键文件作为所述目标关联文件,并确定每个目标关联文件所关联的游戏玩法。

可选地,对所述目标关联文件关联的游戏玩法进行回归测试,得到测试结果包括:确定与每个所述目标关联文件所关联的游戏玩法;建立游戏玩法列表;依次对所述游戏玩法列表中的每个游戏玩法进行回归测试,得到所述测试结果。

根据本发明实施例的另一方面,还提供了一种游戏测试装置,包括:第一获取模块,用于获取每次提交的修改文件,以得到修改文件列表;文件索引模块,根据每次提交的修改文件,从文件关系引用树中查询到与所述修改文件关联的所有文件;文件查询模块,用于依据预先获取到的文件记录和文件关键词,获取所述文件索引模块中得到的所有文件中与游戏玩法关联的目标关联文件,并确认与所述修改文件关联的所有游戏玩法;回归测试模块,用于对关联的游戏玩法进行回归测试,得到测试结果。

可选地,所述游戏测试装置还包括:第二获取模块,用于在获取文件关系引用树之前,每隔预设时间段,获取一次游戏中的各个文件和每个文件之间的第一映射关系,其中,所述映射关系指示了文件之间的调用关系;第一建立模块,用于依据文件之间的第一映射关系,建立所述文件关系引用树。

可选地,所述第一获取模块还包括:第一确定单元,用于在游戏版本库中增加一个文件的情况下,确定该增加的文件为一个修改文件,将所述增加的文件补入所述修改文件列表中,并查询该增加的文件所引用的文件;第二确定单元,用于在游戏版本库中删除一个文件的情况下,确定该删除的文件为一个修改文件,将所述删除的文件补入所述修改文件列表中,并将所述文件关系引用树中所有关于该删除文件的内容删除。

可选地,所述第一获取模块还包括:第一获取单元,用于获取游戏版本控制的提交信息,其中,所述提交信息中至少包括:游戏版本控制中进行修改的文件和文件路径;第一建立单元,用于依据所述提交信息,确定多个修改文件,以建立所述修改文件列表。

可选地,所述游戏测试装置还包括:第三获取模块,用于在获取修改文件列表时,对每个所述修改文件,获取所述提交信息中的关键词;第二建立模块,用于建立所述文件路径和所述关键词之间的第二映射关系;训练模块,用于将每个所述第二映射关系输入至聚类分析模型中,以训练所述聚类分析模型,其中,所述聚类分析模型用于输出与每个所述修改文件所关联的游戏玩法。

可选地,所述文件查询模块包括:遍历单元,用于通过递归方式,遍历所述文件关系引用树中引用所述修改文件的所有文件;检测单元,用于检测所述引用所述修改文件的所有文件中影响游戏玩法的关键文件;第一确定单元,用于将所述关键文件作为所述目标关联文件,并确定每个目标关联文件所关联的游戏玩法。

可选地,所述回归测试模块包括:第二确定单元,用于确定与每个所述目标关联文件所关联的游戏玩法;建立单元,用于建立游戏玩法列表;测试单元,用于依次对所述游戏玩法列表中的每个游戏玩法进行回归测试,得到所述测试结果。

根据本发明实施例的另一方面,还提供了一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的游戏测试方法。

根据本发明实施例的另一方面,还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述任意一项所述的游戏测试方法。

在本发明实施例中,获取修改文件列表,其中,修改文件列表中包括多个修改文件,获取文件关系引用树,其中,文件关系引用树中包括各个文件之间的引用关系,依据文件关系引用树,查询修改文件列表中每个修改文件对应的目标关联文件,其中,目标关联文件是关联游戏玩法的文件,对目标关联文件关联的游戏玩法进行回归测试,得到测试结果。在该实施例中,可以通过预先建立文件关系引用树,对修改文件的关联文件进行查询,从而确定出该修改文件所关联的游戏玩法,进而对游戏玩法进行回归测试,本发明中无需人工对修改的代码或文件进行归类,通过文件关系引用树就可以查询到其影响的游戏玩法,实现自动化的回归测试,无需用户进行相关的归类工作,减少了人工的工作量,进而解决相关技术中在游戏测试时,需要手动对修改进行归类,人工成本较大,且测试不全面的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1(a)是现有技术中一种冒烟测试的示意图;

图1(b)是现有技术中另一种冒烟测试的示意图;

图2是根据本发明实施例的游戏测试方法的流程图;

图3是根据本发明实施例的一种可选的查询修改文件的关联游戏玩法的示意图;

图4是根据本发明实施例的另一种游戏测试装置的示意图;

图5是根据本发明实施例的一种可选的电子设备的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为便于用户理解本发明,下面对本发明各实施例中涉及的部分术语或名词做出解释:

冒烟测试(smoketesting):描述的是在将代码更改嵌入到产品的源代码时,对这些更改进行验证的过程,冒烟测试设计用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性。

版本控制(revisioncontrol):是维护工程蓝图的标准作法,能追踪工程蓝图从诞生一直到定案的过程。此外,版本控制也是一种软件工程技巧,借此能在软件开发的过程中,确保由不同人所编辑的同一代码文件案都得到同步。能记录任何工程项目内各个模块的改动历程,并为每次改动编上序号。

文件索引树(file-importtree):用于保存文件引用关系信息的树状数据结构。每一个节点的子节点表示,子节点引用了该节点。在本申请中也可以以文件关系引用树说明该文件索引树。

文件需求映射(deeplearningfile-demandmapping):通过机器学习部分已经给出的需求映射和svn的提交不断丰富需求和文件的映射内容,最终形成一个可以根据文件输出需求的映射关系图。

本申请下述实施例可以应用于各种游戏代码测试中,对游戏版本和具体的游戏软件不做限定。相对于当前在进行测试时,需要手动对修改的代码的进行归类,人工成本较大的情况,本申请中可以减少人工的操作,实现自动化的测试。下面通过各个实施例对本发明进行详细说明。

实施例一

根据本发明实施例,提供了一种游戏测试方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图2是根据本发明实施例的游戏测试方法的流程图,如图2所示,该方法包括如下步骤:

步骤s202,获取修改文件列表,其中,修改文件列表中包括多个修改文件;

步骤s204,获取文件关系引用树,其中,文件关系引用树中包括各个文件之间的引用关系;

步骤s206,依据文件关系引用树,查询修改文件列表中每个修改文件对应的目标关联文件,其中,目标关联文件是关联游戏玩法的文件;

步骤s208,对目标关联文件关联的游戏玩法进行回归测试,得到测试结果。

通过上述步骤,可以获取修改文件列表,其中,修改文件列表中包括多个修改文件,获取文件关系引用树,其中,文件关系引用树中包括各个文件之间的引用关系,依据文件关系引用树,查询修改文件列表中每个修改文件对应的目标关联文件,其中,目标关联文件是关联游戏玩法的文件,对目标关联文件关联的游戏玩法进行回归测试,得到测试结果。在该实施例中,可以通过预先建立文件关系引用树,对修改文件的关联文件进行查询,从而确定出该修改文件所关联的游戏玩法,进而对游戏玩法进行回归测试,本发明中无需人工对修改的代码或文件进行归类,通过文件关系引用树就可以查询到其影响的游戏玩法,实现自动化的回归测试,无需用户进行相关的归类工作,减少了人工的工作量,进而解决相关技术中在游戏测试时,需要手动对修改进行归类,人工成本较大,且测试不全面的技术问题。

下面对本申请上述关联的各个步骤进行详细说明。

本申请中可以预先建立文件关系引用树,也可以叫做文件索引树,该文件关系引用树中包括了多个文件节点,可以在获取文件关系引用树之前,每隔预设时间段,获取一次游戏中的各个文件和每个文件之间的第一映射关系,其中,映射关系指示了文件之间的调用关系;依据文件之间的第一映射关系,建立文件关系引用树。

该文件关系引用树的结构可以是一个不断维护的树状结构,该结构中记录了所有的文件引用关系,可以根据这个文件关系引用树的文件引用关系,从一个修改文件导出与之相关联的所有文件,从而输出修改文件列表。

在建立文件关系引用树时,可以使用脚本语言python,其他语言类似,针对编译型语言更为简单。使用静态代码分析模块ast分析所有的python脚本,将其中的import和fromimport作为关键字,可以得到每个文件引用了哪些其他的文件。

具体遍历方式,可以包括:使用compiler.walk遍历python文件的节点;自定义一个visitor类,并重写visitimport和visitfrom方法,来提取需要的内容。;使用装饰器来拦截需要提取的内容,并保存;将依赖关系用键值对表示,最后合并这些键值对,就可以得到一个版本库的依赖关系了,即可以得到文件关系引用树。

步骤s202,获取修改文件列表,其中,修改文件列表中包括多个修改文件。

这里可以通过对每次提交的游戏版本进行监听,以确定出每次提交的修改文件,从而对每个游戏版本确定一个修改文件列表,可选的,获取修改文件列表包括:获取游戏版本控制的提交信息,其中,提交信息中至少包括:游戏版本控制中进行修改的文件和文件路径;依据提交信息,确定多个修改文件,以建立修改文件列表。本申请中,可以在服务器中加入挂钩hook代码,通过挂钩hook监控每一次提交版本,监听版本控制的提交信息,如果有提交会给自己部署的服务器发消息,从而获取每次提交游戏版本控制的提交信息,进而确定出该次版本中的修改文件,输出一组修改文件的列表。

在本示例性实施例中,获取修改文件列表还包括:在游戏版本库中增加一个文件的情况下,确定该增加的文件为一个修改文件,将增加的文件补入修改文件列表中,并查询该增加的文件所引用的文件;在游戏版本库中删除一个文件的情况下,确定该删除的文件为一个修改文件,将删除的文件补入修改文件列表中,并将文件关系引用树中所有关于该删除文件的内容删除。

上述实施方式中,说明了增加文件和删除文件都可以作为修改文件,当然,该修改文件还可以是其它的,例如,插入文件,将插入文件也作为修改文件。如果在版本库中新增了一个文件,其实就是需要在文件关系引用树中新加一个文件节点,只需要分析该新增文件引用了哪些文件,并将这些文件的子节点中添加新增文件即可。如果是删除文件,需要将整棵文件关系引用树中所有该文件节点删除,如果是修改节点,需要重新计算该节点的引用文件,并更新文件关系引用树。

在本发明实施例中,在获取修改文件列表时,还包括:对每个修改文件,获取提交信息中的关键词;建立文件路径和关键词之间的第二映射关系;将每个第二映射关系输入至聚类分析模型中,以训练聚类分析模型,其中,聚类分析模型用于输出与每个修改文件所关联的游戏玩法。

通过上述的聚类分析模型可以对修改文件进行分析,以确定修改文件所对应的游戏玩法,本发明中可以使用该聚类分析模型执行步骤s202至步骤s206,在训练时,首先根据文件和需求进行无监督训练,然后加入人工的干预,生成相对正确的对应关系,称之为规则,在后续文件修改作为输入的时候,可以应用该规则匹配,生成机器学习判断的模块。即该聚类分析模型可以是根据机器的无监督学习,辅助人工的干预,来确定一份机器学习的规则,然后根据规则就可以进行自动识别新输入的数据了,如识别修改的文件日志记录中的关键词。

对于上述的提交信息,可以是指服务器(如svn服务器)提交的修改文件的相关记录信息,包括提交的关键词,将这些数据作为无干预学习数据,由于在服务器提交的时候会有提交日志记录,一般为了方便记录和规范要求,我们需要在日志记录中标明该次提交的所有信息,这样,在提取记录信息时,提取其中的关键字就可以了,从而建立修改文件与关键词之间的映射,例如,在一次提交中,修改的文件路径对应了“anticheat_utils.py”,而在文件日志记录中包含了一个关键词“外挂”,此时就可以建立该修改的文件路径与关键词之间的映射关系:anticheat_utils.py->外挂。

步骤s204,获取文件关系引用树,其中,文件关系引用树中包括各个文件之间的引用关系。

步骤s206,依据文件关系引用树,查询修改文件列表中每个修改文件对应的目标关联文件,其中,目标关联文件是关联游戏玩法的文件。

即可以通过文件关系引用树,来查询出与每个修改文件所关联的文件,并确定出关联的文件中影响游戏玩法的关键文件,如果关联的文件中有游戏玩法的关键文件时,可以将该文件记录为目标关联文件,在后续需要对该目标关联文件所关联的游戏玩法进行测试。

在本发明一可选的示例中,依据文件关系引用树,查询修改文件列表中每个修改文件对应的目标关联文件包括:通过递归方式,遍历文件关系引用树中引用修改文件的所有文件;检测引用修改文件的所有文件中影响游戏玩法的关键文件;将关键文件作为目标关联文件,并确定每个目标关联文件所关联的游戏玩法。

即可以通过递归方式,由上至下,对文件关系引用树中所有引用修改文件的文件进行遍历,从而查询到与修改文件的所有关联文件,如果有引用修改文件的所有文件中有游戏玩法的关键文件,则将关键文件确定为目标关联文件。

图3是根据本发明实施例的一种可选的查询修改文件的关联游戏玩法的示意图,如图3所示,a.py是本次提交修改的文件,并且文件b(a).py,c(a).py,d(a).py引用了文件a.py,文件e(b).py和f(b).py引用了文件b.py,从图3中可以看出,文件关系引用树的部分引用关系,除此之外,文件f.py是游戏玩法play1(f)的关键文件,文件c.py是玩法play2(c)的关键文件。在这种情况下,如果a.py修改了,可以看出b(a).py,c(a).py,d(a).py都有可能受到影响,而b(a).py受到影响的话,e(b).py和f(b).py就也有可能受到影响,在修改了文件a.py之后,与其相关联的文件b(a).py,c(a).py,d(a).py,e(b).py和f(b).py都有可能受到影响。在这些关联文件中,c(a).py和f(b).py又分别是游戏玩法play1(c)和play2(f)的关键文件。所以可以认为文件a.py的修改可能会影响到的游戏玩法有play1(c)和play2(f),因此在修改文件是a.py的时候,目标关联文件为f(b).py和c(a).py,与该修改文件对应的游戏玩法为play1(c)和play2(f),也就是在test-case的模块中,其输入为play1(c)和play2(f)。

步骤s208,对目标关联文件关联的游戏玩法进行回归测试,得到测试结果。

在查询得到修改文件和可能影响的游戏玩法后,就可以对这些游戏玩法进行回归测试,可选的,对目标关联文件关联的游戏玩法进行回归测试,得到测试结果包括:确定与每个目标关联文件所关联的游戏玩法;建立游戏玩法列表;依次对游戏玩法列表中的每个游戏玩法进行回归测试,得到测试结果。

本发明实施例中,可以借助文件索引技术,确定需要回归的内容,可以自动的确认可能影响到的玩法,并构建测试用例,在广度和深度上进行扩展,对新人和没有代码权限的员工有着更好地友好性。

通过上述实施例,可以实现游戏玩法的自动化回归测试,通过静态代码分析,获取各个文件的引用关系,从而创建一棵文件引用关系树,通过hook版本控制(svn,git)来获取文件修改,并引用关系树和聚类分析模型确定修改文件影响的游戏玩法,然后对游戏玩法进行回归测试,在实现测试自动化的同时,可以加快测试速度,提高测试效率,减少测试人员的工作量。

下面通过另一种可选的实施例对本发明进行详细说明。

实施例二

图4是根据本发明实施例的另一种游戏测试装置的示意图,如图4所示,该装置可以包括:第一获取模块41,文件索引模块43,文件查询模块45,回归测试模块47,其中,

第一获取模块41,用于获取每次提交的修改文件,以得到修改文件列表;

文件索引模块43,根据每次提交的修改文件,从文件关系引用树中查询到与修改文件关联的所有文件;

文件查询模块45,用于依据预先获取到的文件记录和文件关键词,获取文件索引模块中得到的所有文件中与游戏玩法关联的目标关联文件,并确认与修改文件关联的所有游戏玩法;

回归测试模块47,用于对关联的游戏玩法进行回归测试,得到测试结果。

上述游戏测试装置,可以通过第一获取模块41获取每次提交的修改文件,以得到修改文件列表获取修改文件列表,通过文件索引模块43根据每次提交的修改文件,从文件关系引用树中查询到与修改文件关联的所有文件,通过文件查询模块45依据预先获取到的文件记录和文件关键词,获取文件索引模块中得到的所有文件中与游戏玩法关联的目标关联文件,并确认与修改文件关联的所有游戏玩法,最后可以通过回归测试模块47,用于对关联的游戏玩法进行回归测试,得到测试结果。在该实施例中,可以通过预先建立文件关系引用树,对修改文件的关联文件进行查询,从而确定出该修改文件所关联的游戏玩法,进而对游戏玩法进行回归测试,本发明中无需人工对修改的代码或文件进行归类,通过文件关系引用树就可以查询到其影响的游戏玩法,实现自动化的回归测试,无需用户进行相关的归类工作,减少了人工的工作量,进而解决相关技术中在游戏测试时,需要手动对修改进行归类,人工成本较大,且测试不全面的技术问题。

下面可以对上述各个模块进行详细说明。

可选的,对于第一获取模块41,用于获取每次提交的修改文件,以得到修改文件列表。

这里可以将该第一获取模块定义为挂钩hook模块,该模块可以帮助进行监听svn版本控制的提交信息,获取每次提交的修改文件,其输出是一组修改文件的列表。

可选的,第一获取模块还包括:第一确定单元,用于在游戏版本库中增加一个文件的情况下,确定该增加的文件为一个修改文件,将增加的文件补入修改文件列表中,并查询该增加的文件所引用的文件;第二确定单元,用于在游戏版本库中删除一个文件的情况下,确定该删除的文件为一个修改文件,将删除的文件补入修改文件列表中,并将文件关系引用树中所有关于该删除文件的内容删除。

在本发明一示例中,第一获取模块还包括:第一获取单元,用于获取游戏版本控制的提交信息,其中,提交信息中至少包括:游戏版本控制中进行修改的文件和文件路径;第一建立单元,用于依据提交信息,确定多个修改文件,以建立修改文件列表。

文件索引模块43,根据每次提交的修改文件,从文件关系引用树中查询到与修改文件关联的所有文件。

该模块是一个不断维护的树状结构(或者是树状结构)。该结构中记录了所有的文件引用关系。可以根据这个模块的内容,从一个修改文件导出与之相关的所有文件。其输出是一组修改文件关联的影响文件的列表。

在创建文件关系引用树时,可以使用脚本语言python,其他语言也可以,针对编译型语言更为简单,使用静态代码分析模块-ast分析所有的python脚本,将其中的import和fromimport作为关键字,可以得到每个文件引用了哪些其他的文件。

具体遍历分析方法包括:使用compiler.walk遍历python文件的节点;自定义一个visitor类,并重写visitimport和visitfrom方法,来提取需要的内容;使用装饰器来拦截需要提取的内容,并保存;将依赖关系用很多个键值对表示,最后合并这些键值对,就可以得到一个版本库的依赖关系了。

如果在版本库中新增了一个文件,其实就是需要在文件关系引用树中新加一个节点,只需要分析该文件引用了哪些文件,并将这些文件的子节点中添加新增文件即可。如果是删除文件,需要将整棵文件关系引用树中所有该节点删除,如果是修改节点,需要重新计算该节点的引用文件,并更新文件关系引用树。

在遍历文件关系引用树,可以使用递归,首先从修改的文件出发,访问这个节点的所有子节点,并将子节点加入到影响文件数组,进而得到所有与修改文件关联的文件,得到一个文件数组。

文件查询模块45,用于依据预先获取到的文件记录和文件关键词,获取文件索引模块中得到的所有文件中与游戏玩法关联的目标关联文件,并确认与修改文件关联的所有游戏玩法。

作为本发明一可选的示例,文件查询模块包括:遍历单元,用于通过递归方式,遍历文件关系引用树中引用修改文件的所有文件;检测单元,用于检测引用修改文件的所有文件中影响游戏玩法的关键文件;第一确定单元,用于将关键文件作为目标关联文件,并确定每个目标关联文件所关联的游戏玩法。

在本发明实施例中,可以预先建立关键文件到游戏玩法的映射关系,这样在确定出一个修改文件,并得到文件记录信息后,可以查询到关键词,进而依据关键词与修改文件的地址之间的映射关系,确定出每一个修改文件所关联的游戏玩法,这一部门可以通过机器学习来实现,也可以通过其他的形式,比较简单的可以人工规定其中部分关键文件和玩法的映射关系。可以将很多次的svn提交和日志log作为训练的样本,经过人工干预,生成匹配规则,并在后续中自动生成结果,这样可以极大程度的减少人为工作。

通过svn服务器提交的记录和关键词作为映射输入,不断丰富和迭代映射关系。从文件关系引用树中获取关联文件,进而确定每一个关联文件是不是某些游戏玩法的关键文件。如果包含其中一些游戏玩法的关键文件,输出这些关键文件,并输出相应的游戏玩法列表。

回归测试模块47,用于对关联的游戏玩法进行回归测试,得到测试结果。

可选地,回归测试模块包括:第二确定单元,用于确定与每个目标关联文件所关联的游戏玩法;建立单元,用于建立游戏玩法列表;测试单元,用于依次对游戏玩法列表中的每个游戏玩法进行回归测试,得到测试结果。

可选的,游戏测试装置还包括:第二获取模块,用于在获取文件关系引用树之前,每隔预设时间段,获取一次游戏中的各个文件和每个文件之间的第一映射关系,其中,映射关系指示了文件之间的调用关系;第一建立模块,用于依据文件之间的第一映射关系,建立文件关系引用树。

可选地,游戏测试装置还包括:第三获取模块,用于在获取修改文件列表时,对每个修改文件,获取提交信息中的关键词;第二建立模块,用于建立文件路径和关键词之间的第二映射关系;训练模块,用于将每个第二映射关系输入至聚类分析模型中,以训练聚类分析模型,其中,聚类分析模型用于输出与每个修改文件所关联的游戏玩法。

上述的游戏测试装置还可以包括处理器和存储器,上述第一获取模块41,文件索引模块43,文件查询模块45,回归测试模块47等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

上述处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来对关联的游戏玩法进行回归测试,得到测试结果。

上述存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。

根据本发明实施例的另一方面,还提供了一种电子设备,图5是根据本发明实施例的一种可选的电子设备的示意图,如图5所示,该电子设备510包括存储器520以及处理器530,其中,存储器,用于存储处理器的可执行指令,而处理器配置为经由执行可执行指令来执行如下步骤的程序:获取修改文件列表,其中,修改文件列表中包括多个修改文件;获取文件关系引用树,其中,文件关系引用树中包括各个文件之间的引用关系;依据文件关系引用树,查询修改文件列表中每个修改文件对应的目标关联文件,其中,目标关联文件是关联游戏玩法的文件;对目标关联文件关联的游戏玩法进行回归测试,得到测试结果。

可选地,上述处理器在执行程序,还包括如下步骤:在获取文件关系引用树之前,每隔预设时间段,获取一次游戏中的各个文件和每个文件之间的第一映射关系,其中,映射关系指示了文件之间的调用关系;依据文件之间的第一映射关系,建立文件关系引用树。

可选地,上述处理器在执行程序,还包括如下步骤:在游戏版本库中增加一个文件的情况下,确定该增加的文件为一个修改文件,将增加的文件补入修改文件列表中,并查询该增加的文件所引用的文件;在游戏版本库中删除一个文件的情况下,确定该删除的文件为一个修改文件,将删除的文件补入修改文件列表中,并将文件关系引用树中所有关于该删除文件的内容删除。

可选地,上述处理器在执行程序,还包括如下步骤:获取游戏版本控制的提交信息,其中,提交信息中至少包括:游戏版本控制中进行修改的文件和文件路径;依据提交信息,确定多个修改文件,以建立修改文件列表。

可选地,上述处理器在执行程序,还包括如下步骤:对每个修改文件,获取提交信息中的关键词;建立文件路径和关键词之间的第二映射关系;将每个第二映射关系输入至聚类分析模型中,以训练聚类分析模型,其中,聚类分析模型用于输出与每个修改文件所关联的游戏玩法。

可选地,上述处理器在执行程序,还包括如下步骤:通过递归方式,遍历文件关系引用树中引用修改文件的所有文件;检测引用修改文件的所有文件中影响游戏玩法的关键文件;将关键文件作为目标关联文件,并确定每个目标关联文件所关联的游戏玩法。

可选地,上述处理器在执行程序,还包括如下步骤:确定与每个目标关联文件所关联的游戏玩法;建立游戏玩法列表;依次对游戏玩法列表中的每个游戏玩法进行回归测试,得到测试结果。

根据本发明实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述任意一项的游戏测试方法。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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