CN110262967A - 一种应用于自动化测试的日志输出方法与装置 - Google Patents
一种应用于自动化测试的日志输出方法与装置 Download PDFInfo
- Publication number
- CN110262967A CN110262967A CN201910487711.9A CN201910487711A CN110262967A CN 110262967 A CN110262967 A CN 110262967A CN 201910487711 A CN201910487711 A CN 201910487711A CN 110262967 A CN110262967 A CN 110262967A
- Authority
- CN
- China
- Prior art keywords
- log
- execution
- test case
- test
- thread
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种应用于自动化测试的日志输出方法与装置,该方法包括:按照不同执行线程分配不同输出流的分配方式,为用于执行测试任务的执行线程分配对应的输出流;利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志;将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出。本发明解决了采用现有技术中的日志输出方式导致存储的日志可辨识度较差,需要耗费较多人力资源进行辨认的问题。
Description
技术领域
本发明涉及软件测试领域,尤其涉及一种应用于自动化测试的日志输出方法与装置。
背景技术
自动化测试的执行过程中会产生大量的日志,这些日志是记录测试过程与分析测试结果的依据。通常情况下,日志在产生后,会输出到指定目的地进行保存,以便测试人员后续取用。
目前,为了提高自动化测试的执行效率,自动化测试通常采用并发执行的方式。由于单个执行线程执行的是单个测试任务,因此为实现不同测试任务的并发执行,会同时启动多个执行线程。其中,单个测试任务中往往包含一个或多个串行执行的测试用例。
在自动化测试并发执行的场景下,一方面,对于分别对应于不同测试任务中测试用例的日志,均会按照日志生成时间先后顺序,输出至指定目的地;另一方面,目的地会按照日志接收顺序对日志进行存储。
采用上述日志输出方式,可能导致存储的对应于不同测试任务中测试用例的日志会混杂在一起,比如:假设有三个测试任务,分别包含测试用例A、测试用例B、测试用例C,若采用上述日志输出方式,则相应的日志及其输出顺序可能为:C begin,C do 1,A begin,Bbegin,C do 2,A do 1,A do 2,A do 3,B do 1,B do 2,C do 3,C end,B do 3,B end,Aend。
日志混杂产生的直接后果是:对于测试人员来说,需要对存储的日志进行仔细辨别,方可从中识别出对应同一测试任务的日志,该过程费时费力。
发明内容
本发明实施例中提供了一种应用于自动化测试的日志输出方法与装置,以解决采用现有技术中的日志输出方式导致存储的日志可辨识度较差,需要耗费较多人力资源进行辨认的问题。
为解决上述技术问题,本发明是这样实现的:
第一方面,本发明提供了一种应用于自动化测试的日志输出方法,该方法包括:
按照不同执行线程分配不同输出流的分配方式,为用于执行测试任务的执行线程分配对应的输出流;
利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志;
将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出。
可选的,所述每一个测试用例对应的日志包括:所述执行线程所创建的执行子线程在完成测试用例的执行后生成的第一日志,以及,所述执行线程自身在完成测试用例的执行后生成的第二日志;则,
将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出,具体包括:
各测试用例对应的执行子线程基于JAVA的调用链追踪技术获取所述任一执行线程被分配的输出流,并按照各测试用例在所述执行线程中的执行顺序在获取到的输出流中输出所述第一日志;
所述任一执行线程按照各测试用例在所述执行线程中的执行顺序在对应的输出流中输出所述第二日志。
可选的,利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志,具体包括:
针对所述每一个测试用例分别执行:
通过JAVA反射机制,获取该测试用例中依次执行的方法;
从获取的方法中,确定在运行该测试用例时首个被执行的第一方法及最后被执行的第二方法;
根据确定的所述第一方法和第二方法,按照预设的日志生成规则,在该测试用例执行完成后生成相应的日志;
其中,预设的日志生成规则包括:在与该测试用例对应的日志中与所述第一方法匹配的日志内容前,写入第一分段标识;在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入第二分段标识。
可选的,在将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出后,所述方法还包括:
根据所述第一分段标识和第二分段标识,从通过所述执行线程对应的输出流输出的日志中,识别对应于不同测试用例的日志。
可选的,所述第二分段标识包括:用于表征该测试用例的执行失败等级的标识信息;则,
在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入第二分段标识,具体包括:
若该测试用例执行失败,则确定该测试用例的执行失败等级;
根据所述执行失败等级,在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入表征所述执行失败等级的标识信息。
可选的,所述方法还包括:
根据表征所述执行失败等级的标识信息,从通过所述执行线程对应的输出流输出的日志中,确定执行失败的测试用例对应的日志;
将所述执行失败的测试用例对应的日志,保存至失败用例日志集中。
第二方面,本发明提供了一种应用于自动化测试的日志输出装置,该装置包括:
输出流分配单元,用于按照不同执行线程分配不同输出流的分配方式,为用于执行测试任务的执行线程分配对应的输出流;
测试用例执行单元,用于利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志;
日志输出单元,用于将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出。
可选的,所述每一个测试用例对应的日志包括:所述执行线程所创建的执行子线程在完成测试用例的执行后生成的第一日志,以及,所述执行线程自身在完成测试用例的执行后生成的第二日志;则,
所述日志输出单元,具体用于:
利用各测试用例对应的执行子线程,基于JAVA的调用链追踪技术获取所述任一执行线程被分配的输出流,并按照各测试用例在所述执行线程中的执行顺序在获取到的输出流中输出所述第一日志;
利用所述任一执行线程,按照各测试用例在所述执行线程中的执行顺序在对应的输出流中输出所述第二日志。
可选的,所述测试用例执行单元,具体用于:
针对所述每一个测试用例分别执行:
通过JAVA反射机制,获取该测试用例中依次执行的方法;从获取的方法中,确定在运行该测试用例时首个被执行的第一方法及最后被执行的第二方法;
根据确定的所述第一方法和第二方法,按照预设的日志生成规则,在该测试用例执行完成后生成相应的日志;
其中,预设的日志生成规则包括:在与该测试用例对应的日志中与所述第一方法匹配的日志内容前,写入第一分段标识;在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入第二分段标识。
采用本发明实施例中提供的上述至少一个技术方案,可以达到如下效果:
任一执行线程执行测试任务中每一个测试用例时所对应的日志,均会按照该测试用例在任一执行线程中的执行顺序在执行线程对应的输出流中输出。因此,对应于同一测试任务对应的日志,在通过输出流输出至目的地时会按照测试任务中每一个测试用例在执行线程中的执行顺序按序排列,不会出现现有技术中因不同测试任务因复用同一输出流,而导致日志混杂在一起的情况,从而解决了采用现有技术中的日志输出方式导致存储的日志可辨识度较差,需要耗费较多人力资源进行辨认的问题。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本发明实施例的一部分,本发明实施例的示意性实施例及其说明用于解释本发明实施例,并不构成对本发明实施例的不当限定。在附图中:
图1是本发明的一个实施例中提供的一种应用于自动化测试的日志输出方法的流程示意图;
图2是本发明的一个实施例中提供的一种应用于自动化测试的日志输出方法的整体流程框架示意图;
图3是本发明的一个实施例中提供的一种应用于自动化测试的日志输出装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明的具体实施例及相应的附图对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明实施例的一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明所保护的范围。
为了便于本发明实施例中技术方案的理解,以下为相关名词的解释说明。
自动化测试,一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
测试用例,是指对一项特定的软件产品进行测试任务的描述。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并将上述内容形成文档。其是执行测试前由测试人员编写的指导测试的文档等,主要解决测什么、怎么测、如何测的问题。
以下结合附图,详细说明本发明各实施例中提供的技术方案。
实施例1
为解决采用现有技术中的日志输出方式导致存储的日志可辨识度较差,需要耗费较多人力资源进行辨认的问题,本发明实施例1提供了一种应用于自动化测试的日志输出方法。
现有的日志输出方式中,对于不同测试任务中测试用例的日志,均是按照日志生成时间的先后顺序输出的,使得这些日志与自动化测试的过程息息相关,而与测试用例之间的逻辑关系无关,这样就会导致在多个执行线程同时启动的情况下,测试用例的日志混乱且缺乏可读性,当需要准确分析一个测试用例的日志时,还需要测试人员耗费时间和精力进行辨别和人工排序。因此,本发明中采用不同执行线程分配不同输出流的分配方式,为各执行线程分配与每个执行线程对应的输出流,并且,采用各执行线程创建的执行子线程复用各执行线程对应的输出流的方法,控制了各测试用例的日志的输出走向,实现了日志按照生成时间的先后顺序输出,且日志与测试用例的逻辑关系相对应,从而提高了日志的可辨识度。
本发明实施例的一种应用于自动化测试的日志输出方法的执行主体,可以是用于执行测试用例的自动化测试过程的服务器或服务器上所运行的软件系统;也可以是用于管理测试用例执行后的日志输出的服务器或服务器上所运行的软件系统。
为便于描述本发明实施例1,以下详细说明均以本发明的一种应用于自动化测试的日志输出方法的执行主体为用于执行测试用例的自动化测试过程的服务器或服务器上所运行的软件系统(以下简称为测试系统)为例,对该应用于自动化测试的日志输出方法进行介绍。
请参见说明书附图1,图1为本发明实施例1提供的一种应用于自动化测试的日志输出方法的流程示意图,该流程具体包括如下步骤:
步骤11:按照不同执行线程分配不同输出流的分配方式,为用于执行测试任务的执行线程分配对应的输出流。
本发明实施例中,所述执行线程(Child Thread),是指测试任务执行过程中所占用的线程。其中,所述执行线程和所述测试任务是一一对应的。
需要说明的是,当多个线程同时运行的时候,它们的执行模式称之为并发执行。
本发明实施例中,在一种实施方式中,所述测试任务(或测试计划,Test Plan)中包含一个或者多个测试用例(Test Case)。其中,所述多个测试用例可以称之为一个测试用例集(Test Case Suit)。
本发明实施例中,所述按照不同执行线程分配不同输出流的分配方式,是指每一个执行线程都可以单独分配一个对应的输出流。
需要说明的是,每一个执行线程单独分配一个对应的输出流,使得各个执行线程启动后所生成的日志是根据所属的执行线程来向执行线程对应的输出流中输出的。因此,“按照不同执行线程分配不同输出流的分配方式,为用于执行测试任务的执行线程分配对应的输出流”这一步骤是下述“基利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志”这一步骤的必要前提条件。
步骤12:利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志。
步骤12的具体实现方式,可以与现有技术中利用执行线程执行测试用例并生成相应日志的方式类似,此处不再赘述。
但值得说明的是,本发明实施例中,为使得同一输出流所输出的对应于不同测试用例的日志能够较为容易的被区分,在一种实施方式中,利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志,,具体可以包括:
针对所述每一个测试用例分别执行下述子步骤:
子步骤131:通过JAVA反射机制,获取该测试用例中依次执行的方法;
具体地,通过JAVA反射机制,至少可以获取该测试用例的类、方法和属性。其中,类中包含方法。
通过JAVA反射机制获取测试用例中依次执行的方法的目的,在于确定测试用例中方法的执行先后顺序,进而可以确定首个被执行的方法(为便于描述,称第一方法)和最后被执行的方法(为便于描述,称第二方法)。
子步骤132:从获取的方法中,确定在运行该测试用例时首个被执行的第一方法及最后被执行的第二方法;
子步骤133:根据确定的所述第一方法和第二方法,按照预设的日志生成规则,在该测试用例执行完成后生成对应的日志;
其中,预设的日志生成规则包括:在与该测试用例对应的日志中与所述第一方法匹配的日志内容前,写入第一分段标识;在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入第二分段标识。
本发明实施例中,所述分段标识的作用相当于是占位符,用于隔离测试任务中的每个测试用例对应的日志,以便后续能够根据第一分段标识和第二分段标识,便捷地查找到单个测试用例对应的日志在通过输出流输出的日志中的位置。
比如,某一测试任务中包含测试用例1,其中,在运行该测试用例1时依次被执行的方法包括方法a、方法b、方法c和方法d。假设测试用例1生成的日志包括日志①、日志②、日志③和日志④,且日志①用于记录方法a的执行情况,即日志①与方法a匹配,类似的,日志④与方法d匹配,那么通过在与方法a匹配的日志①前写入第一分段标识,以及,在与方法d匹配的日志④后写入第二分段标识之后,通过输出流输出的该测试用例1对应的整个日志为“#日志①#,#日志②#,#日志③#,#日志④#”。
本发明实施例中,第一分段标识可以与第二分段标识相同,也可以不同,本发明实施例对此不做限定。
基于上述对不同测试任务中测试用例的日志输出的说明和背景技术的示例,假设有三个测试任务,分别包含测试用例A、测试用例B、测试用例C,则在采用本发明实施例的方案后,相应的日志及其输出顺序为:
A对应的日志:A begin,A do 1,A do 2,A do 3,A end;
B对应的日志:B begin,B do 1,B do 2,B do 3,B end;
C对应的日志:C begin,C do 1,C do 2,C do 3,C end。
需要说明的是,利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成与测试用例对应的日志,是日志的生成过程,如果没有生成日志则无法通过输出流输出日志,因此,“利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志”这一步骤是下述“将每一个测试用例对应的日志,按照该测试用例在所述任一所分配的执行线程中执行子线程的执行顺序在所述执行线程对应的输出流中输出”的必要前提条件。
步骤13:将每一个测试用例对应的日志,按照该测试用例在所述任一所分配的执行线程中执行子线程的执行顺序在所述执行线程对应的输出流中输出。
本发明实施例中,在一种实施方式中,所述每一个测试用例对应的日志包括:所述执行线程所创建的执行子线程在完成测试用例的执行后生成的第一日志,以及,所述执行线程自身在完成测试用例的执行后生成的第二日志;则,
将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出,具体包括:
各测试用例对应的执行子线程基于JAVA的调用链追踪技术获取所述任一执行线程被分配的输出流,并按照各测试用例在所述执行线程中的执行顺序在获取到的输出流中输出所述第一日志;
所述任一执行线程按照各测试用例在所述执行线程中的执行顺序在对应的输出流中输出所述第二日志。
本发明实施例中,所述执行线程可以相当于父线程,任意一个父线程中可能创建有一个或者多个子线程,即执行子线程(Sub Child Thread/Leaf Child Thread),也可能父线程中未创建子线程。
需要说明的是,此处子线程的创建条件是根据实际测试用例执行过程需要来确定的。
本发明实施例中,执行子线程基于JAVA的调用链追踪技术所获取到的所述任一执行线程被分配的输出流,是指基于JAVA的调用链追踪技术,同一执行线程中的各执行子线程获取并复用该执行线程所分配的输出流。
需要说明的是,本发明实施例的方案是基于JAVA语言进行编译程序的。
本发明实施例中,所述基于JAVA的调用链追踪技术,执行子线程获取并复用该执行线程所分配的输出流,是指通过JAVA自带的调用链追踪功能,使得执行子线程可以获取到创建该执行子线程的执行线程所对应的输出流,并且,该执行子线程使用创建其的执行线程所对应的输出流,即执行线程及其创建的执行子线程共用一个输出流。
本发明实施例中,所述执行子线程串行执行所述测试任务中每一个测试用例。
需要说明的是,由于同一个测试任务中包含多个测试用例,且这些测试用例之间是相关联的,所以采用串行执行的方式执行同一个测试任务中的这些测试用例。另外,每一个测试任务会对应生成一个单独的测试任务的日志。当测试任务中包含一个测试用例时,对应生成该测试用例的日志;当测试任务中包含多个测试用例时,对应生成多个测试用例串行执行的日志,形成一个总的测试任务的日志。
需要说明的是,测试用例的日志中记录的内容可用于验证某个特殊目标是否达到预期效果,如与预期结果不符合,则表示相应的测试用例执行失败。
前文已经提到,分段标识的作用相当于是占位符,用于隔离测试任务中的每个测试用例对应的日志,因此,本发明实施例中,在一种实施方式中,在将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出后,本发明实施例1提供的该方法还可以包括:
根据所述第一分段标识和第二分段标识,从通过所述执行线程对应的输出流输出的日志中,识别对应于不同测试用例的日志。
进一步地,考虑到测试用例可能存在执行失败的情况,且执行失败有不同的等级——目前的诸如JUnit、TestNG、Spock等测试框架均具备识别测试用例是否执行失败,且区分其失败等级的功能,本发明实施例中,为能便捷地根据日志确定测试用例是否执行失败,可以将第二分段标识设置为能够表征测试用例的执行失败等级。
具体而言,在一种实施方式中,所述第二分段标识可以包括:用于表征该测试用例的执行失败等级的标识信息。在这样的情况下,前文所述的“在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入第二分段标识”这一步骤,具体可以包括:
若该测试用例执行失败,则确定该测试用例的执行失败等级;
根据所述执行失败等级,在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入表征所述执行失败等级的标识信息。
本发明实施例中,所述测试用例的执行失败等级比如可以包括低级、中级,和高级;比如可以包括一级、二级、三级、四级等等。
基于上述对测试用例执行失败等级的种类划分说明,假设本发明实施例中方案的应用中,将执行失败等级划分为低级、中级,和高级三类,低级的通常为形式上的错误问题,可以设定延后处理或忽略,而中级和高级的需要测试人员进行错误问题详细定位和排查,可以设定优先进行处理。
在第二分段标识能够表征测试用例的执行失败等级的情况下,本发明实施例的一种实施方式中,本发明实施例1提供的该方法还可以包括:
根据表征所述执行失败等级的标识信息,从通过输出流输出的日志中,确定执行失败的测试用例对应的日志;
将所述执行失败的测试用例对应的日志,保存至失败用例日志集中。
本发明实施例中,当通过测试用例对应的日志,确定出测试用例执行失败时,则可以将该执行失败的测试用例对应的日志,转移至用于存储执行结果为执行失败的测试用例所对应的日志的失败用例集中,以便后续根据该失败用例集中的日志,生成包含执行失败的测试用例所对应的日志的相关信息的测试报告。需要说明的是,本发明实施例中的技术方案目前已可以应用于JUnit、TestNG、Spock为测试框架的自动化测试中。其中,所述JUnit、TestNG、Spock为Java语言的单元测试框架。
采用本发明实施例中提供的方案,首先,按照不同执行线程分配不同输出流的分配方式,为用于执行测试任务的执行线程分配对应的输出流;然后,利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志;最后,将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出。相对于现有技术,本发明实施例中任一执行线程执行测试任务中每一个测试用例时所对应的日志,均会按照该测试用例在任一执行线程中的执行顺序在执行线程对应的输出流中输出。因此,对应于同一测试任务对应的日志,在通过输出流输出至目的地时会按照测试任务中每一个测试用例在执行线程中的执行顺序按序排列,不会出现现有技术中因不同测试任务因复用同一输出流,而导致日志混杂在一起的情况。因此,解决了采用现有技术中的日志输出方式导致存储的日志可辨识度较差,需要耗费较多人力资源进行辨认的问题。
实施例2
为解决采用现有技术中的日志输出方式导致存储的日志可辨识度较差,需要耗费较多人力资源进行辨认的问题,本发明实施例2提供了一种应用于自动化测试的日志输出方法。
需要说明的是,本发明实施例2的框架是基于本发明实施例1提供的方案来执行的。
请参见说明书附图2,图2为本发明实施例2所提供的一种应用于自动化测试的日志输出方法的整体流程框架示意图。
具体执行步骤如下述所示:
首先,启动主线程,并触发自动化测试用例集的执行,其中,自动化测试用例集中包含测试任务A、测试任务B以及测试任务C,测试任务A中包含三个测试用例,测试任务B包含两个测试用例,测试任务C包含一个测试用例;
然后,运行测试任务A对应的执行线程A、测试任务B对应的执行线程B以及测试任务C对应的执行线程C,其中,执行线程A中创建有三个串行执行的执行子线程,执行线程B中创建有两个串行执行的执行子线程,执行线程C中创建有一个串行执行的执行子线程;
其次,输出各个测试任务所对应的日志,其中,测试任务A日志中包含有三个测试用例的日志,测试任务B包含有两个测试用例的日志,测试任务C包含有一个测试用例的日志,每个测试用例的日志和测试用例的逻辑关系相对应;
最后,根据上述测试任务的日志校验各个测试用例是否执行失败,若执行失败,则将失败的测试用例日志形成测试报告。
本发明实施例中,所述主线程(Main Thread),是指各个自动化测试框架中用于启动、控制和管理测试用例的线程,需要输出自动化测试运行时的相关状态日志。其中,所述状态日志,包括与测试任务的执行进度相关的内容等。当所述主线程启动时,会将各执行线程的日志输出到控制台等目的地。
采用本发明实施例中提供的方案,首先,按照不同执行线程分配不同输出流的分配方式,为用于执行测试任务的执行线程分配对应的输出流;然后,利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志;最后,将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出。相对于现有技术,本发明实施例中任一执行线程执行测试任务中每一个测试用例时所对应的日志,均会按照该测试用例在任一执行线程中的执行顺序在执行线程对应的输出流中输出。因此,对应于同一测试任务对应的日志,在通过输出流输出至目的地时会按照测试任务中每一个测试用例在执行线程中的执行顺序按序排列,不会出现现有技术中因不同测试任务因复用同一输出流,而导致日志混杂在一起的情况。因此,解决了采用现有技术中的日志输出方式导致存储的日志可辨识度较差,需要耗费较多人力资源进行辨认的问题。
实施例3
为解决采用现有技术中的日志输出方式导致存储的日志可辨识度较差,需要耗费较多人力资源进行辨认的问题,本发明实施例3提供了一种应用于自动化测试的日志输出装置。
请参见说明书附图3,图3为本发明实施例3所提供的一种应用于自动化测试的日志输出装置的结构示意图。该装置30具体包括如下单元:输出流分配单元31、测试用例执行单元32、日志输出单元33。
以下具体介绍下各单元的功能:
输出流分配单元31,用于按照不同执行线程分配不同输出流的分配方式,为用于执行测试任务的执行线程分配对应的输出流;
测试用例执行单元32,用于利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志;
日志输出单元33,用于将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出。
本发明实施例中,在一种实施方式中,所述日志输出单元,具体用于:
针对所述每一个测试用例分别执行:
通过JAVA反射机制,获取该测试用例中依次执行的方法;从获取的方法中,确定在运行该测试用例时首个被执行的第一方法及最后被执行的第二方法;
根据确定的所述第一方法和第二方法,按照预设的日志生成规则,在该测试用例执行完成后生成相应的日志;
其中,预设的日志生成规则包括:在与该测试用例对应的日志中与所述第一方法匹配的日志内容前,写入第一分段标识;在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入第二分段标识。
本发明实施例中,在一种实施方式中,所述每一个测试用例对应的日志包括:所述执行线程所创建的执行子线程在完成测试用例的执行后生成的第一日志,以及,所述执行线程自身在完成测试用例的执行后生成的第二日志;则,
所述日志输出单元,具体用于:
利用各测试用例对应的执行子线程,基于JAVA的调用链追踪技术获取所述任一执行线程被分配的输出流,并按照各测试用例在所述执行线程中的执行顺序在获取到的输出流中输出所述第一日志;
利用所述任一执行线程,按照各测试用例在所述执行线程中的执行顺序在对应的输出流中输出所述第二日志。
本发明实施例中,在一种实施方式中,所述装置还可以包括:
用例日志识别单元,用于在日志输出单元将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出后,根据所述第一分段标识和第二分段标识,从通过所述执行线程对应的输出流输出的日志中,识别对应于不同测试用例的日志。
本发明实施例中,在一种实施方式中,所述第二分段标识包括:用于表征该测试用例的执行失败等级的标识信息;则,
在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入第二分段标识,具体包括:
若该测试用例执行失败,则确定该测试用例的执行失败等级;
根据所述执行失败等级,在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入表征所述执行失败等级的标识信息。
本发明实施例中,在一种实施方式中,所述装置还可以包括:
失败用例日志存储单元,用于根据表征执行失败等级的标识信息,从通过所述执行线程对应的输出流输出的日志中,确定执行失败的测试用例对应的日志;将执行失败的测试用例对应的日志,保存至失败用例日志集中。
采用本发明实施例中提供的方案,首先,按照不同执行线程分配不同输出流的分配方式,为用于执行测试任务的执行线程分配对应的输出流;然后,利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志;最后,将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出。相对于现有技术,本发明实施例中任一执行线程执行测试任务中每一个测试用例时所对应的日志,均会按照该测试用例在任一执行线程中的执行顺序在执行线程对应的输出流中输出。因此,对应于同一测试任务对应的日志,在通过输出流输出至目的地时会按照测试任务中每一个测试用例在执行线程中的执行顺序按序排列,不会出现现有技术中因不同测试任务因复用同一输出流,而导致日志混杂在一起的情况。因此,解决了采用现有技术中的日志输出方式导致存储的日志可辨识度较差,需要耗费较多人力资源进行辨认的问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (10)
1.一种应用于自动化测试的日志输出方法,其特征在于,包括:
按照不同执行线程分配不同输出流的分配方式,为用于执行测试任务的执行线程分配对应的输出流;
利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志;
将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出。
2.如权利要求1所述的方法,其特征在于,所述每一个测试用例对应的日志包括:所述执行线程所创建的执行子线程在完成测试用例的执行后生成的第一日志,以及,所述执行线程自身在完成测试用例的执行后生成的第二日志;则,
将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出,包括:
各测试用例对应的执行子线程基于JAVA的调用链追踪技术获取所述任一执行线程被分配的输出流,并按照各测试用例在所述执行线程中的执行顺序在获取到的输出流中输出所述第一日志;
所述任一执行线程按照各测试用例在所述执行线程中的执行顺序在对应的输出流中输出所述第二日志。
3.如权利要求1所述的方法,其特征在于,利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志,具体包括:
针对所述每一个测试用例分别执行:
通过JAVA反射机制,获取该测试用例中依次执行的方法;从获取的方法中,确定在运行该测试用例时首个被执行的第一方法及最后被执行的第二方法;
根据确定的所述第一方法和第二方法,按照预设的日志生成规则,在该测试用例执行完成后生成相应的日志;
其中,预设的日志生成规则包括:在与该测试用例对应的日志中与所述第一方法匹配的日志内容前,写入第一分段标识;在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入第二分段标识。
4.如权利要求3所述的方法,其特征在于,在将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出后,所述方法还包括:
根据所述第一分段标识和第二分段标识,从通过所述执行线程对应的输出流输出的日志中,识别对应于不同测试用例的日志。
5.如权利要求3或4所述的方法,其特征在于,所述第二分段标识包括:用于表征该测试用例的执行失败等级的标识信息;则,
在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入第二分段标识,具体包括:
若该测试用例执行失败,则确定该测试用例的执行失败等级;
根据所述执行失败等级,在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入表征所述执行失败等级的标识信息。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
根据表征所述执行失败等级的标识信息,从通过所述执行线程对应的输出流输出的日志中,确定执行失败的测试用例对应的日志;
将所述执行失败的测试用例对应的日志,保存至失败用例日志集中。
7.一种应用于自动化测试的日志输出装置,其特征在于,包括:
输出流分配单元,用于按照不同执行线程分配不同输出流的分配方式,为用于执行测试任务的执行线程分配对应的输出流;
测试用例执行单元,用于利用任一执行线程执行所述测试任务中每一个测试用例,并在执行完成后生成相应的日志;
日志输出单元,用于将每一个测试用例对应的日志,按照该测试用例在所述任一执行线程中的执行顺序在所述执行线程对应的输出流中输出。
8.如权利要求7所述的装置,其特征在于,所述每一个测试用例对应的日志包括:所述执行线程所创建的执行子线程在完成测试用例的执行后生成的第一日志,以及,所述执行线程自身在完成测试用例的执行后生成的第二日志;则,
所述日志输出单元,具体用于:
利用各测试用例对应的执行子线程,基于JAVA的调用链追踪技术获取所述任一执行线程被分配的输出流,并按照各测试用例在所述执行线程中的执行顺序在获取到的输出流中输出所述第一日志;
利用所述任一执行线程,按照各测试用例在所述执行线程中的执行顺序在对应的输出流中输出所述第二日志。
9.如权利要求7所述的装置,其特征在于,所述测试用例执行单元,具体用于:
针对所述每一个测试用例分别执行:
通过JAVA反射机制,获取该测试用例中依次执行的方法;从获取的方法中,确定在运行该测试用例时首个被执行的第一方法及最后被执行的第二方法;
根据确定的所述第一方法和第二方法,按照预设的日志生成规则,在该测试用例执行完成后生成相应的日志;
其中,预设的日志生成规则包括:在与该测试用例对应的日志中与所述第一方法匹配的日志内容前,写入第一分段标识;在与该测试用例对应的日志中与所述第二方法匹配的日志内容后,写入第二分段标识。
10.一种应用于自动化测试的日志输出装置,其特征在于,包括:
存储器,用于存储计算机程序指令;
处理器,用于读取所述存储器存储的计算机程序指令并在所述处理器上实现如权利要求1至6中任意一项所述的一种应用于自动化测试的日志输出方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910487711.9A CN110262967A (zh) | 2019-06-05 | 2019-06-05 | 一种应用于自动化测试的日志输出方法与装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910487711.9A CN110262967A (zh) | 2019-06-05 | 2019-06-05 | 一种应用于自动化测试的日志输出方法与装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110262967A true CN110262967A (zh) | 2019-09-20 |
Family
ID=67916946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910487711.9A Pending CN110262967A (zh) | 2019-06-05 | 2019-06-05 | 一种应用于自动化测试的日志输出方法与装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110262967A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078567A (zh) * | 2019-12-19 | 2020-04-28 | 广州品唯软件有限公司 | 自动化测试平台的报告生成方法、终端和存储介质 |
CN111240974A (zh) * | 2020-01-06 | 2020-06-05 | 支付宝实验室(新加坡)有限公司 | 日志输出方法、装置、电子设备及介质 |
CN111367867A (zh) * | 2020-03-05 | 2020-07-03 | 腾讯云计算(北京)有限责任公司 | 日志信息处理方法、装置、电子设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130227528A1 (en) * | 2012-02-29 | 2013-08-29 | International Business Machines Corporation | Paradigm for concurrency testcase generation |
CN103560829A (zh) * | 2013-10-31 | 2014-02-05 | 上海斐讯数据通信技术有限公司 | 一种uni 端口的自动化测试方法及系统 |
US20140245070A1 (en) * | 2013-02-27 | 2014-08-28 | International Business Machines Corporation | Automated execution of functional test scripts on a remote system within a unit testing framework |
CN105718369A (zh) * | 2016-01-19 | 2016-06-29 | 国家电网公司 | 计算机软件测试异常处理系统及测试方法 |
CN107092558A (zh) * | 2017-04-12 | 2017-08-25 | 东华大学 | 一种命令行界面命令集合自动化测试系统和方法 |
CN107357715A (zh) * | 2016-05-09 | 2017-11-17 | 中兴通讯股份有限公司 | 软件测试方法及系统 |
CN107908569A (zh) * | 2017-12-29 | 2018-04-13 | 广州品唯软件有限公司 | 一种wap用户界面测试方法 |
CN108804311A (zh) * | 2018-05-07 | 2018-11-13 | 微梦创科网络科技(中国)有限公司 | 一种执行测试文件的方法及装置 |
-
2019
- 2019-06-05 CN CN201910487711.9A patent/CN110262967A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130227528A1 (en) * | 2012-02-29 | 2013-08-29 | International Business Machines Corporation | Paradigm for concurrency testcase generation |
US20140245070A1 (en) * | 2013-02-27 | 2014-08-28 | International Business Machines Corporation | Automated execution of functional test scripts on a remote system within a unit testing framework |
CN103560829A (zh) * | 2013-10-31 | 2014-02-05 | 上海斐讯数据通信技术有限公司 | 一种uni 端口的自动化测试方法及系统 |
CN105718369A (zh) * | 2016-01-19 | 2016-06-29 | 国家电网公司 | 计算机软件测试异常处理系统及测试方法 |
CN107357715A (zh) * | 2016-05-09 | 2017-11-17 | 中兴通讯股份有限公司 | 软件测试方法及系统 |
CN107092558A (zh) * | 2017-04-12 | 2017-08-25 | 东华大学 | 一种命令行界面命令集合自动化测试系统和方法 |
CN107908569A (zh) * | 2017-12-29 | 2018-04-13 | 广州品唯软件有限公司 | 一种wap用户界面测试方法 |
CN108804311A (zh) * | 2018-05-07 | 2018-11-13 | 微梦创科网络科技(中国)有限公司 | 一种执行测试文件的方法及装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078567A (zh) * | 2019-12-19 | 2020-04-28 | 广州品唯软件有限公司 | 自动化测试平台的报告生成方法、终端和存储介质 |
CN111240974A (zh) * | 2020-01-06 | 2020-06-05 | 支付宝实验室(新加坡)有限公司 | 日志输出方法、装置、电子设备及介质 |
CN111240974B (zh) * | 2020-01-06 | 2024-04-26 | 先进新星技术(新加坡)控股有限公司 | 日志输出方法、装置、电子设备及介质 |
CN111367867A (zh) * | 2020-03-05 | 2020-07-03 | 腾讯云计算(北京)有限责任公司 | 日志信息处理方法、装置、电子设备及存储介质 |
CN111367867B (zh) * | 2020-03-05 | 2023-03-21 | 腾讯云计算(北京)有限责任公司 | 日志信息处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110262967A (zh) | 一种应用于自动化测试的日志输出方法与装置 | |
CN107193733A (zh) | 模拟Monkey测试的方法、装置和系统 | |
CN104298588B (zh) | 一种持续集成的实现方法及装置 | |
CN106055464B (zh) | 数据缓存集群压力测试装置及方法 | |
CN105760296B (zh) | 自动化测试控制方法、装置及终端 | |
CN109614324A (zh) | 一种测试用例生成方法和装置 | |
CN109871326A (zh) | 一种脚本录制的方法和装置 | |
CN102495789A (zh) | 一种自动化测试方法和设备 | |
CN110221983A (zh) | 测试方法、装置、计算机可读存储介质和计算机设备 | |
CN107741903A (zh) | 应用程序兼容性测试方法、装置、计算机设备和存储介质 | |
CN109542701A (zh) | 一种磁盘性能测试方法及装置 | |
CN106682036A (zh) | 一种数据交换系统及其交换方法 | |
CN111061646A (zh) | 一种基于区块链智能合约的测试管理系统及设备、介质 | |
CN107038120B (zh) | 一种软件测试方法和设备 | |
CN107908513A (zh) | 一种存储介质和存储设备性能的测试方法、装置及设备 | |
CN103823145A (zh) | 硬件自动化测试平台 | |
CN109885438A (zh) | 一种fpga可靠性测试方法、系统、终端及存储介质 | |
CN110096445A (zh) | 一种模型在环测试方法及装置 | |
CN111026080A (zh) | 控制器的硬件在环测试方法及装置 | |
CN110362469A (zh) | 基于模块化测试用例控制方法、装置、终端与存储介质 | |
CN107357721A (zh) | 测试系统的方法及装置 | |
CN114416545A (zh) | 确定测试代码覆盖率的方法、装置和电子设备 | |
CN110750445A (zh) | 一种yarn组件高可用性功能的测试方法、系统及设备 | |
CN108984421A (zh) | 一种信息提示方法及装置 | |
CN110399284A (zh) | 一种测试用例编写与执行方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |