CN106250310B - 一种测试用例生成方法及装置 - Google Patents
一种测试用例生成方法及装置 Download PDFInfo
- Publication number
- CN106250310B CN106250310B CN201610594642.8A CN201610594642A CN106250310B CN 106250310 B CN106250310 B CN 106250310B CN 201610594642 A CN201610594642 A CN 201610594642A CN 106250310 B CN106250310 B CN 106250310B
- Authority
- CN
- China
- Prior art keywords
- interface
- parameter value
- interface parameters
- parameters
- measured
- 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.)
- Active
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
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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/3688—Test management for test execution, e.g. scheduling of test suites
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)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种测试用例生成方法及装置,该方法包括:确定待测接口中包含的各接口参数,针对确定出的每一接口参数,根据待测接口对应的接口代码,判断该接口参数的参数值是否与所述待测接口对应的接口代码的功能相关;若是,则在该接口参数所对应的各参数值中,标记所有与所述接口代码的功能相关的参数值;否则,则确定该接口参数对应的一个参数值,并标记,根据标记的参数值,生成该待测接口的测试用例。通过本方法,可以根据在接口代码中各接口参数的参数值的使用状态,对发生或未发生透传的接口参数及参数值进行标记,再进一步根据标记的参数及参数值,生成该接口参数的测试用例,有效减少或避免了无用的测试用例的数量。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种测试用例生成方法及装置。
背景技术
随着信息技术的发展,服务提供方(如:网站)后台的业务系统中往往包含不同的业务程序,业务系统可以调用这些业务程序提供的接口,如:应用程序编程接口(Application Programming Interface,API),以便获得不同业务程序的业务功能来实现相应的业务服务。
目前,为了保证在实际应用中接口的正常运行,往往需要对不同业务程序的接口进行接口测试,以判断接口的内部运行逻辑是否正常,避免在实际运行过程中出现异常。在接口测试的过程中,通常根据测试用例实现对接口的测试。其中,通常包括测试输入、执行条件以及预期结果,在生成了的测试结果后,将与预期结果进行比对,从而可确定出该接口是否正常运行。
现有技术中,为了提升接口测试过程的效率,业务系统往往会使用测试用例的自动生成技术,针对某待测接口生成包含若干测试用例的测试用例集。生成的这些测试用例中通常会涵盖待测接口的所有接口参数,以便对待测接口的各项功能进行充分测试。
例如:假设某待测接口具有三个接口参数,通过这些接口参数可以实现相应的功能,为了便于说明,将该接口的接口参数及其具体取值以树状结构示出,具体如图1a所示,在图1a中可见,该接口具有三个接口参数Size、Colour、Shape,并且,每个接口参数具有相应的参数值(诸如:small、large、red等等),那么,针对该接口所生成的测试用例集中的各测试用例,就将涵盖这些参数值,具体如图1b所示(图1b中仅示出了生成的部分测试用例),生成的测试用例中的测试参数将与待测接口的参数值相对应,以便测试该接口能否正常运行。
然而,在实际应用场景下,接口自身的某些接口参数可能并不具有相应的执行逻辑,换言之,对于某些接口参数,该接口所对应的执行方法中,可能并不会对这些接口参数进行处理,而是直接传递给业务流程中的下一接口(该过程称为“透传”),显然,对于这种情况而言,若测试用例的取值中包含这些接口参数,则可以认为这些测试用例就是无用的测试用例。
具体而言,沿用上例,针对如图1a所示的待测接口,假设该接口的“Colour”及“Shape”两个接口参数在实际应用中会发生透传,那么,测试用例集中只需要包含“Size”这一接口参数的两个取值的测试用例即可,但采用现有技术中的方式,仍将生成多个测试用例,显然,现有技术中的方式所生成的测试用例会出现冗余的现象,浪费处理资源。
发明内容
本发明实施例提供一种测试用例生成方法及装置,用以解决现有技术中生成的测试用例出现冗余的问题。
本发明实施例提供的一种测试用例生成方法,包括:
确定待测接口中包含的各接口参数;
针对确定出的每一接口参数,根据待测接口对应的接口代码,判断该接口参数的参数值是否与所述待测接口对应的接口代码的功能相关;若是,则在该接口参数所对应的各参数值中,标记所有与所述接口代码的功能相关的参数值;否则,则确定该接口参数对应的一个参数值,并标记;
根据标记的参数值,生成该待测接口的测试用例。
本发明实施例另提供的一种测试用例生成装置,包括:
接口参数模块,用于确定待测接口中包含的各接口参数;
判断模块,用于针对确定出的每一接口参数,根据待测接口对应的接口代码,判断该接口参数的参数值是否与所述待测接口对应的接口代码的功能相关;
第一处理模块,用于在所述判断模块的判断结果为是时,在该接口参数所对应的各参数值中,标记所有与所述接口代码的功能相关的参数值;
第二处理模块,用于在所述判断模块的判断结果为否时,确定该接口参数对应的一个参数值,并标记;
生成模块,用于根据标记的接口参数及参数值,生成该待测接口的测试用例。
本发明实施例采用的上述至少一个技术方案能够达到以下有益效果:
在进行接口测试的场景下,测试设备可以针对待测接口,确定该待测接口的各接口参数以及各接口参数自身所对应的参数值,在待测接口所包含的接口参数及其参数值中,可能会出现发生透传的接口参数,所以,为了确定出会发生透传的接口参数,测试设备将对待测接口的接口代码进行解析,在接口代码中,对于任一接口参数,如果该接口参数的参数值与接口代码的功能相关,则该接口参数并未发生透传,反之,则表明该接口发生了透传。也就是说,可以根据在各接口参数的参数值与接口代码的功能是否相关,对发生或未发生透传的接口参数及参数值进行标记,再进一步根据标记的参数及参数值,生成该接口参数的测试用例。
相较于现有技术中生成测试用例的方式,本发明实施例中的上述方法可以排除待测接口中发生透传的接口参数及参数值,那么,在生成测试用例的过程中,可以不基于发生透传的接口参数的每一具体取值生成测试用例,从而有效减少或避免了无用的测试用例的数量,对于使用测试用例的自动生成技术而言,这无疑能够降低处理资源的消耗,也减少了生成测试用例过程的时间和成本,从而提升接口测试过程中的效率。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1a~1b为现有技术中待测接口的输入域及生成的测试用例的示意图;
图2a~2b为本发明实施例提供的测试用例生成过程的可能测试场景;
图2c为本发明实施例提供的测试用例生成过程示意图;
图3a~3b为本发明实施例提供的应用实例中待测接口输入域的示意图;
图4为本发明实施例提供的测试用例生成装置结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
正如前述,在进行接口测试的场景下,采用现有技术的方式所自动生成的测试用例集中,测试用例往往涵盖了待测接口中接口参数所有的可能取值,测试用例的数量过多,而待测接口在实际运行状态下,其部分接口参数可能会发生透传的情况,这样一来,对于涉及到这些接口参数的测试用例而言,在测试过程中就会发生透传,显然,这部分测试用例相对于待测接口成为了无用的测试用例,从而浪费了测试阶段的处理资源,也增加了相应的成本消耗。
基于此,本发明实施例中提供了一种测试用例生成方法,以实现针对某一待测接口,可排除发生透传的接口参数,有效减少测试用例集中无用的测试用例的数量,进而可提升测试过程的效率并降低处理资源的消耗。
为了对本发明中的测试用例生成方法进行详细描述,这里需要说明的是,在实际应用场景下,某项业务服务的完整业务流程通常会由不同的业务程序共同实现,也就是说,针对某项业务服务,往往会涉及调用不同的接口实现,这些接口按照业务流程的执行顺序可进行分层。因此,在进行接口测试时,并非仅针对某一接口进行测试,而是针对具有业务关联的多个接口进行测试。由此,测试过程中,某待测接口的接口参数发生了透传,实质上是将该接口参数传递给了下层接口,发生透传的接口参数仅是对当前的待测接口无用,并非是将接口参数丢弃。
具体而言,对于本发明实施例中测试用例生成方法而言,在一种情况下,如图2a所示,服务提供方后台的服务器中设置有不同的接口(图2a中的接口1~接口n),这些接口对应对该服务器内部不同的业务功能单元,那么,便可以通过该服务器实现对其内部接口的测试,也就是说,在该情况下,服务器可以作为上述方法的执行主体。
在另一种情况下,如图2b所示,服务提供方后台的服务器可能采用集群式的架构(图2b中包含服务器集群1~n),不同的服务器集群中设置有相应的接口,在测试过程中,可由服务提供方后台的测试设备实现对各服务器集群中的接口进行测试,即测试设备作为执行主体,其中,测试设备包括但不限于:服务器、具有测试功能的终端设备(进一步可包括智能手机、计算机等)。
上述所列举出的方式,可认为是本发明中测试用例生成方法可能的应用场景,当然,在实际应用中,本方法还可适用于不同的接口测试场景,这里并不构成对本发明的限定。
基于以上内容,下面将针对本发明实施例所提供的测试用例生成方法进行具体说明(下述内容中,执行主体为测试设备):
如图2c所示,为测试用例生成过程,具体包括以下步骤:
S101:确定待测接口中包含的各接口参数。
所述的待测接口,就是需要进行测试的接口。待测接口中包含相应的接口参数,同时,接口参数也具有相应的参数值(各接口参数的所有参数值,也称为该待测接口的输入域),在实际应用中,接口参数和对应的参数值,可以使得该接口能够实现相应的功能。
例如:某接口具有对userID进行统计的功能,那么,userID就是该接口的接口参数,进一步而言,在测试设备中,针对不同的用户会标识不同的userID,诸如“user1234”和“user1235”分别对应了两个不同的用户,这样一来,便可以认为“user1234”和“user1235”就是userID这个接口参数的参数值。在该示例中可见,通过userID这一接口参数的不同取值,该接口就可以实现对userID的统计功能。当然,该示例仅是一种简单说明,并不构成对本发明的限定。
在实际应用场景下,对于待测接口的接口参数及其对应的参数值,通常会记录在该待测接口的描述文件(可认为是一种配置文件)中,那么,通过读取该描述文件便可以确定出上述的接口参数及对应的参数值。这里并作具体说明。
S102:针对确定出的每一接口参数,根据待测接口对应的接口代码,判断该接口参数的参数值是否与所述待测接口对应的接口代码的功能相关,若是,则在该接口参数所对应的各参数值中,标记所有与所述接口代码的功能相关的参数值;否则,则确定该接口参数对应的一个参数值,并标记。
考虑到现有技术中,生成的测试用例中涵盖了待测接口自身接口参数的所有可能取值,测试用例中也就包含发生透传的接口参数,致使这些测试用例对于该接口而言成为无用的测试用例。
因此,为了减少或避免无用测试用例的出现,在本步骤中,将对待测接口的接口代码进行解析,以便确定出发生透传的参数。
具体而言,在本步骤中,如果接口代码中基于某接口参数的参数值执行了相应的操作,则可以认为该接口参数并未发生透传,而如果接口代码中对于某接口参数中的参数值并未执行任何操作,则可以认为该接口参数发生了透传。也就是说,本步骤中接口参数的参数值是否与接口代码的功能相关,实质上就是接口代码中对该参数值是否进行了相应的执行操作。
对于不同接口参数是否与接口代码的功能相关,测试设备将进行记录,以便后续生成相应的测试用例。在本发明实施例中,测试设备可以使用具有记录、标记功能的程序,对与接口代码相关和/或不相关的接口参数的参数值进行标记。其具体形式可以是针对接口参数创建数据表,该数据表中写入该接口参数的各参数值,同时写入与接口代码是否相关的标记信息;也可以是针对接口参数创建容器,在容器中写入接口参数的各参数值,同时写入与接口代码是否相关的标记信息。这里并不构成对本发明的限定。
需要说明的是,对于未发生透传的接口参数,测试设备可基于该接口参数中向相关参数值生成测试用例;而对于发生了透传的接口参数,也就表示接口代码中并不“关心”该接口参数的具体取值,换言之,无论该接口参数所对应的参数值为何值,接口代码都将执行相同的操作。所以,测试设备可以确定出该接口参数的一个参数值,用来代替该接口参数的任意参数值。
S104:根据标记的参数值,生成该待测接口的测试用例。
通过标记的接口参数及参数值,可以获知接口参数及其参数值是否在接口代码中被执行,也就可以进一步确定出接口参数是否发生了透传。
例如:假设某待测接口A的包含两个接口参数userID和userAGE,其分别代表了用户的ID和用户的年龄,并假设该待测接口A具有统计用户数量的功能,对于该待测接口A的接口代码而言,将针对userID的数量进行统计,而并不关心userAGE的具体取值(也即,用户的年龄对用户数量的统计并不构成影响),显然,对接口参数userAGE发生了透传,所以,测试设备基于接口代码,针对接口参数userID标记为“未发生透传”,相应地,针对接口参数userAGE标记为“发生透传”。
那么,测试设备将根据接口参数userID的各参数值,生成相应的测试用例,而对于接口参数userAGE,测试设备可以确定接口参数userAGE中的任一参数值,并进一步生成相应的测试用例。
从上例中可见,采用本发明中的上述方法,对于接口参数userAGE所对应的各参数值,可以无需生成额外的测试用例,从而有效减少了测试用例的总量。
通过上述步骤,在进行接口测试的场景下,测试设备可以针对待测接口,确定该待测接口的各接口参数以及各接口参数自身所对应的参数值,在待测接口所包含的接口参数及其参数值中,可能会出现发生透传的接口参数,所以,为了确定出会发生透传的接口参数,测试设备将对待测接口的接口代码进行解析,在接口代码中,对于任一接口参数,如果该接口参数的参数值与接口代码的功能相关,则该接口参数并未发生透传,反之,则表明该接口发生了透传。也就是说,可以根据在各接口参数的参数值与接口代码的功能是否相关,对发生或未发生透传的接口参数及参数值进行标记,再进一步根据标记的参数及参数值,生成该接口参数的测试用例。
相较于现有技术中生成测试用例的方式,本发明实施例中的上述方法可以排除待测接口中发生透传的接口参数及参数值,那么,在生成测试用例的过程中,可以不基于发生透传的接口参数的每一具体取值生成测试用例,从而有效减少或避免了无用的测试用例的数量,对于使用测试用例的自动生成技术而言,这无疑能够降低处理资源的消耗,也减少了生成测试用例过程的时间和成本,从而提升接口测试过程中的效率。
在前述过程中,为了针对接口参数和相应的参数值进行标记,在本发明实施例中的一种方式下,测试设备将为各接口参数构建相应的容器。这里需要说明的是,容器可认为是一种存储机制,通过容器可以将接口参数及其参数值的相关信息进行记录并存储,在实际应用中,测试设备具体可以采用基于Java的容器类构建各接口参数的容器。这里并不构成对本发明的限定。
所以,在根据所述待测接口对应的接口代码,在各接口参数中标记被使用的接口参数以及对应的参数值之前,所述方法还包括:针对确定出的每一接口参数,构建与该接口参数对应的容器,将该接口参数对应的参数值写入所述容器中。
换言之,容器内存储了接口参数的各参数值,具体可以采用如下的表示方法:
例如:假设对于某接口参数a,该接口参数所对应的参数值的取值范围为:0~100,那么,针对该接口参数a所构建的容器可以表示为{“value”:“range,0,100”}。这里表示接口参数a的参数值可在0~100之间取值。
又如:假设对于某接口参数b,其对应的接口参数值可取1或0,那么,针对该接口参数b所构建的容器可以表示为{“value”:“select,0,1”}。这里表示接口参数b的参数值取为0或1。
上述示例中的字段“range”、“select”表示接口参数的取值方式,其中,“range”代表范围值,而“select”代表可选取的数值。这里并不构成对本发明的限定。
此外,容器中除了存储有接口参数的参数值外,还将存储接口参数的参数名,其表示方式可以为:“name,接口代码中用于表示接口参数的字符(即,接口参数名)”。
例如:对于接口参数a,其容器中除了存储有前述示例中的参数值之外,还在容器中写入{“name”:“a”},代表该容器所对应的接口参数名为“a”。
考虑到在实际应用中,在接口代码内,通常会涉及相应的赋值语句,赋值语句就有可能使得接口参数的名称发生变化,例如:在赋值语句的作用下,将接口参数a赋值给名为“a2”的变量,那么,在后续的接口代码内,变量“a2”将指代接口参数a。为了保证上述的接口参数的赋值变化不会对后续过程产生影响,故作为本发明实施例中的一种方式,将在容器中写入赋值变化后的接口参数名。具体地,在容器中写入{“name”:“a,a2”},其表示接口参数a赋值给了名为“a2”的变量。当然,这里并不构成对本发明的限定。
需要说明的是,上述内容中有关容器中的字符表达所使用的引号和冒号,仅是为了与接口代码的语句表达规则相匹配,在实际应用中,针对不同编译语言所编写的接口代码而言,容器中可以采用不同的表达方式,这里并不构成对本发明的限定。
在建立了各接口参数的容器之后,也就可以针对接口参数的参数值进行标记,以便标示出发生透传的接口参数和未发生透传的接口参数。所以,前述步骤:根据待测接口对应的接口代码,判断该接口参数的参数值是否与所述待测接口对应的接口代码的功能相关,具体包括:确定所述接口代码中包含该接口参数的各流程控制语句,根据确定出的各流程控制语句,判断所述各流程控制语句中是否包含该接口参数对应的参数值,若是,则判定所述接口参数的参数值与接口代码的功能相关;否则,则判定所述接口参数的参数值与接口代码的功能不相关。
进一步地,在该接口参数所对应的各参数值中,标记所有与所述接口代码相关的参数值,具体包括:在该接口参数所对应的容器中,为流程控制语句中包含的该接口参数的参数值设置第一标记。
确定该接口参数对应的一个参数值,并标记,具体包括:从该接口参数所对应的容器中,选定任一参数值,并为选定的该参数值设置第二标记,或,针对该接口参数生成单一有效值,将该单一有效值确定为该接口参数对应的一个参数值,并为该参数值设置第二标记。
当然,作为本发明实施例中的一种方式,为了提升对标记的参数值的查找效率,还可以对接口参数所对应的容器进行标记,具体而言,针对未发生透传的接口参数,可为其容器设置第三标记;针对发生透传的接口参数,可为其容器设置第四标记。
在本发明实施例中,所述的流程控制语句,可认为是用于执行相应操作的代码语句,其中可包含if、while、for、switch等关键词,当然,针对诸如Java、C++等不同的编译语言,流程控制语句中的关键词并不限于上述四种,考虑到不同编译语言中流程控制语句的关键词属于公众所知的内容,故在此不再过多赘述。
上述的标记,具体可以采用键值对、标识字符的方式,这里并不构成对本发明的限定。具体而言:
如果流程控制语句中包含了某接口参数及相应的参数值,则可以认为该接口参数及该参数值与接口代码的功能相关,在运行过程中将被调用以执行相应的操作。显然,这类接口参数及相应的参数值并未发生透传。
如:流程控制语句“if(a=1)……”其表示接口参数a的参数值为1时,接口代码将执行相应操作,也就是说,接口参数a及其参数值1并未发生透传,所以,可以在接口参数a的容器中,为参数值1设置第一标记“{“used value”,“a select 1”}”,以表示接口代码中使用了接口参数a=1的参数值。作为一种可选方式,可以针对接口参数a的容器设置第三标记,设置的第三标记为:“{“used”,“ture”}”,表示该接口参数a并未发生透传。
在流程控制语句中,如果包含了某接口参数但并未包含该接口参数的参数值,根据前述内容,表明在接口代码中的执行过程与该接口参数的参数值无关,进而可判定该接口参数发生了透传。
如:流程控制语句“if(!empty(a))……”其表示若接口参数a的参数值非空值时,接口代码将执行相应的操作,也就是说,接口代码所要执行的操作并不关注接口参数a的具体取值,只需接口参数非空即可,显然,接口参数a发生了透传。
进一步地,可在接口参数a的容器中任一地选定一个参数值,并针对选定的参数值设置第二标记。如:接口参数a的某一参数值为10,那么,可针对该参数值10设置第二标记,“{“unused value”,“a select 10”}”该取值并不影响业务的执行。
或者,在另一种方式下,可以针对发生透传的接口参数a生成单一有效值,单一有效值具体可由相应的代码中的方法生成,如:针对接口参数a生成的单一有效值为“1”(生成的单一有效值并非是接口参数自身的参数值),其表示该接口参数a的取值非空。
此外,对于发生透传的接口参数的容器,还可写入第四标记,如:写入键值对“{“touchuan”,“ture”}”,以表示接口参数a发生了透传。
此后,便可以根据标记的接口参数及相应的参数值生成相应的测试用例,具体而言,根据标记的参数值,生成该待测接口的测试用例,具体包括:
根据具有第一标记的参数值以及具有第二标记的参数值,生成该待测接口的测试用例。
下面以一具体应用实例对上述的测试用例生成方法进行说明:
假设某待测接口A包含uid和f两个接口参数,其具体的参数值的输入域如图3a所示(其中,接口参数uid的取值可为单个数值或多个数值,但取值为字母时无效;接口参数f的取值为2时有效,其他值无效),并且,其部分接口代码如下:
$params=Data_Request::params('uid','f');
if(!empty($params['uid'])))
$result=FriendshipsModel::create($params);
……
if($params['f']==2)
$result=(new
Api_Platform_Friendships())->createFriendshipForce($params['uid'],
$params['screen_name'],$params['is_encode'],$origin)['rst']……
假设,根据待测接口A的描述文件及如图3a所示的输入域,可以为接口参数uid和f分别构建相应的容器:
uid:{“value”,“select,‘123’,‘123,456’,‘abc’”}
f:{“value”,“select,2,3”}
可见,各接口参数的容器中均包含:有效值和无效值,以便进行充分测试,这里并不构成对本发明的限定。
上述代码中赋值语句“$params=……”的作用下,接口参数uid和f将分别赋值给变量“$params['uid']”和“$params['f']”。故分别在各接口参数的容器写入参数名称:
uid:{
{“value”,“select,‘123’,‘123,456’,‘abc’”}
{“name”,“$params['uid']”}
}
f:{
{“value”,“select,2,3”}
{“name”,“$params['f']”}
}
此后针对接口代码进行遍历扫描后,可知,流程控制语句中包含了变量“$params['uid']”及“$params['f']”,并且,对于变量“$params['uid']”,在接口代码中并未包含该变量的具体取值,可认为该变量的具体取值与接口代码的功能无关,而对于变量“$params['f']”,接口代码中包含了具体取值,即2,可认为该变量的具体取值与接口代码的功能相关。所以,变量“$params['uid']”(即,接口参数uid)发生了透传,而“$params['f']”(即,接口参数f)未发生透传。在该示例中,接口参数uid发生透传,实质上是将接口参数uid的具体取值(即,各参数值)传递给业务流程中的下层接口,并非是将该接口参数uid的参数值丢弃,
由此,各变量的容器中的内容为:
uid:{
{“value”,“select,‘123’,‘123,456’,‘abc’”}
{“name”,“$params['uid']”}
{“touchuan”:“ture”}
}
f:{
{“value”,“select,2,3”}
{“name”,“$params['f']”}
{“used”:“ture”}
{“used value”:“$params['f'],select,2”}
}
从而,更新待测接口A的输入域,具体如图3b所示,对于变量“$params['uid']”(也即,接口参数uid),由于发生了透传,所以可以使用单一有效值代替其所有的有效取值;对于变量“$params['f']”(也即,接口参数f),由于未发生透传,所以其有效的取值仍使用其自身的参数值2。并基于更新后的输入域生成相应的测试用例。
以上为本发明实施例提供的测试用例生成方法,基于同样的思路,本发明实施例还提供一种测试用例生成装置。如图4所示,测试用例生成装置包括:
接口参数模块401,用于确定待测接口中包含的各接口参数。
判断模块402,用于针对确定出的每一接口参数,根据待测接口对应的接口代码,判断该接口参数的参数值是否与所述待测接口对应的接口代码的功能相关。
第一处理模块403,用于在判断处理模块402的判断结果为是时,在该接口参数所对应的各参数值中,标记所有与所述接口代码的功能相关的参数值。
第二处理模块404,用于在判断处理模块402的判断结果为否时,确定该接口参数对应的一个参数值,并标记。
生成模块405,用于根据标记的接口参数及参数值,生成该待测接口的测试用例。
在本发明实施例中的一种方式下,接口参数模块401,还用于针对确定出的每一接口参数,构建与该接口参数对应的容器,将该接口参数对应的参数值写入所述容器中。
在本发明实施例中的一种方式下,判断模块402,具体用于确定所述接口代码中包含该接口参数的各流程控制语句,根据确定出的各流程控制语句,判断所述各流程控制语句中是否包含该接口参数对应的参数值,若是,则判定所述接口参数的参数值与接口代码的功能相关;否则,则判定所述接口参数的参数值与接口代码的功能不相关。
在本发明实施例中的一种方式下,第一处理模块403,具体用于在该接口参数所对应的容器中,为流程控制语句中包含的该接口参数的参数值设置第一标记。
第二处理模块404,具体用于从该接口参数所对应的容器中,选定任一参数值,并为选定的该参数值设置第二标记,或,针对该接口参数生成单一有效值,将该单一有效值确定为该接口参数对应的一个参数值,并为该参数值设置第二标记。
生成模块405,具体用于根据具有第一标记的参数值以及具有第二标记的参数值,生成该待测接口的测试用例。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (8)
1.一种测试用例生成方法,其特征在于,所述方法包括:
确定待测接口中包含的各接口参数;
针对确定出的每一接口参数,根据待测接口对应的接口代码,判断该接口参数的参数值是否与所述待测接口对应的接口代码的功能相关;若是,则在该接口参数所对应的各参数值中,标记所有与所述接口代码的功能相关的参数值;否则,则确定该接口参数对应的一个参数值,并标记;
根据标记的参数值,生成该待测接口的测试用例;
所述根据待测接口对应的接口代码,判断该接口参数的参数值是否与所述待测接口对应的接口代码的功能相关,具体包括:
确定所述接口代码中包含该接口参数的各流程控制语句;
根据确定出的各流程控制语句,判断所述各流程控制语句中是否包含该接口参数对应的参数值;
若是,则判定所述接口参数的参数值与接口代码的功能相关;
否则,则判定所述接口参数的参数值与接口代码的功能不相关。
2.如权利要求1所述的方法,其特征在于,在判断该接口参数的参数值是否与所述待测接口对应的接口代码的功能相关之前,所述方法还包括:
构建与该接口参数对应的容器;
将该接口参数对应的参数值写入所述容器中。
3.如权利要求2所述的方法,其特征在于,所述在该接口参数所对应的各参数值中,标记所有与所述接口代码相关的参数值,具体包括:
在该接口参数所对应的容器中,为流程控制语句中包含的该接口参数的参数值设置第一标记;
所述确定该接口参数对应的一个参数值,并标记,具体包括:
从该接口参数所对应的容器中,选定任一参数值,并为选定的该参数值设置第二标记,或
针对该接口参数生成单一有效值,将该单一有效值确定为该接口参数对应的一个参数值,并为该参数值设置第二标记。
4.如权利要求3所述的方法,其特征在于,根据标记的参数值,生成该待测接口的测试用例,具体包括:
根据具有第一标记的参数值以及具有第二标记的参数值,生成该待测接口的测试用例。
5.一种测试用例生成装置,其特征在于,所述装置包括:
接口参数模块,用于确定待测接口中包含的各接口参数;
判断模块,用于针对确定出的每一接口参数,根据待测接口对应的接口代码,判断该接口参数的参数值是否与所述待测接口对应的接口代码的功能相关;
第一处理模块,用于在所述判断模块的判断结果为是时,在该接口参数所对应的各参数值中,标记所有与所述接口代码的功能相关的参数值;
第二处理模块,用于在所述判断模块的判断结果为否时,确定该接口参数对应的一个参数值,并标记;
生成模块,用于根据标记的接口参数及参数值,生成该待测接口的测试用例;
所述判断模块,具体用于确定所述接口代码中包含该接口参数的各流程控制语句,根据确定出的各流程控制语句,判断所述各流程控制语句中是否包含该接口参数对应的参数值,若是,则判定所述接口参数的参数值与接口代码的功能相关;否则,则判定所述接口参数的参数值与接口代码的功能不相关。
6.如权利要求5所述的装置,其特征在于,所述接口参数模块,还用于针对确定出的每一接口参数,构建与该接口参数对应的容器,将该接口参数对应的参数值写入所述容器中。
7.如权利要求6所述的装置,其特征在于,所述第一处理模块,具体用于在该接口参数所对应的容器中,为流程控制语句中包含的该接口参数的参数值设置第一标记;
所述第二处理模块,具体用于从该接口参数所对应的容器中,选定任一参数值,并为选定的该参数值设置第二标记,或针对该接口参数生成单一有效值,将该单一有效值确定为该接口参数对应的一个参数值,并为该参数值设置第二标记。
8.如权利要求7所述的装置,其特征在于,所述生成模块,具体用于根据具有第一标记的参数值以及具有第二标记的参数值,生成该待测接口的测试用例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610594642.8A CN106250310B (zh) | 2016-07-25 | 2016-07-25 | 一种测试用例生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610594642.8A CN106250310B (zh) | 2016-07-25 | 2016-07-25 | 一种测试用例生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106250310A CN106250310A (zh) | 2016-12-21 |
CN106250310B true CN106250310B (zh) | 2019-01-29 |
Family
ID=57603237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610594642.8A Active CN106250310B (zh) | 2016-07-25 | 2016-07-25 | 一种测试用例生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106250310B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107102941B (zh) * | 2017-03-30 | 2021-01-08 | 腾讯科技(深圳)有限公司 | 一种测试用例的生成方法及装置 |
CN107480053B (zh) * | 2017-07-21 | 2021-08-17 | 销冠网络科技有限公司 | 一种软件测试数据生成方法及装置 |
CN107844421B (zh) * | 2017-10-31 | 2020-08-14 | 平安科技(深圳)有限公司 | 接口测试方法、装置、计算机设备和存储介质 |
CN109062798A (zh) * | 2018-07-26 | 2018-12-21 | 浙江数链科技有限公司 | 一种基于Dubbo框架的测试方法与装置 |
CN109783381B (zh) * | 2019-01-07 | 2021-11-09 | 中国银行股份有限公司 | 一种测试数据生成方法、装置及系统 |
CN110727597B (zh) * | 2019-10-15 | 2023-03-10 | 杭州安恒信息技术股份有限公司 | 一种基于日志排查无效代码补全用例的方法 |
CN111045922B (zh) * | 2019-10-21 | 2023-09-12 | 望海康信(北京)科技股份公司 | 测试用例生成方法及系统 |
CN110990269A (zh) * | 2019-11-26 | 2020-04-10 | 苏宁云计算有限公司 | 一种接口测试的方法、装置及系统 |
CN113760745A (zh) * | 2021-05-19 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种接口自动化测试用例生成方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530223A (zh) * | 2012-07-06 | 2014-01-22 | 百度在线网络技术(北京)有限公司 | 一种自动生成单元测试用例的方法及装置 |
CN104156313A (zh) * | 2014-08-12 | 2014-11-19 | 南京大学 | 一种Web服务测试用例自动生成方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0206761D0 (en) * | 2002-03-22 | 2002-05-01 | Object Media Ltd | Software testing |
-
2016
- 2016-07-25 CN CN201610594642.8A patent/CN106250310B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530223A (zh) * | 2012-07-06 | 2014-01-22 | 百度在线网络技术(北京)有限公司 | 一种自动生成单元测试用例的方法及装置 |
CN104156313A (zh) * | 2014-08-12 | 2014-11-19 | 南京大学 | 一种Web服务测试用例自动生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106250310A (zh) | 2016-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106250310B (zh) | 一种测试用例生成方法及装置 | |
CN106897205B (zh) | 一种测试数据生成方法及装置 | |
CN107133174A (zh) | 测试用例代码自动生成装置与方法 | |
TW201804393A (zh) | 終端規則引擎裝置、終端規則運行方法 | |
CN106899666A (zh) | 一种针对业务标识的数据处理方法及装置 | |
CN107015804A (zh) | 一种通过配置api快速开发项目的方法及系统 | |
CN107733710A (zh) | 链路调用关系的构建方法、装置、计算机设备及存储介质 | |
CN108134812A (zh) | 数据处理方法和装置 | |
CN111382155A (zh) | 一种数据仓库的数据处理方法、电子设备及介质 | |
CN115269683A (zh) | 一种基于多方协作的数据查询方法及装置 | |
CN103326930B (zh) | 开放平台接口自动巡检方法和系统 | |
CN113268243A (zh) | 内存预测方法及装置、存储介质、电子设备 | |
CN108984339A (zh) | 数据恢复方法及相关产品 | |
CN111984643A (zh) | 一种知识图谱的构建方法、装置、知识图谱系统及设备 | |
CN115270202A (zh) | 一种基于多方协作的隐私计算方法及装置 | |
CN109165102B (zh) | 一种基于智能合约的约束求解器分布式调度方法 | |
CN114840426A (zh) | 一种代码测试的方法及装置 | |
CN103354506B (zh) | 一种物联网业务架构以及业务组合方法 | |
CN104516734B (zh) | 业务流程配置方法及装置 | |
CN104142817B (zh) | 在Java应用中测量用户资源使用量的方法与装置 | |
CN106302011A (zh) | 基于多端的测试方法及终端 | |
CN106202374A (zh) | 一种数据处理方法及装置 | |
CN110362294A (zh) | 开发任务执行方法、装置、电子设备及存储介质 | |
CN115904785A (zh) | 一种异常定位方法、装置、设备及可读存储介质 | |
CN109542775A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |