测试报告的生成方法、装置和服务器与流程

文档序号:18796488发布日期:2019-09-29 19:44阅读:262来源:国知局
测试报告的生成方法、装置和服务器与流程

本发明涉及软件测试技术领域,尤其是涉及一种测试报告的生成方法、装置和服务器。



背景技术:

在计算机软件开发过程中,往往需要对开发的软件进行测试和优化,并且,测试人员需要针对测试结果提供一份较为完整的测试报告。通常,一份测试报告会包含测试项目的测试环境、测试版本、测试人员、耗时、bug情况以及测试用例的执行情况等内容。在自动化测试中,测试报告能够方便测试人员在一个html文件中阅览到所有测试用例的测试结果。

目前,在进行自动化测试时,在执行测试集(即测试用例的集合)的过程中,若遇到存储空间满或进程退出等异常而导致测试集无法执行完毕时,将无法生成测试报告。在这种情况下,也无法获取各个测试用例的测试结果,而需要再次测试,导致自动化测试效率降低。



技术实现要素:

有鉴于此,本发明的目的在于提供一种测试报告的生成方法、装置和服务器,以提升自动化测试效率。

第一方面,本发明实施例提供了一种测试报告的生成方法,包括:基于预设的测试集确定当前的目标测试用例;执行该目标测试用例;当该目标测试用例执行完毕时,获取该目标测试用例的测试结果;将该目标测试用例的测试结果写入预设的统计表中;继续执行基于预设的测试集确定当前的目标测试用例的步骤,直至预设条件被触发时,根据该统计表中记录的测试结果生成测试报告。

在本发明较佳的实施例中,上述将该目标测试用例的测试结果写入预设的统计表中的步骤,包括:调用该目标测试用例的测试结果对应的处理函数;通过操作系统的io接口,使用该处理函数将该测试结果写入预设的统计表中。

在本发明较佳的实施例中,上述使用该处理函数将该测试结果写入预设的统计表中的步骤,包括:判断该测试集对应的统计表的路径和名称是否均为非空;如果均为非空,打开该测试集对应的统计表;将该目标测试用例的测试结果以指定的数据格式写入至该统计表中;关闭该统计表。

在本发明较佳的实施例中,当该目标测试用例的测试结果为执行成功时,上述对应的处理函数为添加成功测试用例的接口函数;该添加成功测试用例的接口函数用于将执行成功的测试用例的测试结果写入统计表中;当该目标测试用例的测试结果为执行失败时,上述对应的处理函数为添加失败测试用例的接口函数;该添加失败测试用例的接口函数用于将执行失败的测试用例的测试结果写入统计表中;当该目标测试用例的测试结果为执行错误时,上述对应的处理函数为添加错误测试用例的接口函数;该添加错误测试用例的接口函数用于将执行错误的测试用例的测试结果写入统计表中。

在本发明较佳的实施例中,上述预设条件至少包括下述之一:执行该目标测试用例的测试程序被退出;执行该目标测试用例的测试设备内存已满;当执行该目标测试用例的测试设备发生故障,执行该目标测试用例的测试程序被退出时,接收到测试报告生成指令;当该测试集中所有的测试用例被执行完毕,测试报告页面文件被删除时,接收到测试报告生成指令。

第二方面,本发明实施例提供了一种测试报告的生成装置,该装置包括:目标测试用例确定模块,用于基于预设的测试集确定当前的目标测试用例;目标测试用例执行模块,用于执行该目标测试用例;测试结果获取模块,用于当该目标测试用例执行完毕时,获取该目标测试用例的测试结果;测试结果写入模块,用于将该目标测试用例的测试结果写入预设的统计表中;测试报告生成模块,用于继续执行基于预设的测试集确定当前的目标测试用例的步骤,直至预设条件被触发时,根据该统计表中记录的测试结果生成测试报告。

在本发明较佳的实施例中,上述测试结果写入模块包括:处理函数调用单元,用于调用该目标测试用例的测试结果对应的处理函数;测试结果写入单元,用于通过操作系统的io接口,使用该处理函数将测试结果写入预设的统计表中。

在本发明较佳的实施例中,上述测试结果写入单元包括:非空判断子单元,用于判断该测试集对应的统计表的路径和名称是否均为非空;打开统计表子单元,用于当该统计表的路径和名称均为非空时,打开该测试集对应的统计表;写入统计表子单元,用于将该目标测试用例的测试结果以指定的数据格式写入至该统计表中;关闭统计表子单元,用于关闭该统计表。

在本发明较佳的实施例中,当该目标测试用例的测试结果为执行成功时,上述对应的处理函数为添加成功测试用例的接口函数;该添加成功测试用例的接口函数用于将执行成功的测试用例的测试结果写入统计表中;当该目标测试用例的测试结果为执行失败时,上述对应的处理函数为添加失败测试用例的接口函数;该添加失败测试用例的接口函数用于将执行失败的测试用例的测试结果写入统计表中;当该目标测试用例的测试结果为执行错误时,上述对应的处理函数为添加错误测试用例的接口函数;该添加错误测试用例的接口函数用于将执行错误的测试用例的测试结果写入统计表中。

在本发明较佳的实施例中,上述预设条件至少包括下述之一:执行该目标测试用例的测试程序被退出;执行该目标测试用例的测试设备内存已满;当执行该目标测试用例的测试设备发生故障,执行该目标测试用例的测试程序被退出时,接收到测试报告生成指令;当该测试集中所有的测试用例被执行完毕,测试报告页面文件被删除时,接收到测试报告生成指令。

第三方面,本发明实施例提供了一种服务器,包括处理器和存储器,该存储器存储有能够被该处理器执行的机器可执行指令,该处理器执行该机器可执行指令以实现上述第一方面及其实施例之一提供的测试报告的生成方法。

第四方面,本发明实施例提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现上述第一方面及其实施例之一提供的测试报告的生成方法。

上述测试报告的生成方法、装置和服务器,首先基于预设的测试集确定当前的目标测试用例;然后执行该目标测试用例;当该目标测试用例执行完毕时,获取该目标测试用例的测试结果;进而将该目标测试用例的测试结果写入预设的统计表中;并且继续执行基于预设的测试集确定当前的目标测试用例的步骤,直至预设条件被触发时,并根据该统计表中记录的测试结果生成测试报告。该方式在软件测试执行测试集的过程中,通过实时记录当前已经执行完毕的测试用例的测试结果,将其写入预设的统计表中,在测试集无法执行完毕的情况下,仍可以根据统计表中记录的测试结果生成测试报告,无需重新执行测试集,从而提高了自动化测试效率。

并且,由于在同一个统计表中记录了测试集中所有已经执行完毕的测试用例的测试结果,因而可以快速得到测试集中测试用例的执行情况,再次测试前可以筛选出已经测试成功的测试用例,仅执行测试失败或测试结果错误的测试用例,从而进一步提升了自动化测试效率。

本公开的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本公开的上述技术即可得知。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种测试报告的生成方法的流程示意图;

图2为本发明实施例提供的另一种测试报告的生成方法的流程示意图;

图3为本发明实施例提供的另一种测试报告的生成方法的流程示意图;

图4为本发明实施例提供的一种测试报告的生成装置的结构示意图;

图5为本发明实施例提供的一种服务器的结构示意图。

具体实施方式

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

软件测试是指在预设条件下(包括正常条件和异常条件)运行系统或应用程序,并评估运行结果;而自动化测试则是软件测试的自动化,它把以人为驱动的测试行为转化为机器执行。

在对开发的软件进行测试优化时,测试人员通常需要针对测试结果提供一份较为完整的测试报告,以了解所有测试用例的测试结果。例如,在基于python的unittest框架进行自动化测试时,该框架中的扩展模块htmltestrunner可用于生成html格式的测试报告,该测试报告能够方便测试人员在一个html文件中阅览到所有测试用例的测试结果。但是,若在执行测试集的过程中一旦遇到异常而无法执行完毕,则无法生成测试报告。这种情况下,测试人员也无法获得已经测试完毕的测试用例的测试结果,而需要将测试集中的所有测试用例重新进行测试,从而降低了自动化测试效率。

基于此,本发明实施例提供一种测试报告的生成方法、装置和服务器,该技术可以应用于对各类软件、程序、系统等对象进行测试的过程中。为便于对本实施例进行理解,首先对本发明实施例所公开的一种测试报告的生成方法进行详细介绍。

图1所示为一种测试报告的生成方法的流程示意图,由图1可见,该测试报告的生成方法包括以下步骤:

步骤s102:基于预设的测试集确定当前的目标测试用例。

测试集是测试用例的集合,一个测试集通常包含多个测试用例。测试用例(也可以称为testcase)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试或核实某个程序(如软件程序、系统程序等)是否满足特定需求。一个测试用例是一个完整的测试单元,它具有完整的测试流程,包括测试前准备环境的搭建、执行测试代码以及测试后环境的还原,通过运行这个测试单元,可以对上述程序进行验证。

在进行自动化测试之前,通常会预先设置用于测试的测试集,在自动化测试时,测试软件执行预设的测试集,由测试程序逐一对测试集中的各个测试用例进行测试,直至测试集中的所有测试用例都测试完毕。

这里,在对测试用例进行测试前,首先需要从预设的测试集中确定当前的目标测试用例,所谓当前的目标测试用例是指将要被执行的测试用例。在其中一种实施方式中,可以按顺序从预设的测试集中确定当前的目标测试用例,例如,若测试集中的测试用例是按序排列的,则在执行完第n个测试用例时,依序确定第n+1个测试用例为当前的目标测试用例。

步骤s104:执行该目标测试用例。

在确定当前的目标测试用例之后,就执行该目标测试用例。这里,由测试软件执行该目标测试用例。测试用例的执行即是对一个完整测试单元的运行,包括测试前准备环境的搭建、执行测试代码以及测试后环境的还原,从而实现对被测程序进行验证。

步骤s106:当该目标测试用例执行完毕时,获取该目标测试用例的测试结果。

在自动化测试中,每个测试用例执行完毕后都会生成相应的测试结果,通常,测试用例的测试结果包括执行成功、执行失败和执行错误这三种。以基于python的unittest框架进行自动化测试为例进行说明,在unittest框架下,一个测试用例可以理解为python的一个函数,并且,测试用例执行成功表示测试用例中所有断言均成功,执行失败表示测试用例中有断言失败,执行错误表示测试用例中出现了异常,但非断言失败引起。

在本实施例中,当目标测试用例执行完毕时,该目标测试用例的测试结果对应为执行成功、执行失败和执行错误中的一种,此时,实时获取该已经执行完毕的目标测试用例的测试结果。

步骤s108:将该目标测试用例的测试结果写入预设的统计表中。

在获得当前执行完毕的目标测试用例的测试结果后,就将该测试结果写入预设的统计表。其中,该统计表用于统计并保存自动化测试过程中所有已经执行完毕的测试用例的测试结果;该统计表可以为数据库表格,也可以为文档表格、网页表格等多种形式。

在现有技术中,以基于python的unittest框架进行自动化测试为例进行说明,当一个测试用例执行完毕时,操作系统会将标准输出和标准错误输出重定向到句柄(句柄也可以理解为系统内存),然后根据该句柄将它们输出到测试报告页面(测试报告页面是html格式)中。通常,每个进程都会默认打开3个文件描述符,即0、1、2;其中,0对应标准输入、1对应标准输出、2对应标准错误。这里,标准输出是命令的输出,缺省是屏幕,也可以是文件;标准错误是命令错误的输出,缺省是屏幕,同样也可以是文件。标准输出和标准错误输出是操作系统命令执行时的所有输出,默认打印到当前终端。

与现有技术不同的是,本实施例提供的测试报告的生成方法,可以在将标准输出和标准错误输出到测试报告页面的同时,还可以将当前执行完毕的测试用例的测试结果写入预设的统计表中。其中,该统计表可以存放于本地文件系统,从而实现本地实时存储执行完毕的测试用例的测试结果;该统计表也可以存放于远程文件系统,从而实现远程实时存储执行完毕的测试用例的测试结果。

步骤s110:当预设条件被触发时,根据该统计表中记录的测试结果生成测试报告。

按照上述步骤s102~步骤s108继续执行测试集,也即,当测试集中的第n个测试用例执行完毕后,基于预设的测试集确定第n+1个测试用例,执行该第n+1个测试用例,当该第n+1个测试用例执行完毕时,获取该第n+1个测试用例的测试结果,并将其测试结果写入预设的统计表中。这样,对于每一个执行完毕的测试用例,均在预设的统计表中写入了它的测试结果。

由于在统计表中记录了测试集中所有执行完毕的测试用例的测试结果,因此,用户可以在需要的时候,调用该统计表中记录的测试结果进行分析处理,例如,可以根据统计表中记录的测试结果生成测试报告。

在本实施例中,预先设置了触发条件,当预设条件被触发时,测试软件自动根据统计表中记录的测试结果生成测试报告。为了方便查找到已经生成的测试报告,在其中一种可能的实施方式中,可以将生成的测试报告保存到统计表所在的同一文件夹中。

这样,在软件自动化测试中,当测试集因无法执行完毕而无法生成测试报告时,通过本实施例提供的测试报告的生成方法,用户还可以根据统计表中记录的测试结果生成测试报告。由于在同一个统计表中记录了测试集中所有已经执行完毕的测试用例的测试结果,因而可以快速得到测试集中测试用例的执行情况,再次测试前可以筛选出已经测试成功的测试用例,从而提升自动化测试效率。

上述测试报告的生成方法,首先基于预设的测试集确定当前的目标测试用例,并执行该目标测试用例;当该目标测试用例执行完毕时,获取该目标测试用例的测试结果;其次,将该目标测试用例的测试结果写入预设的统计表中;然后继续执行基于预设的测试集确定当前的目标测试用例的步骤,直至预设条件被触发时,根据该统计表中记录的测试结果生成测试报告。该方法在软件测试执行测试集的过程中,通过实时记录当前已经执行完毕的测试用例的测试结果,将其写入预设的统计表中,在测试集无法执行完毕的情况下,仍可以根据统计表中记录的测试结果生成测试报告,有效提升了自动化测试效率。

并且,由于在同一个统计表中记录了测试集中所有已经执行完毕的测试用例的测试结果,因而可以快速得到测试集中测试用例的执行情况,再次测试前可以筛选出已经测试成功的测试用例,仅执行测试失败或测试结果错误的测试用例,从而进一步提升了自动化测试效率。

在图1所示测试报告的生成方法的基础上,本实施例提供了另一种测试报告的生成方法,该方法重点描述了将目标测试用例的测试结果写入预设的统计表中的具体实现过程,如图2所示,为该方法的流程示意图,由图2可见,该方法包括以下步骤:

步骤s202:基于预设的测试集确定当前的目标测试用例。

步骤s204:执行该目标测试用例。

步骤s206:当该目标测试用例执行完毕时,获取该目标测试用例的测试结果。

步骤s208:调用该目标测试用例的测试结果对应的处理函数。

这里,对于测试用例的不同测试结果,对应有不同的处理函数,该处理函数用于将测试结果写入预设的统计表中。例如,当测试用例的测试结果包括执行成功、执行失败和执行错误三种结果时,处理函数也包括三种,并且,这三种处理函数分别对应上述三种测试结果,当需要保存某一种类型的测试结果时,调用对应唯一的处理函数,以将该测试结果写入预设的统计表中。

在至少一种可能的实施方式中,可以按以下方式设置目标测试用例的不同测试结果对应的处理函数:

(1)当目标测试用例的测试结果为执行成功时,上述对应的处理函数为添加成功测试用例的接口函数(addsuccess);该添加成功测试用例的接口函数用于将执行成功的测试用例的测试结果写入统计表中;

(2)当目标测试用例的测试结果为执行失败时,上述对应的处理函数为添加失败测试用例的接口函数(addfailure);该添加失败测试用例的接口函数用于将执行失败的测试用例的测试结果写入统计表中;

(3)当目标测试用例的测试结果为执行错误时,上述对应的处理函数为添加错误测试用例的接口函数(adderror);该添加错误测试用例的接口函数用于将执行错误的测试用例的测试结果写入统计表中。

步骤s210:通过操作系统的io接口,使用该处理函数将该测试结果写入预设的统计表中。

这里,io接口也可以称为输入输出设备接口(inputoutputinterface),io接口是主机与被控对象进行信息交换的纽带,主机通过io接口与外部设备进行数据交换。输入输出设备具体可以为键盘、显示器、打印机、扫描仪、磁盘机、鼠标器等,它们相对于高速的中央处理器来说,速度要慢得多。此外,不同外设的信号形式、数据格式也各不相同。因此,外部设备不能与cpu直接相连,而需要通过相应的电路来完成它们之间的速度匹配、信号转换,并完成某些控制功能。通常把介于主机和外设之间的一种缓冲电路称为io接口电路,简称io接口。

在调用目标测试用例的测试结果对应的处理函数之后,测试软件通过操作系统的io接口,并使用该处理函数将测试结果写入到预设的统计表中。对应上述测试用例的测试结果包括执行成功、执行失败和执行错误三种结果的例子,本步骤s210中将测试结果写入预设统计表的具体实施如下:

(1)当目标测试用例的测试结果为执行成功时,调用添加成功测试用例的接口函数,此时,除了保持将标准输出和标准错误输出到测试报告页面之外,还通过操作系统的io接口将该执行成功的测试用例的测试结果写入预设的统计表中。

(2)当目标测试用例的测试结果为执行失败时,调用添加失败测试用例的接口函数,此时,除了保持将标准输出和标准错误输出到测试报告页面之外,还通过操作系统的io接口将该执行失败的测试用例的测试结果写入预设的统计表中。

(3)当目标测试用例的测试结果为执行错误时,调用添加错误测试用例的接口函数,此时,除了保持将标准输出和标准错误输出到测试报告页面之外,还通过操作系统的io接口将该执行错误的测试用例的测试结果写入预设的统计表中。

步骤s212:判断测试集中的测试用例是否都已执行完毕;如果是,执行步骤s214;如果否,执行步骤s216。

对于上述目标测试用例,当该目标测试用例执行完毕,并且,调用了对应的处理函数通过操作系统的io接口,将该目标测试用例的测试结果写入预设的统计表之后,判断测试集中的测试用例是否都已执行完毕,例如,可以通过计数器记录当前已经执行完毕的测试用例的数目,当计数值达到测试集中测试用例的总数值时,即表示测试集中的测试用例都已经执行完毕,否则,表示该测试集中还有测试用例未执行。

如果是,也即,如果该测试集中的测试用例都已经执行完毕,则执行步骤s214,即调用htmltestrunner模块生成测试报告。

如果否,也即,如果该测试集中的测试用例没有都执行完毕,则执行步骤s216,即根据该统计表中记录的测试结果生成测试报告。

步骤s214:调用htmltestrunner模块生成测试报告。

这里,当测试集中的所有测试用例都已经执行完毕时,表示测试集已经正常执行,测试软件自动生成测试报告。其中,htmltestrunner是python中unittest框架下的一个扩展模块,可用于生成html格式的测试报告。这种情况下,测试人员可以从保存的html格式的测试报告文件中阅览到该测试集中所有测试用例的测试结果。

步骤s216:判断预设条件是否被触发;如果是,执行步骤s218;如果否,执行步骤s202。

当测试集中的测试用例没有都执行完毕时,则判断预设条件是否被触发。如果是,也即预设条件被触发,则根据该统计表中记录的测试结果生成测试报告,否则,测试软件继续执行上述步骤s202的内容,也即继续执行基于预设的测试集确定当前的目标测试用例的步骤。

步骤s218:根据该统计表中记录的测试结果生成测试报告。

当预设条件被触发时,测试软件根据该统计表中记录的测试结果生成测试报告。在其中一种实施方式中,为了方便用户从统计表中快速区分不同的测试结果,对于上述添加成功测试用例的接口函数、添加失败测试用例的接口函数和添加错误测试用例的接口函数,在执行写入预设的统计表的过程中,可以设置为将不同的测试结果写入统计表中不同的区域,例如,可以将执行成功的测试结果集中写入到统计表中的某一区域,而将执行失败、执行错误的测试结果对应写入到统计表中的另外两个区域。

另外,为了方便后期对测试集中已经执行完毕的测试用例的测试结果进行统计分析,在至少一种可能的实施方式中,在使用处理函数将测试结果写入统计表时,同时也将当前执行完毕的测试用例的名称、以及该测试用例的测试结果对应的顺序号写入统计表,下述表1为一种测试结果统计表示意图:

表1

如上表1所示,其中,表头栏的passno.表示测试结果为执行成功的测试用例的序号,passcase表示测试结果为执行成功的测试用例的名称,failno.表示测试结果为执行失败的测试用例的序号,failcase表示测试结果为执行失败的测试用例的名称,errorno.表示测试结果为执行错误的测试用例的序号,errorcase表示测试结果为执行错误的测试用例的名称。

这样,通过上述设置,用户可以通过统计表快速区分出哪些测试用例是执行成功,哪些测试用例是执行失败或执行错误。并且,也可以从统计表直观得到测试集中不同测试结果的测试用例的数目,以及其占测试集中测试用例总数的比值;此外,也能根据统计表迅速定位测试失败和测试错误的测试用例,方便用户排查问题;再者,用户还可以从统计表快捷筛选出需要再次测试的测试用例,从而提高整体测试效率。

本实施例提供了另一种测试报告的生成方法,该方法在上述实施例所述方法的基础上实现;该方法重点描述了使用该处理函数将该测试结果写入预设的统计表中的具体实现过程,如图3所示,为该方法的流程示意图,由图3可知,该方法包括以下步骤:

步骤s302:基于预设的测试集确定当前的目标测试用例。

步骤s304:执行该目标测试用例。

步骤s306:当该目标测试用例执行完毕时,获取该目标测试用例的测试结果。

步骤s308:调用该目标测试用例的测试结果对应的处理函数。

步骤s310:判断该测试集对应的统计表的路径和名称是否均为非空;如果均为空,执行步骤s312;如果不均为空,执行步骤s302。

对于每个测试集,都有其对应的统计表,在其中一种可能的实施方式中,可以通过测试框架根据当前测试集的名称,定义测试结果统计表路径以及名称。当调用处理函数将测试结果写入预设的统计表时,处理函数首先判断预备写入的统计表的路径和名称是否已经定义,若已经定义则表示非空。

步骤s312:打开该测试集对应的统计表。

如果上述判断的结果为是,也即,该测试集对应的统计表的路径和名称均为非空,则打开该测试集对应的统计表;

如果上述判断的结果为否,也即,该测试集对应的统计表的路径和名称不是非空,则处理函数无法执行将测试结果写入统计表的指令。此时,测试程序退出执行该写入统计表的指令,重新返回到步骤s302,执行基于预设的测试集确定当前的目标测试用例的步骤。

步骤s314:通过操作系统的io接口,将该目标测试用例的测试结果以指定的数据格式写入至该统计表中。

若测试集对应的统计表的路径和名称均为非空,且统计表被打开之后,测试程序通过操作系统的io接口将该目标测试用例的测试结果以指定的数据格式写入至该统计表中。这里,用户可以根据实际情况设置写入统计表的数据格式,例如,上述表1的方式。

步骤s316:关闭该统计表。

当该目标测试用例的测试结果写入统计表中之后,关闭该统计表。

步骤s318:判断测试集中的测试用例是否都已执行完毕;如果是,执行步骤s320;如果否,执行步骤s322。

步骤s320:调用htmltestrunner模块生成测试报告。

步骤s322:判断预设条件是否被触发;如果是,执行步骤s324;如果否,执行步骤s302。

对于上述目标测试用例,当该目标测试用例执行完毕,将该目标测试用例的测试结果写入预设的统计表,并且关闭该统计表之后,若测试集中的测试用例没有都执行完毕,则测试软件继续执行上述步骤s302的内容,也即继续执行基于预设的测试集确定当前的目标测试用例的步骤,直至预设条件被触发时,根据该统计表中记录的测试结果生成测试报告。

这里,该预设条件可以是“执行该目标测试用例的测试程序被退出”,例如,测试程序在执行测试集的过程中被人为退出,因而无法完成整个测试集的测试。也即,在此预设条件下,当执行该目标测试用例的测试程序被退出时,预设条件被触发,此时,根据该统计表中记录的测试结果生成测试报告。

其次,上述预设条件还可以是“执行该目标测试用例的测试设备内存已满”。这里,测试设备是用于执行测试用例的硬件设备,例如测试机。若在执行测试机的过程中,测试机的磁盘被写满,此时运行程序无法继续,因而无法完成整个测试集的测试。也就是说,在此预设条件下,当执行该目标测试用例的测试设备内存已满时,预设条件被触发,此时,根据该统计表中记录的测试结果生成测试报告。

再者,上述预设条件还可以是“当执行该目标测试用例的测试设备发生故障,执行该目标测试用例的测试程序被退出时,接收到测试报告生成指令”。这里,测试设备发生故障的情形包括测试设备宕机或重启,此时,执行目标测试用例的测试程序被退出。这种情况下,测试集也没有测试完成,若接收到测试报告生成指令,则根据该统计表中记录的测试结果生成测试报告。

另外,上述预设条件还可以是“当该测试集中所有的测试用例被执行完毕,测试报告页面文件被删除时,接收到测试报告生成指令”。在测试集中的所有测试用例都执行完毕时,会相应生成测试报告,若是该测试报告的页面文件被删除,例如被人为意外删除,或者被查杀清理,则用户无法通过测试报告页面文件获得执行完毕的测试集的测试结果信息。此时,若接收到测试报告生成指令,则根据该统计表中记录的测试结果生成测试报告。

步骤s324:根据该统计表记录的测试结果生成测试报告。

当预设条件被触发时,测试软件根据该统计表中记录的测试结果生成测试报告。

这样,本实施例提供的测试报告的生成方法,通过设置上述预设条件,当预设条件被触发时,测试程序可以根据该统计表中记录的测试结果生成测试报告,从而缓解了现有技术中因测试集无法执行完毕等异常而无法获得测试报告的技术问题,并可以有效提高测试效率。

对应于上述实施例中的测试报告的生成方法,本实施例提供了一种测试报告的生成装置,如图4所示,为该测试报告的生成装置的结构示意图,由图4可见,该装置包括依次相连的目标测试用例确定模块40、目标测试用例执行模块41、测试结果获取模块42、测试结果写入模块43和测试报告生成模块44,其中,各个模块的功能如下:

目标测试用例确定模块40,用于基于预设的测试集确定当前的目标测试用例;

目标测试用例执行模块41,用于执行该目标测试用例;

测试结果获取模块42,用于当该目标测试用例执行完毕时,获取该目标测试用例的测试结果;

测试结果写入模块43,用于将该目标测试用例的测试结果写入预设的统计表中;

测试报告生成模块44,用于继续执行基于预设的测试集确定当前的目标测试用例的步骤,直至预设条件被触发时,根据该统计表中记录的测试结果生成测试报告。

上述测试报告的生成装置,首先基于预设的测试集确定当前的目标测试用例,并执行该目标测试用例;当该目标测试用例执行完毕时,获取该目标测试用例的测试结果;其次,将该目标测试用例的测试结果写入预设的统计表中;然后继续执行基于预设的测试集确定当前的目标测试用例的步骤,直至预设条件被触发时,根据该统计表中记录的测试结果生成测试报告。该装置在软件测试执行测试集的过程中,通过实时记录当前已经执行完毕的测试用例的测试结果,将其写入预设的统计表中,在测试集无法执行完毕的情况下,仍可以根据统计表中记录的测试结果生成测试报告,有效提升了自动化测试效率。并且,由于在同一个统计表中记录了测试集中所有已经执行完毕的测试用例的测试结果,因而可以快速得到测试集中测试用例的执行情况,再次测试前可以筛选出已经测试成功的测试用例,仅执行测试失败或测试结果错误的测试用例,从而进一步提升了自动化测试效率。

在其中一种可能的实施方式中,上述测试结果写入模块43包括彼此连接的处理函数调用单元和测试结果写入单元,其中,该处理函数调用单元用于调用该目标测试用例的测试结果对应的处理函数;该测试结果写入单元用于通过操作系统的io接口,使用该处理函数将测试结果写入预设的统计表中。

在另一种可能的实施方式中,上述测试结果写入单元包括依次相连的非空判断子单元、打开统计表子单元、写入统计表子单元和关闭统计表子单元,其中,各个子单元的功能如下:

非空判断子单元,用于判断该测试集对应的统计表的路径和名称是否均为非空;

打开统计表子单元,用于当该统计表的路径和名称均为非空时,打开该测试集对应的统计表;

写入统计表子单元,用于将该目标测试用例的测试结果以指定的数据格式写入至该统计表中;

关闭统计表子单元,用于关闭该统计表。

在又一种可能的实施方式中,对于上述测试报告的生成装置中的处理函数调用单元,在其调用该目标测试用例的测试结果对应的处理函数时,可以按以下方式执行:

当该目标测试用例的测试结果为执行成功时,对应的处理函数为添加成功测试用例的接口函数;该添加成功测试用例的接口函数用于将执行成功的测试用例的测试结果写入统计表中;

当该目标测试用例的测试结果为执行失败时,对应的处理函数为添加失败测试用例的接口函数;该添加失败测试用例的接口函数用于将执行失败的测试用例的测试结果写入统计表中;

当该目标测试用例的测试结果为执行错误时,对应的处理函数为添加错误测试用例的接口函数;该添加错误测试用例的接口函数用于将执行错误的测试用例的测试结果写入统计表中。

在至少一种可能的实施方式中,上述测试报告生成模块44中的预设条件包括下述之一:

执行该目标测试用例的测试程序被退出;

执行该目标测试用例的测试设备内存已满;

当执行该目标测试用例的测试设备发生故障,执行该目标测试用例的测试程序被退出时,接收到测试报告生成指令;

当该测试集中所有的测试用例被执行完毕,测试报告页面文件被删除时,接收到测试报告生成指令。

本发明实施例提供的测试报告的生成装置,其实现原理及产生的技术效果和前述测试报告的生成方法实施例相同,为简要描述,测试报告的生成装置的实施例部分未提及之处,可参考前述测试报告的生成方法实施例中相应内容。

本发明实施例还提供了一种服务器,如图5所示,为该服务器的结构示意图,其中,该服务器包括处理器51和存储器52,该存储器52存储有能够被该处理器51执行的机器可执行指令,该处理器51执行该机器可执行指令以实现上述测试报告的生成方法。

在图5示出的实施方式中,该服务器还包括总线53和通信接口54,其中,处理器51、通信接口54和存储器52通过总线连接。

其中,存储器52可能包含高速随机存取存储器(ram,randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口54(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

处理器51可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器51中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器51可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现成可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器51读取存储器52中的信息,结合其硬件完成前述实施例的测试报告的生成方法的步骤。

本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述测试报告的生成方法,具体实现可参见前述方法实施例,在此不再赘述。

本发明实施例所提供的测试报告的生成方法、测试报告的生成装置和服务器的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的测试报告的生成方法,具体实现可参见方法实施例,在此不再赘述。

除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。

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

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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