CN102426551A - 测试数据筛选方法及装置、测试数据构造方法及装置 - Google Patents
测试数据筛选方法及装置、测试数据构造方法及装置 Download PDFInfo
- Publication number
- CN102426551A CN102426551A CN2011103467962A CN201110346796A CN102426551A CN 102426551 A CN102426551 A CN 102426551A CN 2011103467962 A CN2011103467962 A CN 2011103467962A CN 201110346796 A CN201110346796 A CN 201110346796A CN 102426551 A CN102426551 A CN 102426551A
- Authority
- CN
- China
- Prior art keywords
- data
- code coverage
- wall scroll
- test
- test data
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提出了一种测试数据筛选方法及装置、测试数据构造方法及装置。其中,测试数据筛选方法,包括以下步骤:输入测试数据,其中,所述测试数据包括多个单条输入数据;根据所述多个单条输入数据中的每个对被测系统进行测试,并获得每个所述单条输入数据对应的代码覆盖率;以及根据所述每个单条输入数据对应的代码覆盖率对所述测试数据进行筛选,并将筛选后的单条输入数据加入到优选代码覆盖率数据集合中。本发明实施例通过代码覆盖率的变化情况,判断对应的单条输入数据对代码覆盖率是否构成了贡献,如果没有贡献则可将该单条输入数据筛除,从而可以大幅度地提高测试速度,及缩短测试周期。
Description
技术领域
本发明涉及软件测试技术领域,特别地涉及一种测试数据筛选方法及装置、测试数据构造方法及装置。
背景技术
随着软件功能的日益强大,软件测试也越来越重要,要求也越来越高。搜索引擎后端测试需要在较短的时间内保证较高的运行稳定性,例如需要千万量级的数据下维持稳定的运行。
在该需求的驱动下,对搜索引擎后端采用大数据量测试是保证其运行稳定性的常用方式。然而,大数据量测试就需要较长的测试时间,而在实际应用中由于产品的研发周期限制等原因,限制了测试时间。因此由于测试时间的制约,往往需要在测试周期和数据量之间做一个平衡。此外,搜索引擎后端功能和策略复杂度较高,为特定功能或策略手工甄选测试数据困难较大,同样也给测试人员带来了很大的不便。
因此,如何在保证数据量要求的基础上,缩短测试时间,提高测试精度成为了亟待解决的问题。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一,特别是解决目前测试时间长,数据量不能满足要求的缺陷。
本发明实施例第一方面提出了一种测试数据筛选方法,包括以下步骤:输入测试数据,其中,所述测试数据包括多个单条输入数据;根据所述多个单条输入数据中的每个对被测系统进行测试,并获得每个所述单条输入数据对应的代码覆盖率;以及根据所述每个单条输入数据对应的代码覆盖率对所述测试数据进行筛选,并将筛选后的单条输入数据加入到优选代码覆盖率数据集合中。
本发明实施例第二方面还提出了一种测试数据筛选装置,包括:接收模块,用于接收输入的测试数据,其中,所述测试数据包括多个单条输入数据;测试模块,用于根据所述多个单条输入数据中的每个对被测系统进行测试;代码覆盖率获取模块,用于获得每个所述单条输入数据对应的代码覆盖率;以及筛选模块,用于根据所述每个单条输入数据对应的代码覆盖率对所述测试数据进行筛选,并将筛选后的单条输入数据加入到优选代码覆盖率数据集合中。
本发明实施例通过代码覆盖率的变化情况,判断对应的单条输入数据对代码覆盖率是否构成了贡献,如果没有贡献则可将该单条输入数据筛除,从而可以在保证代码覆盖率不变的前提下可以有效地将原来千万量级的输入数据(或称为回归数据)压缩至百量级,因此可以大幅度地提高测试速度,及缩短测试周期。另外,在本申请的实施例中,上述方法完全自动运行,无需人工干预,因此可以节约人力成本。
本发明实施例第三方面提出了一种测试数据构造方法,包括以下步骤:输入测试数据,其中,所述测试数据包括多个单条输入数据;根据所述多个单条输入数据中的每个对被测系统进行测试,并获得每个所述单条输入数据对应的代码覆盖率;根据所述每个单条输入数据对应的代码覆盖率对所述测试数据进行筛选,并将筛选后的单条输入数据加入到优选代码覆盖率数据集合中;根据所述优选代码覆盖率数据集合中的每个单条输入数据再次对所述被测系统进行测试,并获得每个所述单条输入数据对应的代码覆盖率数据;根据所述代码覆盖率数据生成分支条件,并建立单条输入数据与分支条件之间的对应关系;以及根据所述对应关系构造新的测试数据。
本发明实施例第四方面还提出了一种测试数据构造装置,包括:接收模块,用于接收输入的测试数据,其中,所述测试数据包括多个单条输入数据;代码覆盖率获取模块,用于获得每个所述单条输入数据对应的代码覆盖率;筛选模块,用于根据所述每个单条输入数据对应的代码覆盖率对所述测试数据进行筛选,并将筛选后的单条输入数据加入到优选代码覆盖率数据集合中;测试模块,用于根据所述多个单条输入数据中的每个对被测系统进行测试,以及根据所述优选代码覆盖率数据集合中的每个单条输入数据再次对所述被测系统进行测试;建立模块,用于根据所述代码覆盖率数据生成分支条件,并建立单条输入数据与分支条件之间的对应关系;以及构造模块,用于根据所述对应关系构造新的测试数据。
通过本发明实施例建立的单条输入数据与分支条件之间的对应关系,这样测试者就可以根据该对应关系获知被测系统中具体哪个源文件、哪个函数或者哪行代码被哪个或哪些单条输入数据所覆盖,从而可以精确地提取满足对应代码行覆盖要求的单条输入数据,进一步地辅助进行下一步新功能测试数据构造。因此本发明实施例提高了新功能数据构造的针对性,降低了数据构造的成本。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例测试数据筛选方法流程图;
图2为本发明实施例根据代码覆盖率对测试数据进行筛选的流程图;
图3为本发明实施例的测试数据筛选装置结构图;
图4为本发明实施例测试数据构造方法流程图;
图5为本发明实施例提取的分支条件信息示意图;
图6为本发明实施例用于记录覆盖情况的数据结构具体定义格式示意图;
图7为本发明实施例Web前端显示的代码示意图;以及
图8为本发明实施例测试数据构造装置结构图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
参照下面的描述和附图,将清楚本发明的实施例的这些和其他方面。在这些描述和附图中,具体公开了本发明的实施例中的一些特定实施方式,来表示实施本发明的实施例的原理的一些方式,但是应当理解,本发明的实施例的范围不受此限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
如上所述,目前为了保证一定的测试代码覆盖率往往需要大量的测试数据,从而导致测试时间过长,无法满足产品的设计周期。然而在这些测试数据之中,一些测试数据起到的作用是一样的,因此如果能将这些作用相同的测试数据进行缩减,即将重复的测试数据删除,则就能够大幅度地减小所需要的测试数据。在本发明的实施例中,可通过代码覆盖率来检测哪些测试数据是重复的。例如,如果两个单条输入数据对应的代码覆盖率相同,则说明这两个单条输入数据起到的作用是相同的,因此在本发明的实施例中,可将其中的一个删除。通过这样的对比,可以极大地减小所需要的测试数据。
如图1所示,为本发明实施例测试数据筛选方法流程图。该方法包括以下步骤:
步骤S101,输入测试数据,其中,测试数据包括多个单条输入数据。单条输入数据的数量根据被测系统的规模进行设置。在本发明的实施例中,被测系统可包括多个子模块,其中,每个子模块都具有对应的多个单条输入数据。
步骤S102,根据多个单条输入数据中的每个对被测系统进行测试,并获得每个单条输入数据对应的代码覆盖率。在本发明的实施例中,可通过BullseyeCoverage软件中的cov_eventCount库函数生成对应的代码覆盖率数据。当然在本发明的实施例中,还可使用其他软件获得代码覆盖率数据。
在本发明的实施例中,如针对多线程软件,则在程序中找到主线程流程代码中调用的核心线程函数(如pthread_create第三个参数即为线程运行函数指针,找到该函数的实现即可),前后调用cov_eventCount函数,并比较两次代码覆盖率异同即可。
步骤S103,根据每个单条输入数据对应的代码覆盖率对测试数据进行筛选,并生成优选代码覆盖率数据集合,以及将筛选后的单条输入数据加入到优选代码覆盖率数据集合中。具体地,可对代码覆盖率相同的多个单条输入数据进行筛选,筛除一部分的单条输入数据。由于保留的单条输入数据依然能够保持一定的代码覆盖率,因此筛除部分的单条输入数据也不会对代码覆盖率构成影响,而可以大幅度地降低测试数据的数量。
在本发明的实施例中,可首先判断每个单条数据中的一个对应的代码覆盖率是否与其他单条数据对应的代码覆盖率相同。如不相同,则将对应的单条数据加入到优选代码覆盖率数据集合。
在本发明的一个实施例中,可以仅对代码覆盖率进行比较,如图2所示,为本发明实施例根据代码覆盖率对测试数据进行筛选的流程图,且在该实施例中,以BullseyeCoverage软件为例进行描述,包括以下步骤:
步骤S201,输入一个单条输入数据d1,并通过BullseyeCoverage软件的cov_eventCount函数获得该单条输入数据所对应的代码覆盖率n1。
步骤S202,输入另一个单条输入数据d2,并通过BullseyeCoverage软件的cov_eventCount函数获得该单条输入数据所对应的代码覆盖率n2。
步骤S203,判断代码覆盖率n1和代码覆盖率n2是否相等。
步骤S204,如果相等,则将单条输入数据d2加入到优选代码覆盖率数据集合,并存储到硬盘文件之中。
当然在本发明的实施例中,还可进一步地通过BullseyeCoverage软件获得单条输入数据所对应的代码覆盖率文件。其中,该代码覆盖率文件包括源文件级别筛选信息、函数级别筛选信息和代码行级别筛选信息中的一种或多种。进一步地,在本发明的一个实施例中,源文件级别筛选信息包括覆盖源文件信息,函数级别筛选信息包括覆盖源文件函数信息,代码行级别筛选信息包括覆盖代码行数信息和/或覆盖代码行的分支条件信息。这样,在本发明的另一个实施例中,为了进一步提高筛选的精度,在对代码覆盖率进行比较之后,如果两个代码覆盖率相同则还需进一步比较代码覆盖率文件,如果代码覆盖率文件不同,则还是将该单条输入数据加入到优选代码覆盖率数据集合中。
其中,代码覆盖率文件的对比可以是源文件级的对比,也可以是函数级别的对比,甚至还可以是代码行级别的对比。例如,如果源文件不同,则说明虽然代码覆盖率相同,但是这两个单条输入数据走的还是不同的源文件,因此不能将其筛除。同样地,如果源文件和代码覆盖率相同,但函数不同,或者代码行不同,则也不能将其筛除,从而提高本发明的精度。
如图3所示,为本发明实施例的测试数据筛选装置结构图。该测试数据筛选装置包括接收模块110、测试模块120、代码覆盖率获取模块130和筛选模块140。其中,接收模块110用于接收输入的测试数据,其中,所述测试数据包括多个单条输入数据。在本发明的实施例中,被测系统可包括多个子模块,其中,每个子模块都具有对应的多个单条输入数据。测试模块120用于根据多个单条输入数据中的每个对被测系统进行测试。具体地,还对被测系统下的每个子模块进行测试。代码覆盖率获取模块130用于获得每个所述单条输入数据对应的代码覆盖率。在本发明的实施例中,可通过BullseyeCoverage软件中的cov_eventCount库函数生成对应的代码覆盖率数据。当然在本发明的实施例中,还可使用其他软件获得代码覆盖率数据。在本发明的实施例中,如针对多线程软件,则在程序中找到主线程流程代码中调用的核心线程函数(如pthread_create第三个参数即为线程运行函数指针,找到该函数的实现即可),前后调用cov_eventCount函数,并比较两次代码覆盖率异同即可。
在本发明的实施例中,筛选模块140用于根据每个单条输入数据对应的代码覆盖率对测试数据进行筛选,以及将筛选后的单条输入数据加入到优选代码覆盖率数据集合中。
在本发明的一个实施例中,筛选模块140进一步包括判断子模块和控制子模块。判断子模块用于判断每个单条数据中的一个对应的代码覆盖率是否与其他单条数据对应的代码覆盖率相同。控制子模块用于在判断子模块判断不相同时,将对应的单条数据加入到优选代码覆盖率数据集合。
本发明实施例通过代码覆盖率的变化情况,判断对应的单条输入数据对代码覆盖率是否构成了贡献,如果没有贡献则可将该单条输入数据筛除,从而可以在保证代码覆盖率不变的前提下可以有效地将原来千万量级的输入数据(或称为回归数据)压缩至百量级,因此可以大幅度地提高测试速度,及缩短测试周期。另外,在本申请的实施例中,上述方法完全自动运行,无需人工干预,因此可以节约人力成本。
如图4所示,为本发明实施例测试数据构造方法流程图。该方法包括以下步骤:
步骤S401,输入测试数据,其中,测试数据包括多个单条输入数据。单条输入数据的数量根据被测系统的规模进行设置。在本发明的实施例中,被测系统可包括多个子模块,其中,每个子模块都具有对应的多个单条输入数据。
步骤S402,根据多个单条输入数据中的每个对被测系统进行测试,并获得每个单条输入数据对应的代码覆盖率。在本发明的实施例中,可通过BullseyeCoverage软件中的cov_eventCount库函数生成对应的代码覆盖率数据。当然在本发明的实施例中,还可使用其他软件获得代码覆盖率数据。
在本发明的实施例中,如针对多线程软件,则在程序中找到主线程流程代码中调用的核心线程函数(如pthread_create第三个参数即为线程运行函数指针,找到该函数的实现即可),前后调用cov_eventCount函数,并比较两次代码覆盖率异同即可。
步骤S403,根据每个单条输入数据对应的代码覆盖率对测试数据进行筛选,以及将筛选后的单条输入数据加入到优选代码覆盖率数据集合中。具体地,可对代码覆盖率相同的多个单条输入数据进行筛选,筛除一部分的单条输入数据。由于保留的单条输入数据依然能够保持一定的代码覆盖率,因此筛除部分的单条输入数据也不会对代码覆盖率构成影响,而可以大幅度地降低测试数据的数量。
步骤S404,根据优选代码覆盖率数据集合中的每个单条输入数据再次对被测系统进行测试,并获得每个单条输入数据对应的代码覆盖率数据。同样地,在该实施例中,可通过BullseyeCoverage软件中的cov_eventCount库函数生成对应的代码覆盖率数据。当然在本发明的实施例中,还可使用其他软件获得代码覆盖率数据。
步骤S405,对覆盖率数据进行格式化,以及根据代码覆盖率数据生成分支条件,并建立单条输入数据与分支条件之间的对应关系。通过对覆盖率数据进行格式化,可以生成二进制序列表示单个数据对哪个源码文件(cpp),哪个函数,哪一行的哪些条件分支进行了覆盖。其中,该代码覆盖率文件包括源文件级别筛选信息、函数级别筛选信息和代码行级别筛选信息中的一种或多种。进一步地,在本发明的一个实施例中,源文件级别筛选信息包括覆盖源文件信息,函数级别筛选信息包括覆盖源文件函数信息,代码行级别筛选信息包括覆盖代码行数信息和/或覆盖代码行的分支条件信息。
具体地,在本发明的实施例中,如图5所示,为本发明实施例提取的分支条件信息示意图。根据提取出的覆盖率信息,进行格式化处理后,支持如下三个级别的信息筛选:
1、源文件级别筛选:输入数据带来源文件(cpp)覆盖率信息变化,保留相关输入数据。
2、函数级别筛选:输入数据带来函数(fun)级覆盖率信息变化,保留相关输入数据。
3、代码行条件覆盖筛选:输入数据触发相关分支条件(如if A and B,则保留A为ture,false,B为true,false的全排列组合),相关排列组合均保留。
将单条输入数据与分支条件之间的对应关系,以及覆盖率信息存储至数据库中。如图6所示,为本发明实施例用于记录覆盖情况的数据结构具体定义格式示意图。其中,0-16位为预留位,17-24位为源文件(cpp)存储位,25-32为函数(fun)存储位,33-48为绝对行号存储位,后续存储相对行号、条件序号及覆盖情况等信息。
步骤S406,根据对应关系构造新的测试数据。在本发明的实施例中,在将上述数据结构存储到数据库中之后,还将其显示在Web前端。如图7所示,为本发明实施例Web前端显示的代码示意图。在此所述的构造可根据用户的选择行为对输入数据进行构造,例如用户可根据代码左侧的选择项进行选择,如果用户选择了该源文件、函数或行代码,则数据库就会自动地将使用到该源文件、函数或行代码对应的一个或多个单条输入数据显示给用户,这样用户就知道哪个或哪些单条输入数据对该源文件、函数或行代码的测试起到作用。因此在用户增加新功能的时候,就可以根据上述方法获知哪个或哪些单条输入数据对该新功能对应的行代码起到作用,这样将起到作用的单条输入数据进行重构,这些单条输入数据对于新功能来说都是有用的,没用的单条输入数据就被筛除,因此可以极大地降低输入数据的数据量。
在本发明的实施例中,还通过数据扰动的方法对所述优选代码覆盖率数据集合进行扰动,从而能够较好地将一些输入数据对模块来说为长尾分布的情况,转换成类似均匀分布的情况,提高稳定性测试的覆盖面。
如图8所示,为本发明实施例测试数据构造装置结构图。该测试数据构造装置包括接收模块210、测试模块220、代码覆盖率获取模块230、筛选模块240、建立模块250和构造模块260。其中,接收模块210用于接收输入的测试数据,其中,测试数据包括多个单条输入数据。测试模块220用于根据多个单条输入数据中的每个对被测系统进行测试,以及根据优选代码覆盖率数据集合中的每个单条输入数据再次对被测系统进行测试。代码覆盖率获取模块230用于获得每个所述单条输入数据对应的代码覆盖率。筛选模块240用于根据每个单条输入数据对应的代码覆盖率对所述测试数据进行筛选,以及将筛选后的单条输入数据加入到优选代码覆盖率数据集合中。建立模块250用于根据代码覆盖率数据生成分支条件,并建立单条输入数据与分支条件之间的对应关系。构造模块260用于根据对应关系构造新的测试数据。
在本发明的一个实施例中,筛选模块240进一步包括判断子模块和控制子模块。其中,判断子模块用于判断所述每个单条数据中的一个对应的代码覆盖率是否与其他单条数据对应的代码覆盖率相同。控制子模块,用于在所述判断子模块判断不相同时,将对应的单条数据加入到优选代码覆盖率数据集合。
在本发明的一个实施例中,代码覆盖率文件包括源文件级别筛选信息、函数级别筛选信息和代码行级别筛选信息中的一种或多种。具体地,源文件级别筛选信息包括覆盖源文件信息,函数级别筛选信息包括覆盖源文件函数信息,代码行级别筛选信息包括覆盖代码行数信息和/或覆盖代码行的分支条件信息。
在本发明的一个实施例中,该测试数据构造装置还包括扰动模块270。扰动模块270用于通过数据扰动的方法对所述优选代码覆盖率数据集合进行扰动。
通过本发明实施例建立的单条输入数据与分支条件之间的对应关系,这样测试者就可以根据该对应关系获知被测系统中具体哪个源文件、哪个函数或者哪行代码被哪个或哪些单条输入数据所覆盖,从而可以精确地提取满足对应代码行覆盖要求的单条输入数据,进一步地辅助进行下一步新功能测试数据构造。因此本发明实施例提高了新功能数据构造的针对性,降低了数据构造的成本。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (17)
1.一种测试数据筛选方法,其特征在于,包括以下步骤:
输入测试数据,其中,所述测试数据包括多个单条输入数据;
根据所述多个单条输入数据中的每个对被测系统进行测试,并获得每个所述单条输入数据对应的代码覆盖率;以及
根据所述每个单条输入数据对应的代码覆盖率对所述测试数据进行筛选,并将筛选后的单条输入数据加入到优选代码覆盖率数据集合中。
2.如权利要求1所述的测试数据筛选方法,其特征在于,所述根据每个单条输入数据对应的代码覆盖率对所述测试数据进行筛选进一步包括:
如所述每个单条数据中的一个对应的代码覆盖率与其他单条数据对应的代码覆盖率不相同,则将对应的单条数据加入到所述优选代码覆盖率数据集合中。
3.如权利要求1或2所述的测试数据筛选方法,其特征在于,通过BullseyeCoverage软件中的cov_eventCount库函数生成对应的代码覆盖率数据。
4.一种测试数据筛选装置,其特征在于,包括:
接收模块,用于接收输入的测试数据,其中,所述测试数据包括多个单条输入数据;
测试模块,用于根据所述多个单条输入数据中的每个对被测系统进行测试;
代码覆盖率获取模块,用于获得每个所述单条输入数据对应的代码覆盖率;以及
筛选模块,用于根据所述每个单条输入数据对应的代码覆盖率对所述测试数据进行筛选,并将筛选后的单条输入数据加入到优选代码覆盖率数据集合中。
5.如权利要求4所述的测试数据筛选装置,其特征在于,所述筛选模块进一步包括:
判断子模块,用于判断所述每个单条数据中的一个对应的代码覆盖率是否与其他单条数据对应的代码覆盖率相同;
控制子模块,用于在所述判断子模块判断不相同时,将对应的单条数据加入到优选代码覆盖率数据集合。
6.一种测试数据构造方法,其特征在于,包括以下步骤:
输入测试数据,其中,所述测试数据包括多个单条输入数据;
根据所述多个单条输入数据中的每个对被测系统进行测试,并获得每个所述单条输入数据对应的代码覆盖率;
根据所述每个单条输入数据对应的代码覆盖率对所述测试数据进行筛选,并将筛选后的单条输入数据加入到优选代码覆盖率数据集合中;
根据所述优选代码覆盖率数据集合中的每个单条输入数据再次对所述被测系统进行测试,并获得每个所述单条输入数据对应的代码覆盖率数据;
根据所述代码覆盖率数据生成分支条件,并建立单条输入数据与分支条件之间的对应关系;以及
根据所述对应关系构造新的测试数据。
7.如权利要求6所述的测试数据构造方法,其特征在于,所述根据每个单条输入数据对应的代码覆盖率对所述测试数据进行筛选进一步包括:
如所述每个单条数据中的一个对应的代码覆盖率与其他单条数据对应的代码覆盖率不相同,则将对应的单条数据加入到优选代码覆盖率数据集合。
8.如权利要求6或7所述的测试数据构造方法,其特征在于,所述代码覆盖率文件包括源文件级别筛选信息、函数级别筛选信息和代码行级别筛选信息中的一种或多种。
9.如权利要求8所述的测试数据构造方法,其特征在于,所述源文件级别筛选信息包括覆盖源文件信息,所述函数级别筛选信息包括覆盖源文件函数信息,所述代码行级别筛选信息包括覆盖代码行数信息和/或覆盖代码行的分支条件信息。
10.如权利要求6-9所述的测试数据构造方法,其特征在于,还包括:
通过数据扰动的方法对所述优选代码覆盖率数据集合进行扰动。
11.如权利要求6-10任一项所述的测试数据构造方法,其特征在于,通过BullseyeCoverage软件中的cov_eventCount库函数生成对应的代码覆盖率数据。
12.一种测试数据构造装置,其特征在于,包括:
接收模块,用于接收输入的测试数据,其中,所述测试数据包括多个单条输入数据;
代码覆盖率获取模块,用于获得每个所述单条输入数据对应的代码覆盖率;
筛选模块,用于根据所述每个单条输入数据对应的代码覆盖率对所述测试数据进行筛选,并将筛选后的单条输入数据加入到优选代码覆盖率数据集合;
测试模块,用于根据所述多个单条输入数据中的每个对被测系统进行测试,以及根据所述优选代码覆盖率数据集合中的每个单条输入数据再次对所述被测系统进行测试;
建立模块,用于根据所述代码覆盖率数据生成分支条件,并建立单条输入数据与分支条件之间的对应关系;以及
构造模块,用于根据所述对应关系构造新的测试数据。
13.如权利要求12所述的测试数据构造装置,其特征在于,所述筛选模块进一步包括:
判断子模块,用于判断所述每个单条数据中的一个对应的代码覆盖率是否与其他单条数据对应的代码覆盖率相同;
控制子模块,用于在所述判断子模块判断不相同时,将对应的单条数据加入到优选代码覆盖率数据集合。
14.如权利要求12所述的测试数据构造装置,其特征在于,所述代码覆盖率文件包括源文件级别筛选信息、函数级别筛选信息和代码行级别筛选信息中的一种或多种。
15.如权利要求14所述的测试数据构造装置,其特征在于,所述源文件级别筛选信息包括覆盖源文件信息,所述函数级别筛选信息包括覆盖源文件函数信息,所述代码行级别筛选信息包括覆盖代码行数信息和/或覆盖代码行的分支条件信息。
16.如权利要求12所述的测试数据构造装置,其特征在于,还包括:
扰动模块,用于通过数据扰动的方法对所述优选代码覆盖率数据集合进行扰动。
17.如权利要求12所述的测试数据构造方法,其特征在于,所述代码覆盖率获取模块通过BullseyeCoverage软件中的cov_eventCount库函数生成对应的代码覆盖率数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103467962A CN102426551A (zh) | 2011-11-04 | 2011-11-04 | 测试数据筛选方法及装置、测试数据构造方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103467962A CN102426551A (zh) | 2011-11-04 | 2011-11-04 | 测试数据筛选方法及装置、测试数据构造方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102426551A true CN102426551A (zh) | 2012-04-25 |
Family
ID=45960539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103467962A Pending CN102426551A (zh) | 2011-11-04 | 2011-11-04 | 测试数据筛选方法及装置、测试数据构造方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102426551A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103218297A (zh) * | 2013-05-15 | 2013-07-24 | 百度在线网络技术(北京)有限公司 | 测试数据的筛选方法及装置 |
CN103684895A (zh) * | 2012-09-10 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种产生克隆环境的方法和装置 |
CN103780449A (zh) * | 2012-10-23 | 2014-05-07 | 百度在线网络技术(北京)有限公司 | 一种基于cache存储的流量复用方法和装置 |
CN104142887A (zh) * | 2013-12-12 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 一种数据挖掘方法和装置 |
US9454467B2 (en) | 2013-12-12 | 2016-09-27 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for mining test coverage data |
CN105224446B (zh) * | 2014-05-26 | 2018-06-19 | 腾讯科技(深圳)有限公司 | 一种测试用例筛选方法及装置、服务器 |
CN109522565A (zh) * | 2017-09-18 | 2019-03-26 | 深圳市中兴微电子技术有限公司 | 一种验证方法、装置及计算机可读存储介质 |
CN109614328A (zh) * | 2018-12-06 | 2019-04-12 | 北京字节跳动网络技术有限公司 | 用于处理测试数据的方法和装置 |
CN110096428A (zh) * | 2019-03-18 | 2019-08-06 | 平安普惠企业管理有限公司 | 智能测试脚本运行前数据筛选的方法及装置、电子设备 |
CN110196801A (zh) * | 2018-02-24 | 2019-09-03 | 武汉斗鱼网络科技有限公司 | 一种基于代码覆盖率的测试方法及装置 |
CN111078560A (zh) * | 2019-12-18 | 2020-04-28 | 北京嘀嘀无限科技发展有限公司 | 基于流量剪枝的测试方法、装置、电子设备及存储介质 |
CN113505283A (zh) * | 2021-07-09 | 2021-10-15 | 中国人民解放军火箭军工程大学 | 一种测试数据的筛选方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6536036B1 (en) * | 1998-08-20 | 2003-03-18 | International Business Machines Corporation | Method and apparatus for managing code test coverage data |
US20030212924A1 (en) * | 2002-05-08 | 2003-11-13 | Sun Microsystems, Inc. | Software development test case analyzer and optimizer |
US20050120274A1 (en) * | 2003-11-14 | 2005-06-02 | Haghighat Mohammad R. | Methods and apparatus to minimize debugging and testing time of applications |
CN1916871A (zh) * | 2005-08-15 | 2007-02-21 | 英业达股份有限公司 | 嵌入式装置的检测系统及方法 |
US20080148247A1 (en) * | 2006-12-14 | 2008-06-19 | Glenn Norman Galler | Software testing optimization apparatus and method |
US20100058295A1 (en) * | 2008-09-02 | 2010-03-04 | International Business Machines Corporation | Dynamic Test Coverage |
-
2011
- 2011-11-04 CN CN2011103467962A patent/CN102426551A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6536036B1 (en) * | 1998-08-20 | 2003-03-18 | International Business Machines Corporation | Method and apparatus for managing code test coverage data |
US20030212924A1 (en) * | 2002-05-08 | 2003-11-13 | Sun Microsystems, Inc. | Software development test case analyzer and optimizer |
US20050120274A1 (en) * | 2003-11-14 | 2005-06-02 | Haghighat Mohammad R. | Methods and apparatus to minimize debugging and testing time of applications |
CN1916871A (zh) * | 2005-08-15 | 2007-02-21 | 英业达股份有限公司 | 嵌入式装置的检测系统及方法 |
US20080148247A1 (en) * | 2006-12-14 | 2008-06-19 | Glenn Norman Galler | Software testing optimization apparatus and method |
US20100058295A1 (en) * | 2008-09-02 | 2010-03-04 | International Business Machines Corporation | Dynamic Test Coverage |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103684895B (zh) * | 2012-09-10 | 2018-08-10 | 百度在线网络技术(北京)有限公司 | 一种产生克隆环境的方法和装置 |
CN103684895A (zh) * | 2012-09-10 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种产生克隆环境的方法和装置 |
CN103780449A (zh) * | 2012-10-23 | 2014-05-07 | 百度在线网络技术(北京)有限公司 | 一种基于cache存储的流量复用方法和装置 |
CN103780449B (zh) * | 2012-10-23 | 2018-05-01 | 百度在线网络技术(北京)有限公司 | 一种基于cache存储的流量复用方法和装置 |
CN103218297B (zh) * | 2013-05-15 | 2018-05-04 | 百度在线网络技术(北京)有限公司 | 测试数据的筛选方法及装置 |
CN103218297A (zh) * | 2013-05-15 | 2013-07-24 | 百度在线网络技术(北京)有限公司 | 测试数据的筛选方法及装置 |
CN104142887A (zh) * | 2013-12-12 | 2014-11-12 | 腾讯科技(深圳)有限公司 | 一种数据挖掘方法和装置 |
US9454467B2 (en) | 2013-12-12 | 2016-09-27 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for mining test coverage data |
CN104142887B (zh) * | 2013-12-12 | 2016-12-14 | 腾讯科技(深圳)有限公司 | 一种数据挖掘方法和装置 |
CN105224446B (zh) * | 2014-05-26 | 2018-06-19 | 腾讯科技(深圳)有限公司 | 一种测试用例筛选方法及装置、服务器 |
CN109522565A (zh) * | 2017-09-18 | 2019-03-26 | 深圳市中兴微电子技术有限公司 | 一种验证方法、装置及计算机可读存储介质 |
CN110196801A (zh) * | 2018-02-24 | 2019-09-03 | 武汉斗鱼网络科技有限公司 | 一种基于代码覆盖率的测试方法及装置 |
CN110196801B (zh) * | 2018-02-24 | 2022-11-11 | 武汉斗鱼网络科技有限公司 | 一种基于代码覆盖率的测试方法及装置 |
CN109614328A (zh) * | 2018-12-06 | 2019-04-12 | 北京字节跳动网络技术有限公司 | 用于处理测试数据的方法和装置 |
CN109614328B (zh) * | 2018-12-06 | 2022-03-04 | 北京字节跳动网络技术有限公司 | 用于处理测试数据的方法和装置 |
CN110096428A (zh) * | 2019-03-18 | 2019-08-06 | 平安普惠企业管理有限公司 | 智能测试脚本运行前数据筛选的方法及装置、电子设备 |
CN111078560A (zh) * | 2019-12-18 | 2020-04-28 | 北京嘀嘀无限科技发展有限公司 | 基于流量剪枝的测试方法、装置、电子设备及存储介质 |
CN113505283A (zh) * | 2021-07-09 | 2021-10-15 | 中国人民解放军火箭军工程大学 | 一种测试数据的筛选方法及系统 |
CN113505283B (zh) * | 2021-07-09 | 2024-02-27 | 中国人民解放军火箭军工程大学 | 一种测试数据的筛选方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102426551A (zh) | 测试数据筛选方法及装置、测试数据构造方法及装置 | |
KR101149270B1 (ko) | 집적 회로 디바이스를 테스트하는 시스템 및 방법 | |
CN103620431B (zh) | 用于使用高速输入/输出接口进行测试的集成电路 | |
CN101212759B (zh) | 一种手机软件集成测试方法 | |
US20050278595A1 (en) | Built-in self test circuit and test method for storage device | |
CN104461846B (zh) | 检测应用程序耗电量的方法和装置 | |
CN104637544A (zh) | 存储器的测试电路及测试方法 | |
Huang et al. | Intrinsic alignments in redMaPPer clusters–I. Central galaxy alignments and angular segregation of satellites | |
CN103150249A (zh) | 一种自动化测试的方法和系统 | |
CN106933730A (zh) | 基于测试框架系统的测试方法、装置和测试框架系统 | |
CN105187608B (zh) | 一种获取移动终端上应用程序耗电量的方法和装置 | |
CN112035376A (zh) | 一种生成覆盖率报告的方法、装置、设备及存储介质 | |
CN105025141A (zh) | 终端用电量测试方法及其装置 | |
CN105912460A (zh) | 一种基于qtp的软件测试方法及系统 | |
CN104777416A (zh) | 用于电路板的测试方法和测试仪 | |
CN105516082A (zh) | 一种游戏客户端与服务器的连接方法以及游戏客户端 | |
CN106407102A (zh) | 应用程序的模糊测试方法、装置及系统 | |
CN101030160A (zh) | 统一串行接口测试命令的测试装置及其测试方法 | |
CN105162664A (zh) | 一种基于仪表中间层开发的自动化平台测试方法及系统 | |
CN104094357A (zh) | 执行并行存储测试的装置和方法 | |
CN108563538A (zh) | 板卡测试方法、系统、可读存储介质及计算机设备 | |
US20120304032A1 (en) | Test system | |
CN104216823A (zh) | 一种自动化测试方法及主控装置 | |
US20130046498A1 (en) | Multi-testing procedure management method and system | |
CN106168924A (zh) | 一种软件测试的方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120425 |