本发明涉及计算机技术领域,尤其是涉及一种测试系统和测试方法。
背景技术:
目前,为了更好的提升软件的性能,通常需要对软件进行测试,其中,通过自动化测试可以在预设条件下运行系统或应用程序,评估运行结果,从而根据运行结果评估软件的性能,以便对软件的功能进行优化。3d图形软件主要包括3d游戏、3d渲染软件等,目前很多3d图形软件测试工具通常都比较有针对性,通用性不足,而且存在对某些3d场景失效的缺点,软件测试的灵活性不高,无法满足3d图形软件日益丰富的功能所需的各种不同需求的测试场景。
技术实现要素:
本发明的目的在于提供一种测试系统和测试方法,有效提升了3d图形软件测试的通用性。
第一方面,本发明实施例提供了一种测试系统,测试系统包括测试用例模块、版本管理模块、目标识别模块和报告生成模块;测试用例模块用于基于测试需求对测试用例进行调用及调试;版本管理模块用于对待测试版本进行区分测试;待测试版本包括网页版本、桌面版本和客户端版本中的多种;目标识别模块用于基于测试用例对待测试目标进行识别测试,得到测试结果;待测试目标包括待测试图片和待测试三维模型;报告生成模块用于根据测试结果生成测试报告。
在可选的实施方式中,上述版本管理模块还用于对待测试版本的待测试图片进行封装,得到对应版本的配置文件,以便通过配置文件读取对应版本的待测试图片。
在可选的实施方式中,上述目标识别模块基于预设的底层库对待测试图片执行图片测试操作;图片测试操作包括图片识别操作、图片保存操作以及测试结果判定操作。
在可选的实施方式中,上述目标识别模块还用于截取待测试三维模型不同角度对应的图片的局部特征值;并基于局部特征值对待测试三维模型进行识别。
在可选的实施方式中,上述测试系统还包括:测试动作管理模块;测试动作管理模块用于提供测试动作;测试动作包括鼠标单击、鼠标双击、鼠标拖动、鼠标抖动和鼠标悬停中的一种或多种。
在可选的实施方式中,如果测试动作为鼠标单击、鼠标双击或鼠标拖动,测试动作管理模块用于在测试动作的最小单元动作间设置预设时延;其中,预设时延为执行测试动作所需的时间。
在可选的实施方式中,当测试动作为鼠标抖动时,测试动作管理模块用于设置鼠标按照预设方向进行预设像素的移动。
在可选的实施方式中,当测试动作为鼠标悬停时,测试动作管理模块用于将鼠标移动到待测试三维模型上,并执行鼠标抖动操作。
在可选的实施方式中,上述测试系统还包括结果分析模块;结果分析模块用于对测试结果进行分析,以便对测试用例进行迭代升级。
第二方面,本发明实施例提供一种测试方法,该测试方法应用上述实施方式中任一项的测试系统;方法包括:通过测试系统对待测试软件进行测试;待测试软件包括三维图形软件。
本发明提供的测试系统和测试方法,该测试系统包括测试用例模块、版本管理模块、目标识别模块和报告生成模块,其中,测试用例模块用于基于测试需求对测试用例进行调用及调试,版本管理模块用于对待测试版本进行区分测试,待测试版本包括网页版本、桌面版本和客户端版本中的多种,目标识别模块用于基于测试用例对待测试目标进行识别测试,得到测试结果,待测试目标包括待测试图片和待测试三维模型,报告生成模块用于根据测试结果生成测试报告。上述测试系统通过设置版本管理模块,可以对不同的版本的待测试目标进行相应的测试,避免由于不同版本图片渲染的不同导致单一测试方法的误差,同时设置的目标识别模块可以对图片以及三维模型进行识别测试,满足三维软件中的图片和模型的自动化测试需求。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种测试系统的结构图;
图2为本发明实施例提供的一种测试系统中版本管理模块处理的流程示意图;
图3为本发明实施例提供的另一种测试系统的结构图;
图4为本发明实施例提供的一种测试方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
通过详尽的测试提高软件质量是至关重要的工作,但是由于人力物力有穷时,尤其是对于一些反复压力测试,过于枯燥的重复劳动并不是人力所擅长的,自动化测试提高测试效率,释放人力劳动就成为了关键技术;对于单纯数据处理测试,白盒子测试已经可以很准确测试出数据处理,算法计算是否准确,但是对于3d图形软件,只是测试数据的准确性就不足以覆盖软件的其他问题,例如界面是否正确显示,用户操作互动是否正确响应,反复压力测试,软件是否正确运行,为解决这个问题,各大公司也纷纷开发自己的3d图形测试工具,这些工具都包含图像识别技术,也会包含对一些特定代码的分析,比如针对游戏引擎cocos2d-x和unity进行专门的优化等。考虑到3d图形软件(诸如3d游戏、3d渲染软件等)的测试工具通常都比较有针对性,诸如自动化测试工具库airtest是针对游戏类图形软件进行优化测试的,这些游戏类图形软件的底层主要是使用cocos2d-x,unity或者unreal等游戏引擎,这样airtest可以针对这些底层技术进行测试。然而,对于其他没有上述游戏引擎的图形软件,则无法进行测试优化。针对现有技术在3d图形软件测试的通用性不足的问题,本发明实施例提供了一种测试系统和测试方法,有效提升了3d图形软件测试的通用性。
本发明实施例提供的了一种测试系统,参见图1所示的一种测试系统的结构图,该测试结构主要包括测试用例模块102、版本管理模块104、目标识别模块106和报告生成模块108,为便于理解,分别对每个模块进行详细介绍。
测试用例模块102用于基于测试需求对测试用例进行调用及调试,测试用例根据不同的测试需求进行编写,测试用例模块102可以基于测试需求对测试用例进行调用,诸如可以进行单个测试用例进行测试,也可以组合多个测试用例进行测试。另外,在开发过程中,可以选择性运行测试用例,从而便于对代码进行调试。
版本管理模块104用于对待测试版本进行区分测试,其中,待测试版本包括网页版本、桌面版本和客户端版本中的多种,在实际应用中,同一个三维图形软件,同样的功能和画面,也会分成网页端、桌面端、安卓和苹果手机端等,不同的运行平台运行不同的软件版本,由于渲染硬件和软件的差别,最终得到的图片也会有所差别,诸如,网页版使用的是webgl(网页渲染三维场景的底层渲染库),而桌面版的使用了opengl(跨平台的底层渲染库)或者是direct3d(微软的windows操作系统的底层渲染库),这样就算是同样的渲染数据,但是得到的最终渲染效果也不相同,因此通过版本管理模块对运行平台的不同版本进行区分测试,从而便于目标识别模块对不同的待测试版本执行不同的识别方法。
目标识别模块106用于基于测试用例对待测试目标进行识别测试,得到测试结果,待测试目标包括待测试图片和待测试三维模型,根据预先编写的测试用例对待测试目标进行测试,可以得到待测试目标的性能。在一种实施方案中,目标识别模块106利用opencv和airtest两个库提供的图像识别模块,为系统上层提供优化函数同时增加整个系统的可移植性,可以用sikuli库对airtest库进行替代,从而可以基于预设的底层库对待测试图片执行图片测试操作,图片测试操作可以包括图片识别操作、图片保存操作以及测试结果判定操作,图片识别操作可以包括诸如对比用户操作前后图片是否一致或者在不同文件夹中查找图片进行对比等;图片保存操作可以包括保存用户正确操作后的图片,诸如用户对图片进行修改、新增等操作后保存的图片;测试结果判定操作包括对比当前测试结果是否和上一次测试结果一致。
报告生成模块108用于根据测试结果生成测试报告,测试报告可以通过allure报告生成库在运行完测试用例后,自动生成结果报告。在一种实施方案中,测试报告可以以网页版的形式展现出来,最终可以通过报告上传模块(也可以称为结果报告系统),把测试结果放到云端,方便所有参与人员可以随时查看报告,做出评估,从而便于根据测试报告快速方便地定位到问题所在,也可以快速地给测试开发人员反映问题,大大提高迭代效率。
本发明提供的测试系统,通过设置版本管理模块,可以对不同的版本的待测试目标进行相应的测试,避免由于不同版本图片渲染的不同导致单一测试方法的误差,同时设置的目标识别模块可以对图片以及三维模型进行识别测试,满足三维软件中的图片和模型的自动化测试需求。
在一种实施方式中,上述版本管理模块还用于对待测试版本的待测试图片进行封装,得到对应版本的配置文件,不同的待测试图片对于系统上层操作来说是透明的,这样对于新增加的软件版本也可以轻松利用已经写好的测试用例进行测试,只需要使用对应版本的图片即可。通过配置文件的方法,测试软件自动读取配置文件,以便通过配置文件中的内容读取对应版本的待测试图片。为便于理解,参见如图2所示的一种测试系统中版本管理模块处理的流程示意图,网页版截图、桌面版截图和客户端截图对应的是不同运行平台(网页、桌面和客户端)对应版本的图片。根据不同的运行平台配置对应的识别标志,通过截取不同执行运行平台的同一位置图片,在得到不同版本的图片后,通过图片自动处理工具让不同版本的图片,只要按照方法命名好,放置到不同文件夹中,图片自动处理工具即可自动识别不同版本的图片,然后自动生成代码文件,可以提供给项目的逻辑代码使用,诸如,可以提供给测试动作管理模块进行调用。另外,对于多端的识别,可以采用多线程方式进行查找识别,从而可以极大的提高运行速度。
上述目标识别模块还用于截取待测试三维模型不同角度对应的图片的局部特征值,并基于局部特征值对待测试三维模型进行识别。如果要三维模型进行识别,三维镜头稍微不一样,就会得到不同图片,由于airtest库没有提供的功能,而且opencv也难以对三维模型进行识别,本实施例通过截取同一三维物体的不同角度的图片,同时截取三维物体的局部特征值,对不同的角度和不同角度的图片对应的局部特征值进行判断。该局部特征值可以通过神经网络模型对三维模型的不同角度的特征进行提取确定。将不同角度的图片以及不同角度的图片对应的局部特征之进行综合判断之后,根据评分得到最终结果,认为这个物体是存在三维空间中,诸如,如果当前的图片在之前出现过,则可以判定该三维模型存在。优选的,可以在每次判断之前重新调整好三维镜头位置和角度,从而可以提高判断的准确性。对于特别难以判断的结果,可以通过截取测试后的结果图,以便后续进行人工校准,确保不会误判。
为了能够准确度3d图形软件的操作功能进行测试,上述测试系统还包括:测试动作管理模块,该测试动作管理模块用于提供测试动作,测试动作可以包括诸如鼠标单击、鼠标双击、鼠标拖动、鼠标抖动和鼠标悬停中的一种或多种,为便于理解,对测试动作的具体测试方式进行介绍:
如果测试动作为鼠标单击、鼠标双击或鼠标拖动,测试动作管理模块用于在测试动作的最小单元动作间设置预设时延,其中,预设时延为执行测试动作所需的时间。诸如,当测试动作为鼠标单击时,预设时延设置于鼠标按下与鼠标释放之间;当测试动作为鼠标双击时,预设时延可以包括第一延时和第二延时;第一延时设置于鼠标按下和鼠标释放之间;第二延时设置于每个鼠标单击之间;当测试动作为鼠标拖动时,预设时延可以设置于按下物体、移动鼠标以及移动鼠标之间,也即按下物体(不释放)->延时->移动鼠标到适当位置->延时->释放鼠标。预设时延的时长可以根据实际情况进行设置,这里不作具体限定。
可以理解的是,在3d图形软件中对于三维软件的加载可能存在响应较迟钝的问题,本实施例通过设置鼠标抖动的测试动作进行解决。当测试动作为鼠标抖动时,测试动作管理模块用于设置鼠标按照预设方向进行预设像素的移动。抖动操作的实现就是在物体上实现微小的鼠标移动操作,诸如以预设像素为2个像素为例,操作步骤可以分解为:鼠标上移两个像素->鼠标下移两个像素->鼠标左移两个像素->鼠标右移两个像素,这样通过对鼠标的微小移动,就可以增加软件对模拟鼠标操作的感知程度,软件只有感知了鼠标动作才能做出响应。
在一种实施方式中,上述鼠标拖动操作也可以根据鼠标抖动操作进行优化,诸如按下物体(不释放)->鼠标抖动->延时->移动鼠标到适当位置->延时->鼠标抖动->释放鼠标,通过7个鼠标动作组合最终我们优化的鼠标拖动操作就能成功模拟对所有物体的拖动操作。
当测试动作为鼠标悬停时,测试动作管理模块用于将鼠标移动到待测试三维模型上,并执行鼠标抖动操作,也即先把鼠标移动到待检测三维模型上面,然后执行鼠标抖动操作,这样界面可以准确感知到鼠标是否悬停在待检测三维模型上。
当测试需求分析完毕之后,得出测试用例,然后根据测试用例进行编码,并利用pyinstaller打包脚本,分发给测试人员开始自动化测试,分析测试结果,然后迭代改进测试用例和测试报告。为了根据测试对软件功能进行不断优化。在一种实施方式中,上述测试系统还包括结果分析模块,用于对测试结果进行分析,以便对测试用例进行迭代升级。
本发明实施例还提供了以一种具体的测试系统,参见图3所示的一种具体的测试系统的结构图,该测试系统采用pytest库和unittest库结合进行测试,可以分细粒度地支持测试用例,从而精确地启动需要调试的测试用例测试,也可以很方便地对多个测试用例一并运行。pytest支持unittest,可以继承unittest类,方便管理各个测试用例。通过使用这两个测试框架库,可以对测试系统细分为多个功能模块,使得通过该测试系统进行测试的项目易于管理,精细的模块化,同时各个测试用例的编码互不影响,可以保证多个开发人员同时进行开发测试用例。
图像识别库采用opencv作为最底层模块,自动化测试库可以采用诸如airtest的图形自动化测试库,opencv提供图像识别功能给airtest库,目标识别模块(也即图像识别模块)同时利用了airtest的功能和opencv的功能。airtest库为目标识别模块和测试用例同时提供图像识别功能和测试功能函数,如鼠标点击,图片判断操作等功能,另外,可以通过自定义的功能优化模块封装了airtest的函数功能,此处仅作示例,不作具体限定。目标识别模块可以利用opencv和airtest两个库提供的图像识别模块,为上层提供函数,同时增加整个系统的可移植性。在具体实施时,也可以将airtest库用sikuli库进行替代,从而执行目标识别模块的诸多功能。目标识别模块、测试用例模块、版本管理模块、测试动作管理模块、报告生成模块以及报告上传模块与上述实施方式中的功能相同,此处不再赘述。
综上所述,本实施例提供的测试系统,针对了三维图形软件测试进行了专门的优化,适应了各种版本的ui界面三维图形的测试,并能得到准确的结果,大大节省了测试的人力物力的投入。对于各种测试用例,可以对测试结果进行分析,从而便于对测试用例进行迭代,通过报告生成模块生成专业易懂的测试报告,在降低了测试人员的工作难度的同时可以快速定位可能存在的问题,大大提高了测试人员的工作效果。
本发明实施例提供了一种应用上述测试系统的测试方法,该测试方法通过测试系统对待测试软件进行测试,其中,待测试软件可以包括三维图形软件,诸如3d游戏软件、3d渲染软件等。为便于理解,本实施例提供了一种具体的测试方法,参见如图4所示的一种测试方法的流程示意图,该方法主要包括如下步骤s402至步骤s408:
步骤s402,基于测试需求分析确定测试用例。
步骤s404,对待测试版本进行区分测试;待测试版本包括网页版本、桌面版本和客户端版本中的多种。
步骤s406,基于测试用例对待测试目标进行识别测试,得到测试结果;待测试目标包括待测试图片和待测试三维模型。
步骤s408,根据测试结果生成测试报告。
本实施例提供的测试方法,通过对不同的版本的待测试目标进行相应的测试,避免由于不同版本图片渲染的不同导致单一测试方法的误差,同时可以对图片以及三维模型进行识别测试,满足三维软件中的图片和模型的自动化测试需求,有效提升了3d图形软件测试的通用性。
本实施例所提供的测试方法,其实现原理及产生的技术效果和前述实施例相同,为简要描述,方法实施例部分未提及之处,可参考前述系统实施例中相应内容。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。