自动化测试的方法和装置与流程

文档序号:12464115阅读:192来源:国知局
自动化测试的方法和装置与流程

本发明涉及信息技术领域,具体地,涉及一种自动化测试的方法和装置。



背景技术:

当前,对于各种业务产品进行测试时,例如对应用APP、服务器中功能等进行测试,需要运行多个测试用例来完成测试。由于测试环境的稳定性原因,例如由于网络出现故障或拥塞,会出现多个测试用例中的部分测试用例运行失败的情况。本申请发明人在实现本发明的过程中发现,目前,对于测试用例运行失败的情况,通常由测试人员重新启动运行脚本来对所有测试用例重新运行,从而导致测试效率低,测试花费时间长。



技术实现要素:

本发明实施例的目的是提供一种自动化测试的方法和装置以解决上述技术问题或者至少部分地解决上述技术问题。

为了实现上述目的,本发明实施例提供一种自动化测试的方法,所述方法包括:针对测试对象运行多个测试用例;当所运行的所述多个测试用例中的一个或多个测试用例运行失败时,重新运行所述运行失败的测试用例直到所述运行失败的测试用例运行成功或运行次数超过预设阈值;根据所述多个测试用例的运行情况记录所述多个测试用例的测试结果;根据所述测试结果生成测试报告。

可选的,所述根据所述测试结果生成测试报告包括:从所述测试结果中提取所述运行失败的测试用例的相关信息,根据所述相关信息生成所述运行失败的测试用例对应的描述网页;将所述运行失败的测试用例的标识信息以及所述运行失败的测试用例对应的描述网页的链接存储到测试报告中。

可选的,所述根据所述多个测试用例的运行情况记录所述多个测试用例的运行记录测试结果包括:当测试用例运行失败时,将所述测试用例在运行失败时的堆栈信息记录到测试结果中,和/或对运行失败时对应的测试界面进行截图并将所述截图记录到测试结果中。

可选的,所述从所述测试结果中提取所述运行失败的测试用例的相关信息,根据所述相关信息生成所述运行失败的测试用例对应的描述网页包括:针对所述运行失败的测试用例,从测试结果中提取所述测试用例在运行失败时的堆栈信息和/或运行失败时的截图来生成包括所述堆栈信息和/或所述截图的描述网页。

可选的,所述针对测试对象运行多个测试用例包括:从预先存储所述多个测试用例名称的文件中读取所述测试用例名称;在测试对象上运行所述测试用例名称对应的测试用例。

本发明实施例还提供一种自动化测试的装置,所述装置包括:测试用例运行模块,用于针对测试对象运行多个测试用例,并且当所运行的所述多个测试用例中的一个或多个测试用例运行失败时,重新运行所述运行失败的测试用例直到所述运行失败的测试用例运行成功或运行次数超过预设阈值;测试结果记录模块,用于根据所述多个测试用例的运行情况记录所述多个测试用例的测试结果;测试报告生成模块,用于根据所述测试结果生成测试报告。

可选的,所述测试报告生成模块用于从所述测试结果中提取所述运行失败的测试用例的相关信息,根据所述相关信息生成所述运行失败的测试用例对应的描述网页;将所述运行失败的测试用例的标识信息以及所述运行失败的测试用例对应的描述网页的链接存储到测试报告中。

可选的,所述测试结果记录模块用于当测试用例运行失败时,将所述测试用例在运行失败时的堆栈信息记录到测试结果中,和/或对运行失败时对应的测试界面进行截图并将所述截图记录到测试结果中。

可选的,所述测试报告生成模块用于针对所述运行失败的测试用例,从测试结果中提取所述测试用例在运行失败时的堆栈信息和/或运行失败时的截图来生成包括所述堆栈信息和/或所述截图的描述网页。

可选的,所述测试用例运行模块用于从预先存储所述多个测试用例名称的文件中读取所述测试用例名称;在测试对象上运行所述测试用例名称对应的测试用例。

通过上述技术方案,针对测试对象运行多个测试用例;当所运行的多个测试用例中的一个或多个测试用例运行失败时,重新运行所述运行失败的测试用例直到所述运行失败的测试用例运行成功或运行次数超过预设阈值;如此能够对运行失败的测试用例进行自动重新运行,而不需要同时重新运行所有的测试用例,进而提高了测试效率,减少了测试所用时间。

本发明实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明实施例,但并不构成对本发明实施例的限制。在附图中:

图1是根据本发明实施例的自动化测试的方法的流程图;

图2是根据本发明实施例的实现多个测试用例的运行的流程图;

图3是根据本发明实施例的生成测试报告的方法的流程图;

图4是根据本发明实施例的自动化测试的方法的流程图;以及

图5是根据本发明实施例的自动化测试的装置的结构图。

具体实施方式

以下结合附图对本发明实施例的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明实施例,并不用于限制本发明实施例。

图1是根据本发明实施例的自动化测试的方法的流程图;该方法可用于各种测试中,例如可以用于对本地应用或功能的测试中,也可用于对远程服务器、智能终端中应用或功能的测试中。本发明中,被测试的本地应用或功能,以及远程服务器、智能终端中应用或功能被称为测试对象。如图1所示,该方法可包括如下步骤。

在步骤S110中,针对测试对象运行多个测试用例。

在对测试对象进行测试时,一般会对测试对象的各方面功能进行测试,因此需要使用多个测试用例。具体地,可以通过编写脚本调用目标测试用例,在脚本中对各个目标测试用例采用自动测试命令,来对测试对象运行多个测试用例。

在步骤S120中,当所运行的多个测试用例中的一个或多个测试用例运行失败时,重新运行该运行失败的测试用例直到运行失败的测试用例运行成功或运行次数超过预设阈值。

举例而言,对测试用例运行自动测试命令,之后判断测试用例是否运行成功,如果测试用例运行成功,则对下一个测试用例运行自动测试命令,如果测试用例运行失败,则判断测试用例运行次数是否达到预设阈值,例如预设阈值取3,如果运行次数未达到预设阈值,则对该测试用例重新运行直到该测试用例运行成功;如果运行次数达到预设阈值,且该测试用例仍然没有运行成功,则确定该测试用例运行失败并对下一个测试用例运行自动测试命令。

通过本发明实施例中技术方案,能够实现对运行失败的测试用例进行自动重新运行,从而提高了测试效率,并减少了测试所用时间。

在步骤S130中,根据多个测试用例的运行情况记录多个测试用例的测试结果。

当每个测试用例运行时,对测试用例运行过程中的信息进行记录,当测试用例运行完成后,例如运行成功或失败,将记录的测试用例运行过程中的信息以预设形式表示,得到测试结果。举例而言,当每个测试用例运行完成后,针对运行情况生成测试结果,具体地,可以针对运行情况生成JUit XML(Java语音测试框架下可扩展标记语言)形式的测试结果。

针对测试对象运行多个测试用例;当所运行的多个测试用例中的一个或多个测试用例运行失败时,重新运行所述运行失败的测试用例直到所述运行失败的测试用例运行成功或运行次数超过预设阈值;如此能够对运行失败的测试用例进行自动重新运行,而不需要同时重新运行所有的测试用例,进而提高了测试效率,减少了测试所用时间。

在步骤S140中,根据测试结果生成测试报告。

测试结果中记录有测试用例运行过程中的信息,可针对各个测试用例,对测试结果进行解析从测试结果中提取有用信息来生成测试报告。

采用上述技术方案,达到了提高测试效率,减少测试所用时间的技术效果。

另一方面,在上述实施例的技术上,基于同样的发明思路,本发明在以下的另一实施例中提供了一种自动化测试的方法,包括图1所示的各个步骤,其实现原理和技术效果参考图1所示的实施例。

在对多个测试用例进行批量运行时,如果将各个测试用例写到测试脚本的命令行中,会造成命令行过长,并为测试用例的管理带来不便。为解决命令行过长的问题,在本实施例中,如图2所示,采用如下步骤来实现多个测试用例的批量运行。

在步骤S202中,从预先存储多个测试用例名称的文件中读取测试用例名称。

在步骤S204中,在测试对象上运行测试用例名称对应的测试用例。

可以从预先存储多个测试用例名称的文件中逐条读取测试用例名称;在测试对象上针对测试用例名字执行测试命令来对测试对象运行测试用例名称对应的测试用例。例如,在.txt(文本)文件中存储各个测试用例的名称,从该文件中逐条读取测试用例名称,针对读取的测试用例名称运行测试命令。例如读取到测试用例名称“com.xx.xx.test#test1”,对该测试用例名称对应的测试命令“adb shell uiautomator runtest UIA.jar–c com.xx.xx.test#test1”,则调用测试用例“com.xx.xx.test#test1”并在测试对象上运行该测试用例。

通过本发明实施例中技术方案,能够避免在测试脚本中产生过长命令行,并方便管理多个测试用例。

目前,对于测试用例的运行情况的记录多数仅针对运行的时间以及运行结果是成功还是失败进行记录,缺少对测试用例运行情况的详细记录,更没有直观的截图信息。

为解决上述问题,在本实施例中,所述根据多个测试用例的运行情况记录多个测试用例的运行记录测试结果可包括:当测试用例运行失败时,将测试用例在运行失败时的堆栈信息记录到测试结果中,和/或对运行失败时对应的测试界面进行截图并将所述截图记录到测试结果中。

通过本发明中技术方案,能够在测试用例运行失败时获得详细的运行信息,并可以获得直观的截图信息,便于测试人员在后续分析故障时使用。

如果将多个测试用例运行后所得测试结果以JUnit XML(Java语音测试框架下可扩展标记语言)形式列出,该种形式呈现的测试结果使得测试人员需要花费很大精力对测试结果进行分析整理,降低了测试效率。为解决上述技术问题,如图3所示,在本实施例中采用如下步骤生成测试报告。

在步骤S302中,从测试结果中提取运行失败的测试用例的相关信息,根据相关信息生成运行失败的测试用例对应的描述网页。

其中,运行失败的测试用例对应的描述网页可包括运行失败的测试用例在失败时的堆栈信息和/或失败时的测试对象中界面的截图信息。

例如,所述从测试结果中提取运行失败的测试用例的相关信息,根据提取的所述相关信息生成所述运行失败的测试用例对应的描述网页可包括:针对运行失败的测试用例,从测试结果中提取测试用例在运行失败时的堆栈信息和/或运行失败时的测试对象中界面的截图来生成包括堆栈信息和/或截图的描述网页。

在步骤S304中,将运行失败的测试用例的标识信息以及运行失败的测试用例对应的描述网页的链接存储到测试报告中。

此外,还可以在测试报告中存储运行成功的测试用例的标识信息以及对应的描述网页的链接。

举例而言,各个测试用例运行后所得测试结果可以JUnit XML形式记录,根据该JUnit XML形式的测试结果生成HTML网页形式的测试报告。HTML网页中包括运行成功的各个测试用例的名称并对应标识为测试通过。HTML网页中还包括运行失败的测试用例的名称,并对应标识为测试失败,此外,HTML网页中还可提供运行失败的测试用例对应的描述网页的链接。当HTML网页中描述网页的链接被点击时,调取对应的描述网页进行呈现。描述网页中可包括运行失败测试用例在失败时的堆栈信息和测试对象中界面的截图信息。

通过本发明实施例中技术方案,避免使用难以查看的JUnit XML形式的测试结果,根据测试结果生成便于测试人员进行分析的HTML网页形式的测试报告,并且测试报告中将运行失败的测试用例的详细信息以描述网页链接的形式进行提供,进一步方便了测试人员查看测试结果,从而提高了测试效率。

上述实施方式中步骤没有特别顺序限制,在能够实现本发明目的的情况下,上述实施方式中的步骤可以以任何顺序执行或并行执行。

图4是根据本发明实施例的自动化测试的方法的流程图。在本实施例中,测试用例名称存储在文本文件中,测试报告以HTML网页的形式呈现,用于限制一次测试中测试用例运行次数的预设阈值为3次。如图4所示,该方法可包括如下步骤。

在步骤S402中,从文本文件中读取测试用例名称。

在步骤S404,在测试对象上针对读取的测试用例名字执行测试命令来对测试对象运行对应的测试用例。

在步骤S406中,判断测试用例是否运行成功,如果测试用例运行成功,则执行步骤S414,如果试用例运行失败,则执行步骤S408。

在步骤S408中,判断测试用例运行次数是否达到3次,如果运行次数未达到3次,则执行步骤S410,如果运行次数达到3次,则执行步骤S412。

在步骤S410中,对该测试用例重新运行,然后执行步骤S406。

在步骤S412中,确定测试用例运行失败,以XML(可扩展标记语言)形式存储运行失败的测试用例的在失败时的堆栈信息并存储失败时测试对象的界面的截图,然后执行步骤S416。

在步骤S414中,以XML形式存储成功运行的测试用例的测试结果,之后执行步骤S416。

在步骤S416中,判断文本文件中的测试用例是否都已被读取,如果是,则执行步骤S418,否则,执行步骤S402。

在步骤S418中,从测试结果中提取运行失败的测试用例的堆栈信息和截图,生成运行失败的测试用例对应的描述网页。

在步骤S420中,在测试报告中存储运行失败的测试用例的标识信息以及对应的描述网页的链接。

在步骤S422中,从测试结果中提取运行成功的测试用例的名称,对应标识为测试通过后存储到测试报告中。

在步骤S424中,以HTML形式呈现生成的测试报告。

上述实施例仅用于说明本发明,本发明的实现方式不限于此。

图5是根据本发明实施例的自动化测试的装置的结构图,该装置可用于各种测试中,例如可以用于对本地应用或功能的测试中,也可用于对远程服务器、智能终端中应用或功能的测试中。本发明中,被测试的本地应用或功能,以及远程服务器、智能终端中应用或功能被称为测试对象。如图5所示,该方法可包括如下模块。

测试用例运行模块510,用于针对测试对象运行多个测试用例,并且当所运行的多个测试用例中的一个或多个测试用例运行失败时,重新运行该运行失败的测试用例直到运行失败的测试用例运行成功或运行次数超过预设阈值。

测试结果记录模块520,用于根据多个测试用例的运行情况记录所述多个测试用例的测试结果。

测试报告生成模块530,用于根据测试结果生成测试报告。

通过本发明实施例中技术方案,能够实现对运行失败的测试用例进行自动重新运行,而不需要同时重新运行所有的测试用例,从而提高了测试效率,并减少了测试所用时间。

在上述实施例的技术上,基于同样的发明思路,本发明另一实施例提供了一种自动化测试的装置,包括图5所示的测试用例运行模块510,测试结果记录模块520和测试报告生成模块530,其实现原理和技术效果参考图5所示的实施例。

具体地,在一可选实施方式中,测试报告生成模块530用于从测试结果中提取运行失败的测试用例的相关信息,根据相关信息生成运行失败的测试用例对应的描述网页;将运行失败的测试用例的标识信息以及运行失败的测试用例对应的描述网页的链接存储到测试报告中。

进一步地,在一可选实施方式中,测试结果记录模块520用于当测试用例运行失败时,将测试用例在运行失败时的堆栈信息记录到测试结果中,和/或对运行失败时对应的测试界面进行截图并将所述截图记录到测试结果中。

进一步地,在一可选实施方式中,测试报告生成模块530用于针对运行失败的测试用例,从测试结果中提取测试用例在运行失败时的堆栈信息和/或运行失败时的截图来生成包括堆栈信息和/或截图的描述网页。

通过本发明中技术方案,能够在测试用例运行失败时获得详细的运行信息,并可以获得直观的截图信息,便于测试人员在后续分析故障时使用。

在一可选实施例中,测试报告生成模块530用于从测试结果中提取运行成功的测试用例的相关信息存储到测试报告中。

在一可选实施例中,测试用例运行模块510用于从预先存储多个测试用例名称的文件中读取所述测试用例名称;在测试对象上运行测试用例名称对应的测试用例。

通过本发明实施例中技术方案,能够避免在测试脚本中产生过长命令行,并方便管理多个测试用例。

上述装置与前述方法相对应,具体实施方式可参见前述方法中详细描述,不再赘述。

以上结合附图详细描述了本发明例的可选实施方式,但是,本发明实施例并不限于上述实施方式中的具体细节,在本发明实施例的技术构思范围内,可以对本发明实施例的技术方案进行多种简单变型,这些简单变型均属于本发明实施例的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明实施例对各种可能的组合方式不再另行说明。

本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

此外,本发明实施例的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明实施例的思想,其同样应当视为本发明实施例所公开的内容。

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