发明内容
本发明实施例提供了一种开发代码的测试方法、装置、设备及存储介质,可以提高对开发代码的测试效率,以及开发代码测试结果的准确性。
第一方面,本发明实施例提供了一种开发代码的测试方法,所述方法包括:
获取与待测系统对应的开发代码,构建与所述开发代码匹配的测试环境;
通过预设的测试组件,根据所述测试环境对所述开发代码进行测试,得到所述测试组件中的测试用例对所述开发代码的覆盖信息;
根据所述测试组件中的测试用例对所述开发代码的覆盖信息,确定与所述开发代码对应的测试结果,并将所述测试结果展示给用户。
可选的,所述获取与待测系统对应的开发代码,构建与所述开发代码匹配的测试环境,包括:
获取用户提交到版本控制系统SVN上的开发代码,根据所述开发代码部署集群;
利用集群中的静态扫描工具对所述开发代码进行扫描,得到与所述开发代码对应的扫描结果;
若根据所述扫描结果确定所述开发代码符合预设的代码规范,利用所述集群中的编译工具对所述开发代码进行编译打包;
通过所述集群根据所述开发代码对应的打包结果,构建与所述开发代码匹配的测试环境。
可选的,所述通过预设的测试组件,根据所述测试环境对所述开发代码进行测试,得到所述测试组件中的测试用例对所述开发代码的覆盖信息,包括:
通过预设的测试组件,根据所述测试环境对所述开发代码进行测试,得到所述测试组件对所述开发代码的测试结果;
将所述开发代码、所述测试组件中的测试用例,以及所述测试组件对所述开发代码的测试结果,输入至预设的覆盖信息计算模型,得到所述测试组件中的测试用例对所述开发代码的覆盖信息。
可选的,所述根据所述测试组件中的测试用例对所述开发代码的覆盖信息,确定与所述开发代码对应的测试结果,包括:
获取所述测试组件中的测试用例对所述开发代码的覆盖率;
将所述测试用例对所述开发代码的覆盖率,与匹配的覆盖率阈值进行比较,根据比较结果确定与所述开发代码对应的测试结果。
可选的,所述测试组件包括单元测试组件、接口测试组件、UI测试组件、功能测试组件以及验收测试组件中的至少一种;每种测试组件中都包括对应的测试用例。
可选的,所述将测试用例对所述开发代码的覆盖率,与匹配的覆盖率阈值进行比较,根据比较结果确定与所述开发代码对应的测试结果,包括:
判断单元测试组件中的测试用例对所述开发代码的覆盖率,是否大于或等于匹配的覆盖率阈值;
若是,则分别将所述接口测试组件、所述UI测试组件、所述功能测试组件以及所述验收测试组件中的测试用例对所述开发代码的覆盖率,与匹配的覆盖率阈值进行比较,根据比较结果确定与所述开发代码对应的测试结果;
若否,则确定所述开发代码测试失败,并将单元测试组件中的测试用例对所述开发代码的覆盖信息反馈给用户。
可选的,所述获取与待测系统对应的开发代码,构建与所述开发代码匹配的测试环境,包括:
获取与待测系统对应的开发代码,构建与所述开发代码匹配的用于进行单元测试的第一测试环境;
所述通过预设的测试组件,根据所述测试环境对所述开发代码进行测试,得到所述测试组件中的测试用例对所述开发代码的覆盖信息,包括:
通过单元测试组件,根据所述第一测试环境对所述开发代码进行测试,得到单元测试组件中的测试用例对所述开发代码的覆盖信息;
如果单元测试组件中的测试用例对所述开发代码的覆盖率,大于或等于匹配的覆盖率阈值,则构建与所述开发代码匹配的用于进行接口测试、UI测试、功能测试以及验收测试的第二测试环境;
分别通过所述接口测试组件、所述UI测试组件、所述功能测试组件以及所述验收测试组件,根据所述第二测试环境对所述开发代码进行测试,得到各测试组件中的测试用例对所述开发代码的覆盖信息。
第二方面,本发明实施例还提供了一种开发代码的测试装置,该装置包括:
环境构建模块,用于获取与待测系统对应的开发代码,构建与所述开发代码匹配的测试环境;
测试模块,用于通过预设的测试组件,根据所述测试环境对所述开发代码进行测试,得到所述测试组件中的测试用例对所述开发代码的覆盖信息;
结果确定模块,用于根据所述测试组件中的测试用例对所述开发代码的覆盖信息,确定与所述开发代码对应的测试结果,并将所述测试结果展示给用户。
第三方面,本发明实施例还提供了一种计算机设备,该计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器执行本发明任意实施例提供的开发代码的测试方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例提供的开发代码的测试方法。
本发明实施例的技术方案通过获取与待测系统对应的开发代码,构建与开发代码匹配的测试环境,然后通过预设的测试组件,根据测试环境对开发代码进行测试,得到测试组件中的测试用例对开发代码的覆盖信息,最后根据测试组件中的测试用例对开发代码的覆盖信息,确定与开发代码对应的测试结果,并将测试结果展示给用户的技术手段,可以提高对开发代码的测试效率,以及开发代码测试结果的准确性,可以节省测试环境的构建时间,提高测试环境的构建效率以及覆盖信息的计算效率,可以实现开发代码测试结果确定过程的自动化,减少测试结果确定过程所需的人力成本,实现对待测系统中包括的多项配置模块进行并行测试,保证开发代码的测试结果更为全面,避免开发代码进行单元测试失败时造成的环境资源浪费。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
图1为本发明实施例提供的一种开发代码的测试方法的流程图,本实施例可适用于通过测试用例对待测系统的开发代码进行测试的情形,该方法可以由开发代码的测试装置来执行,该装置可以由软件和/或硬件来实现,并一般可以集成在具有数据处理功能的计算机设备中,例如,终端设备或者服务器中,具体包括如下步骤:
步骤110、获取与待测系统对应的开发代码,构建与所述开发代码匹配的测试环境。
在本实施例中,待测系统具体是指在投入使用或者上线服务之前,需要使用测试用例对其所预期提供的功能进行可用性和稳定性测试的系统。其中,可以在预设的存储空间中获取用户提交的与待测系统对应的开发代码,所述用户可以为待测系统对应的开发人员。
在此步骤中,可选的,可以通过运行预设的环境搭建脚本,构建与开发代码匹配的测试环境。其中,所述环境搭建脚本可以为自动进行构建测试环境的命令代码,所述环境搭建脚本中定义了构建测试环境时的配置参数,所述配置参数与所述待测系统对应的开发代码相关联。
步骤120、通过预设的测试组件,根据所述测试环境对所述开发代码进行测试,得到所述测试组件中的测试用例对所述开发代码的覆盖信息。
在本实施例中,所述测试组件用于对待测系统中包括的一项或者多项配置模块进行测试,所述测试组件中包括与待测的配置模块相关联的测试用例,所述测试用例可以由用户根据待测的配置模块进行编写。
例如,假设待测系统中包括的待测的配置模块为图像显示模块,与该图像显示模块对应的测试组件可以为图像测试组件,所述图像测试组件中包括用于对图像显示模块进行测试的测试用例。
在此步骤中,可以通过测试组件中的测试用例,根据测试环境中的配置参数,对待测系统中配置模块对应的开发代码进行测试,得到测试组件中的测试用例对所述开发代码的覆盖信息。所述覆盖信息中包括测试用例对开发代码的覆盖率,以及测试用例对开发代码的覆盖情况(例如哪些开发代码被测试用例覆盖,哪些开发代码没有被测试用例覆盖)。
在一个具体的实施例中,假设测试组件为图像测试组件,则可以通过图像测试组件中的测试用例,根据测试环境中的配置参数,对待测系统中图像显示模块对应的开发代码进行测试,得到图像测试组件中的测试用例对所述开发代码的覆盖信息。
具体的,假设图像显示模块对应的开发代码有100条,图像测试组件中的测试用例只对其中的90条开发代码进行了测试,对剩余的10条开发代码没有测试,则该图像测试组件中的测试用例对所述开发代码的覆盖信息包括覆盖率(90%)、测试用例覆盖的开发代码(即完成测试的90条开发代码),以及测试用例没有覆盖的开发代码(即没有完成测试的剩余10条开发代码)。
步骤130、根据所述测试组件中的测试用例对所述开发代码的覆盖信息,确定与所述开发代码对应的测试结果,并将所述测试结果展示给用户。
在本实施例中,与所述开发代码对应的测试结果可以包括与所述开发代码对应的测试用例的测试性能,以及与所述开发代码对应的待测系统能否上线的确定结果。
在此步骤中,获取到测试组件中的测试用例对开发代码的覆盖信息后,如果测试组件中的测试用例对开发代码的覆盖率较大,则可以确认用户编写的测试用例合格,并且如果检测到开发代码通过了所述测试用例的测试,则可以确认所述待测系统能够上线,如果检测到开发代码没有通过所述测试用例的测试,则可以确认所述待测系统不能够上线。
如果测试组件中的测试用例对开发代码的覆盖率较低,则可以确认用户编写的测试用例不合格,并且确认与开发代码对应的待测系统不能够上线,然后可以将测试用例不合格的结果,以及该测试用例对开发代码的覆盖信息展示给用户,以使用户根据测试用例对开发代码的覆盖信息,对测试用例进行修改,直至确认所述测试用例合格为止。
在本实施例中,如果测试组件中的测试用例对开发代码的覆盖率较低,通过将测试用例对开发代码的覆盖信息展示给用户,便于用户对测试用例进行修改,以提高开发代码测试结果的准确性;其次,根据测试组件中的测试用例对开发代码的覆盖信息,可以自动确定出与开发代码对应的测试结果,而无需用户人为确定,由此可以减少测试结果确定过程所需的人力成本,提高对开发代码的测试效率。
本发明实施例的技术方案通过获取与待测系统对应的开发代码,构建与开发代码匹配的测试环境,然后通过预设的测试组件,根据测试环境对开发代码进行测试,得到测试组件中的测试用例对开发代码的覆盖信息,最后根据测试组件中的测试用例对开发代码的覆盖信息,确定与开发代码对应的测试结果,并将测试结果展示给用户的技术手段,可以提高对开发代码的测试效率,以及开发代码测试结果的准确性。
图2为本发明实施例提供的一种开发代码的测试方法的流程图,如图2所示,本发明实施例提供的方法还可以包括:
步骤210、获取用户提交到版本控制系统SVN上的开发代码,根据所述开发代码部署集群。
在此步骤中,版本控制系统(Subversion,SVN)用于对用户提交的开发代码进行管理。其中,用户将待测系统对应的开发代码提交到SVN后,可以在SVN中添加与所述开发代码对应的当前代码标签tag。通过SVN检测到用户添加的当前tag后,可以获取与当前tag匹配的开发代码,并生成与所述开发代码对应的当前版本号,然后获取用户提交到SVN上的历史开发代码,必将当前版本号与历史开发代码对应的版本号进行比较,如果历史开发代码对应的版本号中不存在与所述当前版本号一致的版本号,则可以确认与当前版本号对应的开发代码为用户提交的最新的开发代码,并将所述最新的开发代码写入禅道数据库中,以使用于构建测试环境的集群根据禅道数据库中写入的最新的开发代码,对本地代码进行更新,以完成所述集群的部署过程。
在一个具体的实施例中,如果所述开发代码属于java类代码,则对应的集群可以为Jenkins集群。所述Jenkins集群用于监控持续重复的工作,并且可添加大量插件,集成性能优良。所述Jenkins集群上可以部署承载着执行持续集成的各个环节的多个不同JOB(也称项目),JOB可以通过特定的配置实现具体的功能。例如,第一JOB通过配置可以实现对代码的编译打包,第二JOB通过配置可以实现对代码的静态扫描等
步骤220、利用集群中的静态扫描工具对所述开发代码进行扫描,得到与所述开发代码对应的扫描结果。
在此步骤中,假设集群为Jenkins集群,静态扫描工具可以为Jenkins集群中用于对代码进行静态扫描的JOB,例如代码质量管理平台(SonarQube,Sonar)。所述静态扫描工具用于根据预设的代码规范对所述开发代码进行扫描,得到与所述开发代码对应的扫描结果。
步骤230、若根据所述扫描结果确定所述开发代码符合预设的代码规范,利用所述集群中的编译工具对所述开发代码进行编译打包。
在此步骤中,如果根据所述扫描结果确定所述开发代码符合预设的代码规范,则可以利用所述集群中的编译工具对所述开发代码进行编译打包。其中,假设集群为Jenkins集群,编译工具可以为Jenkins集群中用于对代码进行编译打包的JOB,例如Maven。
如果根据所述扫描结果确定所述开发代码不符合预设的代码规范,则可以将开发代码检测失败的结果通过邮件方式反馈给用户,以使用户对所述开发代码进行修改,直至所述开发代码符合预设的代码规范为止。
步骤240、通过所述集群根据所述开发代码对应的打包结果,构建与所述开发代码匹配的测试环境。
在本实施例中,所述集群检测到编译工具对开发代码进行编译打包后,可以根据开发代码对应的打包结果,对本地配置参数进行更新,以构建与开发代码匹配的测试环境。
由此,通过集群构建与所述开发代码匹配的测试环境,可以节省测试环境的构建时间,提高测试环境的构建效率。
步骤250、通过预设的测试组件,根据所述测试环境对所述开发代码进行测试,得到所述测试组件对所述开发代码的测试结果。
在本发明实施例的一个实施方式中,所述测试组件包括单元测试组件、接口测试组件、UI测试组件、功能测试组件以及验收测试组件中的至少一种;每种测试组件中都包括对应的测试用例。
其中,所述单元测试组件中的测试用例用于对开发代码进行单元测试;所述接口测试组件中的测试用例用于对开发代码进行接口测试,例如对应用程序编程接口(Application Programming Interface,API)进行测试;所述UI测试组件中的测试用例用于对开发代码进行用户界面(User Interface,UI)测试;所述功能测试组件中的测试用例用于对开发代码进行功能(例如图像显示功能或者计算功能等)测试;所述验收测试组件中的测试用例用于对开发代码进行用户需求测试。
步骤260、将所述开发代码、所述测试组件中的测试用例,以及所述测试组件对所述开发代码的测试结果,输入至预设的覆盖信息计算模型,得到所述测试组件中的测试用例对所述开发代码的覆盖信息。
在本实施例中,所述测试组件对所述开发代码的测试结果为,所述测试组件中的测试用例对所述开发代码的测试结果。具体的,假设测试用例对开发代码进行测试时,需要开发代码按照测试用例中规定的程序运行,那么所述开发代码根据所述程序运行得到的结果,则为所述测试用例对所述开发代码的测试结果。所述覆盖信息计算模型可以预先根据大量的开发代码、测试用例,以及测试用例对开发代码的测试结果训练得到。
在此步骤中,将所述开发代码、所述测试组件中的测试用例,以及所述测试组件对所述开发代码的测试结果,输入至预设的覆盖信息计算模型后,可以得到所述测试组件中的测试用例对所述开发代码的覆盖信息,所述覆盖信息中包括测试用例对开发代码的覆盖率,以及测试用例对开发代码的覆盖情况(例如哪些开发代码被测试用例覆盖,哪些开发代码没有被测试用例覆盖),由此可以提高覆盖信息的计算效率。
步骤270、获取所述测试组件中的测试用例对所述开发代码的覆盖率。
在此步骤中,可以根据测试组件中的测试用例对所述开发代码的覆盖信息,获取到测试组件中的测试用例对所述开发代码的覆盖率。
步骤280、将所述测试用例对所述开发代码的覆盖率,与匹配的覆盖率阈值进行比较,根据比较结果确定与所述开发代码对应的测试结果,并将所述测试结果展示给用户。
在此步骤中,如果测试用例对开发代码的覆盖率,大于或者等于匹配的覆盖率阈值,则可以确认所述测试用例合格,并且如果检测到开发代码通过了所述测试用例的测试,则可以确认所述待测系统能够上线,如果检测到开发代码没有通过所述测试用例的测试,则可以确认所述待测系统不能够上线;如果测试用例对开发代码的覆盖率小于匹配的覆盖率阈值,则可以确认测试用例不合格,并且确认与开发代码对应的待测系统不能够上线,然后可以将测试用例不合格的结果,以及该测试用例对开发代码的覆盖信息展示给用户,以使用户根据测试用例对开发代码的覆盖信息,对测试用例进行修改,直至确认所述测试用例合格为止。
由此,通过将测试用例对开发代码的覆盖率,与匹配的覆盖率阈值进行比较,可以实现开发代码测试结果确定过程的自动化,减少测试结果确定过程所需的人力成本。
本发明实施例的技术方案通过获取用户提交到SVN上的开发代码,根据开发代码部署集群,并利用集群中的静态扫描工具对开发代码进行扫描,若根据扫描结果确定开发代码符合预设的代码规范,则利用集群中的编译工具对开发代码进行编译打包,然后根据开发代码对应的打包结果构建测试环境,通过预设的测试组件,根据测试环境对开发代码进行测试,得到测试组件对开发代码的测试结果,并将开发代码、测试组件中的测试用例,以及测试组件对开发代码的测试结果,输入至覆盖信息计算模型,得到测试用例对所述开发代码的覆盖信息,最后获取测试用例对开发代码的覆盖率,根据测试用例对开发代码的覆盖率与覆盖率阈值之间的比较结果,确定与开发代码对应的测试结果,并将测试结果展示给用户的技术手段,可以提高对开发代码的测试效率,以及开发代码测试结果的准确性。
图3为本发明实施例提供的一种开发代码的测试方法的流程图,如图3所示,本发明实施例提供的方法还可以包括:
步骤310、获取与待测系统对应的开发代码,构建与所述开发代码匹配的测试环境。
在本实施例中,可以通过运行预设的环境搭建脚本,构建与开发代码匹配的用于进行单元测试、接口测试、UI测试、功能测试以及验收测试的测试环境。
步骤320、通过预设的测试组件,根据所述测试环境对所述开发代码进行测试,得到所述测试组件中的测试用例对所述开发代码的覆盖信息。
在本实施例中,所述测试组件可以同时包括单元测试组件、接口测试组件、UI测试组件、功能测试组件以及验收测试组件,每种测试组件中都包括对应的测试用例。所述单元测试组件、接口测试组件、UI测试组件、功能测试组件以及验收测试组件可以共同集成在质量测试平台中。
步骤330、获取所述测试组件中的测试用例对所述开发代码的覆盖率。
在此步骤中,可以获取所述质量测试平台中每种测试组件中的测试用例对所述开发代码的覆盖率。
步骤340、判断单元测试组件中的测试用例对所述开发代码的覆盖率,是否大于或等于匹配的覆盖率阈值,若是,执行步骤350,若否,执行步骤360。
步骤350、分别将所述接口测试组件、所述UI测试组件、所述功能测试组件以及所述验收测试组件中的测试用例对所述开发代码的覆盖率,与匹配的覆盖率阈值进行比较,根据比较结果确定与所述开发代码对应的测试结果,并将所述测试结果展示给用户。
在此步骤中,可以分别将所述接口测试组件、所述UI测试组件、所述功能测试组件以及所述验收测试组件中的测试用例对开发代码的覆盖率,与匹配的覆盖率阈值进行比较。
如果存在某测试组件中的测试用例对开发代码的覆盖率,小于匹配的覆盖率阈值,则确认该测试组件中的测试用例不合格,并将该测试组件作为目标测试组件,然后将目标测试组件中的测试用例对开发代码的覆盖信息展示给用户,以使用户根据该覆盖信息,对目标测试组件中的测试用例进行修改。
如果所述接口测试组件、所述UI测试组件、所述功能测试组件以及所述验收测试组件中的测试用例对开发代码的覆盖率,均大于或者等于与匹配的覆盖率阈值,则确认所述单元测试组件、所述接口测试组件、所述UI测试组件、所述功能测试组件以及所述验收测试组件中的测试用例均合格,并且如果检测到所述开发代码通过了每种测试组件中的测试用例的测试,则可以确认所述待测系统能够上线。
由此,通过将多种测试组件集成在质量测试平台,并通过多种测试组件对所述开发代码进行测试,可以实现对待测系统中包括的多项配置模块进行并行测试,保证开发代码的测试结果更为全面。
步骤360、确定所述开发代码测试失败,并将单元测试组件中的测试用例对所述开发代码的覆盖信息反馈给用户。
在本实施例中,如果单元测试组件中的测试用例对所述开发代码的覆盖率,小于匹配的覆盖率阈值,则确定开发代码测试失败,并且不将其他测试组件对开发代码的覆盖率,与覆盖率阈值进行比较,由此可以节省开发代码的测试时间,提高对开发代码的测试效率。
本发明实施例的技术方案通过获取与待测系统对应的开发代码,构建与开发代码匹配的测试环境,通过多种测试组件根据测试环境对开发代码进行测试,得到每种测试组件中的测试用例对开发代码的覆盖信息,然后获取每种测试组件中的测试用例对开发代码的覆盖率,判断单元测试组件中的测试用例对开发代码的覆盖率,是否大于或等于匹配的覆盖率阈值,若是,则分别将接口测试组件、UI测试组件、功能测试组件以及验收测试组件中的测试用例对开发代码的覆盖率,与匹配的覆盖率阈值进行比较,根据比较结果确定与开发代码对应的测试结果,并将测试结果展示给用户,若否,则确定开发代码测试失败,并将单元测试组件中的测试用例对开发代码的覆盖信息反馈给用户的技术手段,可以实现对待测系统中包括的多项配置模块进行并行测试,可以提高对开发代码的测试效率,以及开发代码测试结果的准确性。
图4为本发明实施例提供的一种开发代码的测试方法的流程图,如图4所示,本发明实施例提供的方法还可以包括:
步骤410、获取与待测系统对应的开发代码,构建与所述开发代码匹配的用于进行单元测试的第一测试环境。
在本实施例中,可以通过运行预设的环境搭建脚本,构建与开发代码匹配的用于进行单元测试的第一测试环境。
这样设置的好处在于:避免在先构建与开发代码匹配的用于进行单元测试、接口测试、UI测试、功能测试以及验收测试的测试环境的情况下,开发代码进行单元测试失败时造成的环境资源浪费。
步骤420、通过单元测试组件,根据所述第一测试环境对所述开发代码进行测试,得到单元测试组件中的测试用例对所述开发代码的覆盖信息。
步骤430、如果单元测试组件中的测试用例对所述开发代码的覆盖率,大于或等于匹配的覆盖率阈值,则构建与所述开发代码匹配的用于进行接口测试、UI测试、功能测试以及验收测试的第二测试环境。
在本实施例中,如果单元测试组件中的测试用例对所述开发代码的覆盖率,大于或等于匹配的覆盖率阈值,则说明开发代码在单元测试组件下测试成功,然后通过运行预设的环境搭建脚本,构建与所述开发代码匹配的用于进行接口测试、UI测试、功能测试以及验收测试的第二测试环境。
如果单元测试组件中的测试用例对所述开发代码的覆盖率,小于匹配的覆盖率阈值,则在禅道数据库中将所述开发代码标记为测试失败test_fail版本,然后将单元测试组件中的测试用例对所述开发代码的覆盖信息反馈给用户。
步骤440、分别通过所述接口测试组件、所述UI测试组件、所述功能测试组件以及所述验收测试组件,根据所述第二测试环境对所述开发代码进行测试,得到各测试组件中的测试用例对所述开发代码的覆盖信息。
步骤450、分别将所述接口测试组件、所述UI测试组件、所述功能测试组件以及所述验收测试组件中的测试用例对所述开发代码的覆盖率,与匹配的覆盖率阈值进行比较,根据比较结果确定与所述开发代码对应的测试结果,并将所述测试结果展示给用户。
在此步骤中,如果所述接口测试组件、所述UI测试组件、所述功能测试组件以及所述验收测试组件中的测试用例对开发代码的覆盖率,均大于或者等于与匹配的覆盖率阈值,则在禅道数据库中将所述开发代码标记为测试成功test_success版本;如果存在目标测试组件中的测试用例对开发代码的覆盖率,小于与匹配的覆盖率阈值,则在禅道数据库中将所述开发代码标记为测试失败test_fail版本,并将目标测试组件中的测试用例对开发代码的覆盖信息通过邮件发送给用户。
在本发明实施例的另一个实施方式中,如果单元测试组件中的测试用例对所述开发代码的覆盖率,大于或等于匹配的覆盖率阈值,则可以先构建与所述开发代码匹配的用于进行接口测试、UI测试以及功能测试的测试环境,然后通过所述接口测试组件、所述UI测试组件以及所述功能测试组件根据所述测试环境对所述开发代码进行测试。
如果所述接口测试组件、所述UI测试组件以及所述功能测试组件中的测试用例对开发代码的覆盖率,均大于或者等于与匹配的覆盖率阈值,则在禅道数据库中将所述开发代码标记为测试成功test_success版本,并通过集群根据用户需求构建生产环境,然后通过所述验收测试组件根据所述生成环境对所述开发代码进行验收测试,如果验收测试组件中的测试用例对所述开发代码的覆盖率,大于或等于匹配的覆盖率阈值,则确认所述验收测试组件中的测试用例合格,并且如果检测到所述开发代码通过了每种测试组件中的测试用例的测试,则可以确认所述待测系统能够上线;
反之,如果验收测试组件中的测试用例对所述开发代码的覆盖率,小于匹配的覆盖率阈值,则确认所述验收测试组件中的测试用例不合格,并将验收测试组件中的测试用例对开发代码的覆盖信息展示给用户。
本发明实施例的技术方案通过获取与待测系统对应的开发代码,构建与开发代码匹配的用于进行单元测试的第一测试环境,并通过单元测试组件根据第一测试环境对开发代码进行测试,得到单元测试组件中的测试用例对开发代码的覆盖信息,如果单元测试组件中的测试用例对开发代码的覆盖率,大于或等于匹配的覆盖率阈值,则构建与开发代码匹配的用于进行接口测试、UI测试、功能测试以及验收测试的第二测试环境,并分别通过接口测试组件、UI测试组件、功能测试组件以及验收测试组件,根据第二测试环境对开发代码进行测试,得到各测试组件中的测试用例对开发代码的覆盖信息,最后分别将接口测试组件、UI测试组件、功能测试组件以及验收测试组件中的测试用例对开发代码的覆盖率,与匹配的覆盖率阈值进行比较,并根据比较结果确定与开发代码对应的测试结果,并将测试结果展示给用户的技术手段,可以提高对开发代码的测试效率,以及开发代码测试结果的准确性。
图5为本发明实施例提供的一种开发代码的测试装置的结构图,该装置包括:环境构建模块510、测试模块520和结果确定模块530。
其中,环境构建模块510,用于获取与待测系统对应的开发代码,构建与所述开发代码匹配的测试环境;
测试模块520,用于通过预设的测试组件,根据所述测试环境对所述开发代码进行测试,得到所述测试组件中的测试用例对所述开发代码的覆盖信息;
结果确定模块530,用于根据所述测试组件中的测试用例对所述开发代码的覆盖信息,确定与所述开发代码对应的测试结果,并将所述测试结果展示给用户。
本发明实施例的技术方案通过获取与待测系统对应的开发代码,构建与开发代码匹配的测试环境,然后通过预设的测试组件,根据测试环境对开发代码进行测试,得到测试组件中的测试用例对开发代码的覆盖信息,最后根据测试组件中的测试用例对开发代码的覆盖信息,确定与开发代码对应的测试结果,并将测试结果展示给用户的技术手段,可以提高对开发代码的测试效率,以及开发代码测试结果的准确性。
在上述各实施例的基础上,所述测试组件包括单元测试组件、接口测试组件、UI测试组件、功能测试组件以及验收测试组件中的至少一种;每种测试组件中都包括对应的测试用例。
所述环境构建模块510,可以包括:
代码获取单元,用于获取用户提交到版本控制系统SVN上的开发代码,根据所述开发代码部署集群;
扫描单元,用于利用集群中的静态扫描工具对所述开发代码进行扫描,得到与所述开发代码对应的扫描结果;
编译单元,用于若根据所述扫描结果确定所述开发代码符合预设的代码规范,利用所述集群中的编译工具对所述开发代码进行编译打包;
测试环境构建单元,用于通过所述集群根据所述开发代码对应的打包结果,构建与所述开发代码匹配的测试环境;
第一测试环境构建单元,用于获取与待测系统对应的开发代码,构建与所述开发代码匹配的用于进行单元测试的第一测试环境。
测试模块520,可以包括:
测试组件测试单元,用于通过预设的测试组件,根据所述测试环境对所述开发代码进行测试,得到所述测试组件对所述开发代码的测试结果;
模型输入单元,用于将所述开发代码、所述测试组件中的测试用例,以及所述测试组件对所述开发代码的测试结果,输入至预设的覆盖信息计算模型,得到所述测试组件中的测试用例对所述开发代码的覆盖信息;
单元组件测试单元,用于通过单元测试组件,根据所述第一测试环境对所述开发代码进行测试,得到单元测试组件中的测试用例对所述开发代码的覆盖信息;
第二测试环境构建单元,用于如果单元测试组件中的测试用例对所述开发代码的覆盖率,大于或等于匹配的覆盖率阈值,则构建与所述开发代码匹配的用于进行接口测试、UI测试、功能测试以及验收测试的第二测试环境;
多种组件测试单元,用于分别通过所述接口测试组件、所述UI测试组件、所述功能测试组件以及所述验收测试组件,根据所述第二测试环境对所述开发代码进行测试,得到各测试组件中的测试用例对所述开发代码的覆盖信息。
结果确定模块530,可以包括:
覆盖率获取单元,用于获取所述测试组件中的测试用例对所述开发代码的覆盖率;
覆盖率比较单元,用于将所述测试用例对所述开发代码的覆盖率,与匹配的覆盖率阈值进行比较,根据比较结果确定与所述开发代码对应的测试结果;
覆盖率判断单元,用于判断单元测试组件中的测试用例对所述开发代码的覆盖率,是否大于或等于匹配的覆盖率阈值;
多种覆盖率比较单元,用于单元测试组件中的测试用例对所述开发代码的覆盖率,大于或等于匹配的覆盖率阈值时,分别将所述接口测试组件、所述UI测试组件、所述功能测试组件以及所述验收测试组件中的测试用例对所述开发代码的覆盖率,与匹配的覆盖率阈值进行比较,根据比较结果确定与所述开发代码对应的测试结果;
信息反馈单元,用于单元测试组件中的测试用例对所述开发代码的覆盖率,小于匹配的覆盖率阈值时,确定所述开发代码测试失败,并将单元测试组件中的测试用例对所述开发代码的覆盖信息反馈给用户。
本发明实施例所提供的开发代码的测试装置可执行本发明任意实施例所提供的开发代码的测试方法,具备执行方法相应的功能模块和有益效果。
图6为本发明实施例提供的一种计算机设备的结构示意图,如图6所示,该计算机设备包括处理器610、存储器620、输入装置630和输出装置640;计算机设备中处理器610的数量可以是一个或多个,图6中以一个处理器610为例;计算机设备中的处理器610、存储器620、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线连接为例。存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明任意实施例中的一种开发代码的测试方法对应的程序指令/模块(例如,一种开发代码的测试装置中的环境构建模块510、测试模块520和结果确定模块530)。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的一种开发代码的测试方法。也即,该程序被处理器执行时实现:
获取与待测系统对应的开发代码,构建与所述开发代码匹配的测试环境;
通过预设的测试组件,根据所述测试环境对所述开发代码进行测试,得到所述测试组件中的测试用例对所述开发代码的覆盖信息;
根据所述测试组件中的测试用例对所述开发代码的覆盖信息,确定与所述开发代码对应的测试结果,并将所述测试结果展示给用户。
存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。输入装置630可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入,可以包括键盘和鼠标等。输出装置640可包括显示屏等显示设备。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述方法。当然,本发明实施例所提供的一种计算机可读存储介质,其可以执行本发明任意实施例所提供的一种开发代码的测试方法中的相关操作。也即,该程序被处理器执行时实现:
获取与待测系统对应的开发代码,构建与所述开发代码匹配的测试环境;
通过预设的测试组件,根据所述测试环境对所述开发代码进行测试,得到所述测试组件中的测试用例对所述开发代码的覆盖信息;
根据所述测试组件中的测试用例对所述开发代码的覆盖信息,确定与所述开发代码对应的测试结果,并将所述测试结果展示给用户。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述一种开发代码的测试装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。