CN114328171A - 测试用例库的生成方法、装置、设备及存储介质 - Google Patents
测试用例库的生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114328171A CN114328171A CN202011073783.8A CN202011073783A CN114328171A CN 114328171 A CN114328171 A CN 114328171A CN 202011073783 A CN202011073783 A CN 202011073783A CN 114328171 A CN114328171 A CN 114328171A
- Authority
- CN
- China
- Prior art keywords
- test
- program
- flow
- triggered
- version
- 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
技术领域
本申请实施例涉及计算机和程序测试技术领域,特别涉及一种测试用例库的生成方法、装置、设备及存储介质。
背景技术
在程序开发和维护的过程中,经常需要对程序进行测试。
在相关技术中,采用录制流量在测试环境中执行测试程序并进行流量回放,再对流量回放得到的测试流量进行分析,从而得到测试结果,其中,通过流量回放获得的数量较多的测试流量称为高频流量,数量较少的测试流量称为低频流量。
在上述相关技术中,由于直接对流量回放得到的测试流量进行分析,因而需要分析的测试流量中,高频流量过多且低频流量过少,以至于无法获取到足够数量的低频流量对测试程序进行测试,从而导致程序测试不够准确。
发明内容
本申请实施例提供了一种测试用例库的生成方法、装置、设备及存储介质,能够提升程序测试的准确性。所述技术方案如下:
根据本申请实施例的一个方面,提供了一种测试用例库的生成方法,所述方法包括:
获取第一版本的测试程序的多个录制流量,以及第二版本的测试程序的打桩后程序,所述打桩后程序用于获取流量回放过程中触发的程序模块和触发顺序;
在测试环境中执行所述打桩后程序并回放所述录制流量,得到所述录制流量对应的测试流量以及所述测试流量触发的程序模块和触发顺序;
根据所述测试流量触发的程序模块和触发顺序,生成测试用例库,所述测试用例库用于对所述测试程序进行测试。
根据本申请实施例的一个方面,提供了一种测试用例库的生成装置,所述装置包括:
第一获取模块,用于获取第一版本的测试程序的多个录制流量,以及第二版本的测试程序的打桩后程序,所述打桩后程序用于获取流量回放过程中触发的程序模块和触发顺序;
流量回放模块,用于在测试环境中执行所述打桩后程序并回放所述录制流量,得到所述录制流量对应的测试流量以及所述测试流量触发的程序模块和触发顺序;
用例库生成模块,用于根据所述测试流量触发的程序模块和触发顺序,生成测试用例库,所述测试用例库用于对所述测试程序进行测试。
在一些实施例中,所述打桩后程序包括多个所述程序模块以及各个所述程序模块对应的桩点;所述流量回放模块,用于:
所述在测试环境中执行所述打桩后程序并回放所述录制流量,得到所述录制流量对应的测试流量以及所述测试流量触发的程序模块和触发顺序,包括:
根据所述测试流量触发的程序模块和触发顺序,生成所述测试流量对应的执行桩点序列;
其中,所述执行桩点序列包括多个按序排列的桩点,所述执行桩点序列用于指示所述测试流量触发的程序模块和触发顺序。
在一些实施例中,所述用例库生成模块,用于:
将所述测试流量按照对应的执行桩点序列进行分类,得到至少一类测试流量,同一类的测试流量对应的执行桩点序列相同;
对于同一类的测试流量,若所述测试流量的数量超过门限值数量,则将超过所述门限值数量的测试流量舍去,并保留所述门限值数量的测试流量在所述测试用例库中;
对于同一类的测试流量,若所述测试流量的数量小于所述门限值数量,则将小于所述门限值数量的测试流量保留在所述测试用例库中。
在一些实施例中,所述装置还包括:序列确定模块和序列比对模块;
所述序列确定模块,用于根据所述打桩后程序,确定所述打桩后程序中待触发的执行桩点序列;
所述序列比对模块,用于比对已触发的执行桩点序列和所述待触发的执行桩点序列,确定所述待触发的执行桩点序列中,仍未被触发的执行桩点序列;
所述流量回放模块,还用于在所述测试环境中继续执行所述打桩后程序并回放所述录制流量,直到所述待触发的执行桩点序列均被触发过至少n次,所述n为正整数。
在一些实施例中,所述第一获取模块包括:桩点确定子模块和代码***子模块;
所述桩点确定子模块,用于确定所述第二版本的测试程序中的桩点;
所述代码***子模块,用于在所述桩点***监测代码得到所述打桩后程序,所述监测代码用于监测所述测试流量触发的程序模块和触发顺序。
在一些实施例中,所述桩点确定子模块,用于:
扫描所述第二版本的测试程序的源代码,获取所述第二版本的测试程序的源代码的逻辑结构;
基于所述第二版本的测试程序的源代码的逻辑结构,确定所述桩点的标识和所述桩点的顺序。
在一些实施例中,所述代码***子模块,用于:
在所述第二版本的测试程序的源代码的桩点***所述监测代码,得到打桩后的源代码;
对所述打桩后的源代码进行编译,得到所述打桩后程序。
在一些实施例中,所述第二版本的测试程序与所述第一版本的测试程序为所述测试程序的同一版本;或,所述第二版本的测试程序是对所述第一版本的测试程序进行修改后得到的程序。
根据本申请实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现上述测试用例库的生成方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现上述测试用例库的生成方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行上述测试用例库的生成方法。
本申请实施例提供的技术方案可以包括如下有益效果:
通过在测试环境中执行打桩后程序并回放录制流量,并根据得到的测试流量生成测试用例库,从而将流量回放技术和打桩技术结合,可以对测试流量进行筛选,从而可以舍去测试流量中多余的高频流量,并通过多次流量回放累积低频流量,从而提升程序测试的准确性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的测试用例库的生成方法的流程图;
图2是本申请另一个实施例提供的测试用例库的生成方法的流程图;
图3是本申请另一个实施例提供的测试用例库的生成方法的流程图;
图4是本申请另一个实施例提供的测试用例库的生成方法的流程图;
图5是本申请一个实施例提供的打桩后程序的逻辑结构示意图;
图6是本申请一个实施例提供的测试用例库的生成装置的框图;
图7是本申请另一个实施例提供的测试用例库的生成装置的框图;
图8是本申请一个实施例提供的计算机设备的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的方法的例子。
首先,对本申请实施例涉及的名词进行简要介绍:
1、打桩:通过扫描程序的源代码,识别程序的逻辑分支,并在程序中设置桩位。打桩后的程序,能够记录其在执行过程中触发的语句即触发顺序。
2、流量回放:在一个环境中通过录制得到的录制流量,并将录制流量在另一个环境中进行回放的一种测试技术;通过分析由流量回放得到的流量回放结果(如测试流量),能够识别出程序的漏洞或确定程序的性能。
本申请实施例提供的方法,各步骤的执行主体可以是计算机设备,该计算机设备是指具备数据计算、处理和存储能力的电子设备。该计算机设备可以是诸如PC(PersonalComputer,个人计算机)、平板电脑、智能手机、可穿戴设备、智能机器人等终端;也可以是服务器。其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云计算服务的云服务器。
下面,通过几个实施例对本申请技术方案进行介绍说明。
请参考图1,其示出了本申请一个实施例提供的测试用例库的生成方法的流程图。在本实施例中,以该方法应用于上文介绍的计算机设备中来举例说明。该方法可以包括如下几个步骤(101~103):
步骤101,获取第一版本的测试程序的多个录制流量,以及第二版本的测试程序的打桩后程序。
其中,打桩后程序用于获取流量回放过程中触发的程序模块和触发顺序。在一些实施例中,测试程序是用于测试的程序,录制流量是通过第一版本的测试程序在真实业务场景中录制的流量。可选地,测试程序可以是应用程序,如社交应用程序、视频应用程序、音乐应用程序、游戏应用程序、杀毒应用程序、阅读应用程序等等。
在一些实施例中,第二版本的测试程序与第一版本的测试程序为测试程序的同一版本;在另一些实施例中,第二版本的测试程序是对第一版本的测试程序进行修改后得到的程序。
在一些实例中,测试程序是应用程序,如社交应用程序、邮件应用程序、游戏应用程序、视频应用程序、音乐应用程序、生活服务应用程序、支付应用程序、新闻应用程序、购物应用程序等等。在另一些实施例中,测试程序是门户网站。可选地,该目标门户网站包括:游戏网站、社交网站、购物网站、支付网站、视频网站、音乐网站、新闻网站等等。
步骤102,在测试环境中执行打桩后程序并回放录制流量,得到录制流量对应的测试流量以及测试流量触发的程序模块和触发顺序。
其中,测试环境是指打桩后程序执行时所在的环境,如打桩后程序所在的设备、与打桩后程序进行交互的设备、打桩后程序所在的网络环境等等。打桩后程序包括多个程序模块,该多个程序模块可以用于处理各种数据和/或程序逻辑,以实现各种程序功能。可选地,一个程序模块可以是一个程序语句,也可以是多个程序语句组成的程序处理单元。本步骤中,通过在测试环境中执行打桩后程序并回放录制流量,能够得到打桩后程序对应产生的测试流量、触发的程序模块,以及触发程序模块的顺序。在一些示例中,测试流量与对应的录制流量可以相同;在另一些示例中,由于测试环境的不同和/或测试程序的程序版本的不同,测试流量触发的程序模块或触发顺序可以不相同,即测试流量与对应的录制流量可以有所不同。
步骤103,根据测试流量触发的程序模块和触发顺序,生成测试用例库。
其中,测试用例库用于对测试程序进行测试。测试用例库中存储有多组测试流量,一组测试流量即为一个测试用例。根据测试流量触发的程序模块和触发顺序,对测试流量进行整理分类,并对测试流量进行筛选,将筛选得到的测试流量存储在测试用例库中,从而生成测试用例库。
综上所述,本申请实施例提供的技术方案,通过在测试环境中执行打桩后程序并回放录制流量,并根据得到的测试流量生成测试用例库,从而将流量回放技术和打桩技术结合,可以对测试流量进行筛选,从而可以舍去测试流量中多余的高频流量,并通过多次流量回放累积低频流量,从而提升程序测试的准确性。
请参考图2,其示出了本申请一个实施例提供的测试用例库的生成方法的流程图。在本实施例中,以该方法应用于上文介绍的计算机设备中来举例说明。该方法可以包括如下几个步骤(201~205):
步骤201,获取第一版本的测试程序的多个录制流量,以及第二版本的测试程序的打桩后程序。
本步骤201的部分内容可以参考上文图1实施例的步骤101,此处不再赘述。
在一些实施例中,本步骤201还包括如下子步骤(2011~2012):
步骤2011,确定第二版本的测试程序中的桩点。
通过分析第二版本的测试程序的信息和结构,能够确定第二版本的测试程序中的桩点。
可选地,本步骤2011还包括如下子步骤:
1、扫描第二版本的测试程序的源代码,获取第二版本的测试程序的源代码的逻辑结构;
2、基于第二版本的测试程序的源代码的逻辑结构,确定桩点的标识和桩点的顺序。
其中,源代码(也可称为源程序)是指未经编译的按照一定的程序设计语言规范书写的文本文件,源代码是人类可读的文本。通过获取并扫描第二版本的测试程序的源代码,能够得到第二版本的测试程序的源代码的逻辑结构;基于第二版本的测试程序的源代码的逻辑结构,能够确定桩点所在的位置,以及桩点的相关信息,如桩点的标识、桩点的顺序等等。可选地,桩点的相关信息还包括桩点对应的变量取值。
可选地,桩点位于第二版本的测试程序的源代码的部分或全部逻辑分支上。在一些实施例中,根据桩点所在位置的不同,对应所覆盖的测试流量包括:函数覆盖(FunctionCoverage)、语句覆盖(Statement Coverage)、判断覆盖(Decision Coverage)、条件覆盖(Condition Coverage)、条件/判断覆盖(Condition/Decision Coverage)、条件组合覆盖(Multiple Condition Coverage)、路径覆盖(Path Coverage)。
步骤2012,在桩点***监测代码得到打桩后程序。
确定桩点之后,可以在桩点***监测代码,从而对第二版本的测试程序进行打桩,得到打桩后程序。其中,监测代码用于监测测试流量触发的程序模块和触发顺序。各个桩点的监测代码可以相同,也可以不相同,本申请实施例对此不作限定。
可选地,本步骤2012还包括如下子步骤:
1、在第二版本的测试程序的源代码的桩点***监测代码,得到打桩后的源代码;
2、对打桩后的源代码进行编译,得到打桩后程序。
编译是指将人类可读的文本翻译为计算机可以执行的二进制指令的过程,该过程可以通过编译器完成。在第二版本的测试程序的源代码的桩点***监测代码,并对打桩后的源代码进行编译,将打桩后的源代码编译为计算机可以执行的指令,即可得到打桩后程序。
其中,第二版本的测试程序的打桩过程可以是自动的,从而节省打桩的时间成本和人力成本,提升打桩效率。
步骤202,根据测试流量触发的程序模块和触发顺序,生成测试流量对应的执行桩点序列。
其中,打桩后程序包括多个程序模块以及各个程序模块对应的桩点。执行桩点序列包括多个按序排列的桩点,执行桩点序列用于指示测试流量触发的程序模块和触发顺序。在流量回放的过程中,得到了测试流量触发的程序模块和触发顺序,可以得到测试流量所经过的桩点以及经过桩点的顺序,从而可以生成测试流量对应的执行桩点序列。
步骤203,将测试流量按照对应的执行桩点序列进行分类,得到至少一类测试流量,同一类的测试流量对应的执行桩点序列相同。
在一些实施例中,将执行桩点序列相同的测试流量划分为同一类测试流量,从而得到至少一类测试流量。
步骤204,对于同一类的测试流量,若测试流量的数量超过门限值数量,则将超过门限值数量的测试流量舍去,并保留门限值数量的测试流量在测试用例库中。
在一些实施例中,对于同一类的测试流量,若测试流量的数量超过门限值数量,表示该类的测试流量过多,可以认为是高频流量。在程序测试过程中,超过门限值数量的测试流量,与门限值数量的测试流量对应的测试结果相比,并无明显区别,反而会增加测试成本,导致测试成本的浪费。因而,本申请实施例中,将超过门限值数量的测试流量舍去,并保留门限值数量的测试流量在测试用例库中,使得测试用例库中的该类测试流量的数量不会过多也不会过少,节省存储资源和测试成本。
步骤205,对于同一类的测试流量,若测试流量的数量小于门限值数量,则将小于门限值数量的测试流量保留在测试用例库中。
在一些实施例中,对于同一类的测试流量,若测试流量的数量小于门限值数量,但是该类测试流量只要存在,即可得到比较准确的程序测试结果,则可以将小于门限值数量的测试流量保留在测试用例库中,不必再获取新的测试流量。在另一些实施例中,对于同一类的测试流量,若测试流量的数量小于门限值数量,则继续进行流量回放,直到该同一类的测试流量的数量达到门限值。
其中,上述步骤204和步骤205中的门限值可以为1、2、3、4、5、6……门限值的具体取值由相关技术人员根据实际情况进行设置,本申请实施例对此不作限定。
需要说明的是,本申请实施例对上述步骤204和步骤205的执行顺序不作限定,可以先执行步骤204,再执行步骤205;也可以先执行步骤205,再执行步骤204;也可以同时执行步骤204和步骤205;还可以仅执行步骤204或仅执行步骤205。
在一些实施例中,本申请实施例提供的方法还包括如下步骤:
1、根据打桩后程序,确定打桩后程序中待触发的执行桩点序列;
2、比对已触发的执行桩点序列和待触发的执行桩点序列,确定待触发的执行桩点序列中,仍未被触发的执行桩点序列;
3、在测试环境中继续执行打桩后程序并回放录制流量,直到待触发的执行桩点序列均被触发过至少n次,所述n为正整数。
根据打桩后程序中的桩点的分布,以及程序测试内容,能够确定打桩后程序中所需触发的执行桩点序列,即待触发的执行桩点序列。将已触发的执行桩点序列和待触发的执行桩点序列进行比对,可以确定待触发的执行桩点序列中,哪些执行桩点序列已被触发过、哪些执行桩点序列仍未被触发过。若存在仍未被触发的执行桩点序列,在测试环境中继续执行打桩后程序并回放录制流量,直到待触发的执行桩点序列均被触发过至少n次。通过识别出仍未被触发的执行桩点序列,并继续进行流量回放,从而保证待触发的执行桩点序列均能够被触发,进而提升程序测试的全面性和准确性。其中,n可以为1、2、3……,n的具体取值由相关技术人员根据实际情况进行设定,本申请实施例对此不作限定。
在一些实施例中,待触发的执行桩点序列是上述桩点能形成的所有桩点执行序列,待触发的执行桩点序列也可以是由相关技术人员根据实际情况设定的执行桩点序列。在另一些实施例中,当经过k次流量回放,仍存在未被触发的执行桩点序列,则停止流量回放,k为正整数。其中,k可以为30、50、100、300……k的具体取值由相关技术人员根据实际情况进行设定,本申请实施例对此不作限定。
综上所述,本申请实施例提供的技术方案中,通过识别哪些执行桩点序列已被触发过、哪些执行桩点序列仍未被触发过,且若存在仍未被触发的执行桩点序列,在测试环境中继续执行打桩后程序并回放录制流量,直到所有待触发的执行桩点序列均被触发,从而保证待触发的执行桩点序列均能够被触发,进而提升程序测试的全面性和准确性。
在一些实施例中,如图3所示,测试用例库的生成***包括源代码版本控制集群31、自动打桩服务集群32、流量数据服务集群33、测试服务集群34和测试用例库生成集群35。其中,源代码版本控制集群31用于生成控制测试程序的版本;自动打桩服务集群32用于对第二版本的测试程序进行自动打桩,得到打桩后程序;打桩后程序部署在测试服务集群34中,测试服务集群34用于对流量数据服务集群33中的录制流量进行回放,得到测试流量;测试用例库生成集群35用于对测试流量进行筛选,进而自动生成测试用例库。可选地,将测试用例库中的测试流量发送至流量数据服务集群33,将测试流量作为录制流量继续进行流量回放。
在一些实施例中,如图4所示,本申请实施例提供的测试用例库的生成方法包括如下几个步骤(401~405):
步骤401,修改第一版本的测试程序的源代码,得到第二版本的测试程序;
步骤402,对第二版本的测试程序进行打桩,得到打桩后程序;
步骤403,将打桩后程序部署在测试环境中;
步骤404,进行测试,在测试环境中执行打桩后程序并对录制流量进行流量回放,得到测试流量以及测试流量对应的执行桩点序列;
步骤405,根据测试流量对应的执行桩点序列生成测试用例库。
请参考图5,其示出了本申请一个实施例提供的打桩后程序的逻辑结构示意图。如图5所示,该测试程序的第一层逻辑结构包括处理逻辑1,第二层逻辑结构包括判断逻辑A,第三层逻辑结构包括处理逻辑2-1、处理逻辑2-2、处理逻辑2-3和处理逻辑2-4,第四层逻辑结构包括判断逻辑B,第五层处理逻辑包括处理逻辑3-1、处理逻辑3-2和处理逻辑3-3。在每个处理逻辑中设置桩点,分别为桩点1、桩点2-1、桩点2-2、桩点2-3、桩点2-4、桩点3-1、桩点3-2和桩点3-3。该测试程序中的执行桩点序列包括:
(1)桩点1,桩点2-1,end;
(2)桩点1,桩点2-2,end;
(3)桩点1,桩点2-3,桩点3-1,end;
(4)桩点1,桩点2-3,桩点3-2,end;
(5)桩点1,桩点2-3,桩点3-3,end;
(6)桩点1,桩点2-4,end。
在一个示例中,将每一类测试流量的数量的门限值设为1,则:
对于测试流量A,其执行桩点序列为:桩点1,桩点2-1,end;由于此时测试用例库中该执行桩点序列对应的测试流量的数量为0,小于门限值1,则将测试流量A存储到测试用例库中;
对于测试流量B,其执行桩点序列为:桩点1,桩点2-1,end;由于测试用例库中已存在该类测试流量,即该类测试流量已达到门限值,则将测试流量B舍去;
对于测试流量C,其执行桩点序列为:桩点1,桩点2-3,桩点3-1,end;由于测试用例库中不存在该类测试流量,即该类测试流量未达到门限值,则将测试流量C存储到测试用例库中。
在另一个示例中,将每一类测试流量的数量的门限值设为3,对于上述的6个执行桩点序列(1)、(2)、(3)、(4)、(5)、(6),已经对应获取到的测试流量的数量分别为16、13、23、0、9、6,则继续针对该测试程序进行流量回放,直到执行桩点序列(4)对应的测试流量的数量也达到门限值3。之后,将这6个执行桩点序列分别对应的测试流量中,多于3组的部分测试流量舍去,也即,对于每个桩点执行序列对应的测试流量,仅分别保留3组测试流量到测试用例库中。或者,当测试用例库中执行桩点序列(1)、(2)、(3)、(5)、(6)对应的测试流量的数量达到门限值3,而测试用例库中执行桩点序列(4)对应的测试流量的数量为0,之后产生的对应于执行桩点序列(1)、(2)、(3)、(5)、(6)的测试流量全部舍去,不再被保留到测试用例库中;继续进行流量回放,直到测试用例库中对于执行桩点序列(4)的测试流量的数量达到门限值3。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图6,其示出了本申请一个实施例提供的测试用例库的生成装置的框图。该装置具有实现上述测试用例库的生成方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上文介绍的计算机设备,也可以设置在计算机设备上。该装置600可以包括:第一获取模块610、流量回放模块620和用例库生成模块630。
所述第一获取模块610,用于获取第一版本的测试程序的多个录制流量,以及第二版本的测试程序的打桩后程序,所述打桩后程序用于获取流量回放过程中触发的程序模块和触发顺序。
所述流量回放模块620,用于在测试环境中执行所述打桩后程序并回放所述录制流量,得到所述录制流量对应的测试流量以及所述测试流量触发的程序模块和触发顺序。
所述用例库生成模块630,用于根据所述测试流量触发的程序模块和触发顺序,生成测试用例库,所述测试用例库用于对所述测试程序进行测试。
综上所述,本申请实施例提供的技术方案,通过在测试环境中执行打桩后程序并回放录制流量,并根据得到的测试流量生成测试用例库,从而将流量回放技术和打桩技术结合,可以对测试流量进行筛选,从而可以舍去测试流量中多余的高频流量,并通过多次流量回放累积低频流量,从而提升程序测试的准确性。
在一些实施例中,所述打桩后程序包括多个所述程序模块以及各个所述程序模块对应的桩点;所述流量回放模块620,用于:
所述在测试环境中执行所述打桩后程序并回放所述录制流量,得到所述录制流量对应的测试流量以及所述测试流量触发的程序模块和触发顺序,包括:
根据所述测试流量触发的程序模块和触发顺序,生成所述测试流量对应的执行桩点序列;
其中,所述执行桩点序列包括多个按序排列的桩点,所述执行桩点序列用于指示所述测试流量触发的程序模块和触发顺序。
在一些实施例中,所述用例库生成模块630,用于:
将所述测试流量按照对应的执行桩点序列进行分类,得到至少一类测试流量,同一类的测试流量对应的执行桩点序列相同;
对于同一类的测试流量,若所述测试流量的数量超过门限值数量,则将超过所述门限值数量的测试流量舍去,并保留所述门限值数量的测试流量在所述测试用例库中;
对于同一类的测试流量,若所述测试流量的数量小于所述门限值数量,则将小于所述门限值数量的测试流量保留在所述测试用例库中。
在一些实施例中,如图7所示,所述装置600还包括:序列确定模块640和序列比对模块650。
所述序列确定模块640,用于根据所述打桩后程序,确定所述打桩后程序中待触发的执行桩点序列。
所述序列比对模块650,用于比对已触发的执行桩点序列和所述待触发的执行桩点序列,确定所述待触发的执行桩点序列中,仍未被触发的执行桩点序列。
所述流量回放模块620,还用于在所述测试环境中继续执行所述打桩后程序并回放所述录制流量,直到所述待触发的执行桩点序列均被触发过至少n次,所述n为正整数。
在一些实施例中,如图7所示,所述第一获取模块610包括:桩点确定子模块611和代码***子模块612。
所述桩点确定子模块611,用于确定所述第二版本的测试程序中的桩点。
所述代码***子模块612,用于在所述桩点***监测代码得到所述打桩后程序,所述监测代码用于监测所述测试流量触发的程序模块和触发顺序。
在一些实施例中,如图7所示,所述桩点确定子模块611,用于:
扫描所述第二版本的测试程序的源代码,获取所述第二版本的测试程序的源代码的逻辑结构;
基于所述第二版本的测试程序的源代码的逻辑结构,确定所述桩点的标识和所述桩点的顺序。
在一些实施例中,如图7所示,所述代码***子模块612,用于:
在所述第二版本的测试程序的源代码的桩点***所述监测代码,得到打桩后的源代码;
对所述打桩后的源代码进行编译,得到所述打桩后程序。
在一些实施例中,所述第二版本的测试程序与所述第一版本的测试程序为所述测试程序的同一版本;或,所述第二版本的测试程序是对所述第一版本的测试程序进行修改后得到的程序。
需要说明的是,上述实施例提供的装置,在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图8,其示出了本申请一个实施例提供的计算机设备的结构框图。该计算机设备用于实施上述实施例中提供的测试用例库的生成方法。具体来讲:
所述计算机设备800包括CPU(Central Processing Unit,中央处理单元)801、包括RAM(Random Access Memory,随机存取存储器)802和ROM(Read-Only Memory,只读存储器)803的***存储器804,以及连接***存储器804和中央处理单元801的***总线805。所述计算机设备800还包括帮助计算机内的各个器件之间传输信息的基本I/O(Input/Output,输入/输出)***806,和用于存储操作***813、应用程序814和其他程序模块815的大容量存储设备807。
所述基本输入/输出***806包括有用于显示信息的显示器808和用于用户输入信息的诸如鼠标、键盘之类的输入设备809。其中所述显示器808和输入设备809都通过连接到***总线805的输入输出控制器810连接到中央处理单元801。所述基本输入/输出***806还可以包括输入输出控制器810以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器810还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备807通过连接到***总线805的大容量存储控制器(未示出)连接到中央处理单元801。所述大容量存储设备807及其相关联的计算机可读介质为计算机设备800提供非易失性存储。也就是说,所述大容量存储设备807可以包括诸如硬盘或者CD-ROM(Compact Disc Read-Only Memory,只读光盘)驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM(Erasable Programmable Read Only Memory,可擦除可编程只读存储器)、EEPROM(Electrically Erasable Programmable Read Only Memory,可擦除可编程只读存储器)、闪存或其他固态存储其技术,CD-ROM、DVD(Digital Video Disc,高密度数字视频光盘)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的***存储器804和大容量存储设备807可以统称为存储器。
根据本申请的各种实施例,所述计算机设备800还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备800可以通过连接在所述***总线805上的网络接口单元811连接到网络812,或者说,也可以使用网络接口单元811来连接到其他类型的网络或远程计算机***(未示出)。
在示例性实施例中,还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集在被处理器执行时以实现上述测试用例库的生成方法。
可选地,该计算机可读存储介质可以包括:ROM(Read-Only Memory,只读存储器)、RAM(Random-Access Memory,随机存储器)、SSD(Solid State Drives,固态硬盘)或光盘等。其中,随机存取记忆体可以包括ReRAM(Resistance Random Access Memory,电阻式随机存取记忆体)和DRAM(Dynamic Random Access Memory,动态随机存取存储器)。
在示例性实施例中,还提供了一种计算机程序产品或计算机程序,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取所述计算机指令,所述处理器执行所述计算机指令,使得所述计算机设备执行上述测试用例库的生成方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种测试用例库的生成方法,其特征在于,所述方法包括:
获取第一版本的测试程序的多个录制流量,以及第二版本的测试程序的打桩后程序,所述打桩后程序用于获取流量回放过程中触发的程序模块和触发顺序;
在测试环境中执行所述打桩后程序并回放所述录制流量,得到所述录制流量对应的测试流量以及所述测试流量触发的程序模块和触发顺序;
根据所述测试流量触发的程序模块和触发顺序,生成测试用例库,所述测试用例库用于对所述测试程序进行测试。
2.根据权利要求1所述的方法,其特征在于,所述打桩后程序包括多个所述程序模块以及各个所述程序模块对应的桩点;
所述在测试环境中执行所述打桩后程序并回放所述录制流量,得到所述录制流量对应的测试流量以及所述测试流量触发的程序模块和触发顺序,包括:
根据所述测试流量触发的程序模块和触发顺序,生成所述测试流量对应的执行桩点序列;
其中,所述执行桩点序列包括多个按序排列的桩点,所述执行桩点序列用于指示所述测试流量触发的程序模块和触发顺序。
3.根据权利要求2所述的方法,其特征在于,所述根据所述测试流量触发的程序模块和触发顺序,生成测试用例库,包括:
将所述测试流量按照对应的执行桩点序列进行分类,得到至少一类测试流量,同一类的测试流量对应的执行桩点序列相同;
对于同一类的测试流量,若所述测试流量的数量超过门限值数量,则将超过所述门限值数量的测试流量舍去,并保留所述门限值数量的测试流量在所述测试用例库中;
对于同一类的测试流量,若所述测试流量的数量小于所述门限值数量,则将小于所述门限值数量的测试流量保留在所述测试用例库中。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据所述打桩后程序,确定所述打桩后程序中待触发的执行桩点序列;
比对已触发的执行桩点序列和所述待触发的执行桩点序列,确定所述待触发的执行桩点序列中,仍未被触发的执行桩点序列;
在所述测试环境中继续执行所述打桩后程序并回放所述录制流量,直到所述待触发的执行桩点序列均被触发过至少n次,所述n为正整数。
5.根据权利要求1所述的方法,其特征在于,所述获取第二版本的测试程序的打桩后程序,包括:
确定所述第二版本的测试程序中的桩点;
在所述桩点***监测代码得到所述打桩后程序,所述监测代码用于监测所述测试流量触发的程序模块和触发顺序。
6.根据权利要求5所述的方法,其特征在于,所述确定所述第二版本的测试程序中的桩点,包括:
扫描所述第二版本的测试程序的源代码,获取所述第二版本的测试程序的源代码的逻辑结构;
基于所述第二版本的测试程序的源代码的逻辑结构,确定所述桩点的标识和所述桩点的顺序。
7.根据权利要求5所述的方法,其特征在于,所述在所述桩点***监测代码,得到所述打桩后程序,包括:
在所述第二版本的测试程序的源代码的桩点***所述监测代码,得到打桩后的源代码;
对所述打桩后的源代码进行编译,得到所述打桩后程序。
8.根据权利要求1至7任一项所述的方法,其特征在于,
所述第二版本的测试程序与所述第一版本的测试程序为所述测试程序的同一版本;
或,
所述第二版本的测试程序是对所述第一版本的测试程序进行修改后得到的程序。
9.一种测试用例库的生成装置,其特征在于,所述装置包括:
第一获取模块,用于获取第一版本的测试程序的多个录制流量,以及第二版本的测试程序的打桩后程序,所述打桩后程序用于获取流量回放过程中触发的程序模块和触发顺序;
流量回放模块,用于在测试环境中执行所述打桩后程序并回放所述录制流量,得到所述录制流量对应的测试流量以及所述测试流量触发的程序模块和触发顺序;
用例库生成模块,用于根据所述测试流量触发的程序模块和触发顺序,生成测试用例库,所述测试用例库用于对所述测试程序进行测试。
10.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述权利要求1至8任一项所述的测试用例库的生成方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述权利要求1至8任一项所述的测试用例库的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011073783.8A CN114328171A (zh) | 2020-10-09 | 2020-10-09 | 测试用例库的生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011073783.8A CN114328171A (zh) | 2020-10-09 | 2020-10-09 | 测试用例库的生成方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114328171A true CN114328171A (zh) | 2022-04-12 |
Family
ID=81032916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011073783.8A Pending CN114328171A (zh) | 2020-10-09 | 2020-10-09 | 测试用例库的生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328171A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115134261A (zh) * | 2022-06-27 | 2022-09-30 | 平安银行股份有限公司 | 一种基于流量回放的测试方法及装置 |
-
2020
- 2020-10-09 CN CN202011073783.8A patent/CN114328171A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115134261A (zh) * | 2022-06-27 | 2022-09-30 | 平安银行股份有限公司 | 一种基于流量回放的测试方法及装置 |
CN115134261B (zh) * | 2022-06-27 | 2023-08-22 | 平安银行股份有限公司 | 一种基于流量回放的测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897691B (zh) | 基于接口模拟服务的数据处理方法、装置、服务器和介质 | |
US20100115496A1 (en) | Filter generation for load testing managed environments | |
CN109800258B (zh) | 数据文件部署方法、装置、计算机设备及存储介质 | |
CN111124926B (zh) | 模糊测试方法、装置、电子设备及存储介质 | |
CN110543420B (zh) | 一种软件测试方法、***、终端及存储介质 | |
CN112035314B (zh) | 内存泄漏的监控方法、装置及电子设备 | |
CN110781061B (zh) | 一种记录用户行为链路的方法及装置 | |
CN110059068B (zh) | 一种分布式存储***中的数据校验方法及数据校验*** | |
CN114490375B (zh) | 应用程序的性能测试方法、装置、设备及存储介质 | |
CN112637005B (zh) | 流量回放方法、装置、计算机设备和存储介质 | |
CN115659358B (zh) | 一种智能合约模糊测试方法及装置 | |
CN112799939A (zh) | 增量代码覆盖率测试方法及装置、存储介质、电子设备 | |
CN114116422A (zh) | 一种硬盘日志分析方法、硬盘日志分析装置及存储介质 | |
US10275595B2 (en) | System and method for characterizing malware | |
CN115061924A (zh) | 自动化测试案例的生成方法、生成装置 | |
CN114328171A (zh) | 测试用例库的生成方法、装置、设备及存储介质 | |
CN112631920A (zh) | 一种测试方法、装置、电子设备及可读存储介质 | |
CN112905449B (zh) | 目标测试方法、装置、设备和存储介质 | |
CN115712571A (zh) | 一种交互服务测试、装置、计算机设备及存储介质 | |
CN115617668A (zh) | 一种兼容性测试方法、装置及设备 | |
CN115391224A (zh) | 一种流量回放方法、装置、计算机设备及可读存储介质 | |
CN112231232A (zh) | 确定测试数据模型及生成测试数据的方法、装置及设备 | |
CN116775040B (zh) | 实现代码疫苗的插桩方法及基于代码疫苗的应用测试方法 | |
CN112486816B (zh) | 测试方法、装置、电子设备及存储介质 | |
CN115687158B (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 |