CN102841841B - 一种测试中的断言处理方法及系统 - Google Patents
一种测试中的断言处理方法及系统 Download PDFInfo
- Publication number
- CN102841841B CN102841841B CN201110166591.6A CN201110166591A CN102841841B CN 102841841 B CN102841841 B CN 102841841B CN 201110166591 A CN201110166591 A CN 201110166591A CN 102841841 B CN102841841 B CN 102841841B
- Authority
- CN
- China
- Prior art keywords
- test
- data
- initialization
- assert
- file
- 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.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种测试中的断言处理方法及系统,以解决现有技术将测试用例代码与测试用例绑定导致测试效率低的问题。所述方法包括:接收测试请求;根据所述测试请求进行数据初始化,得到初始测试数据;解析预配置的断言文件,得到解析结果;按照所述解析结果对所述初始测试数据执行断言处理。本申请通过可配置的方式实现了测试中断言的自动化执行。针对不同的测试用例,每次测试只需要编写配置断言文件即可,无需重新编写测试用例代码,大大提高了测试效率。而且,对于不了解具体编程语言的测试人员,还可以避免测试人员不具备开发技能而带来的一系列测试难度问题。
Description
技术领域
本申请涉及测试技术,特别是涉及一种测试中的断言处理方法及系统。
背景技术
在软件测试过程中,测试人员一般进行黑盒测试,通过检验系统对外提供的界面接口来验证系统提供的功能正确与否。但是黑盒测试存在比较大的局限性,在测试流程中要求交付测试的系统是一个可以正常运行的系统,而且无法检验系统内部模块的功能是否符合测试计划的要求。鉴于上述原因,具有编程技能的开发人员和测试人员会采用白盒测试的方式来进行测试。
在白盒测试中,针对数据库进行测试时,常常使用断言(assert)来查找逻辑错误。编写代码时,程序员总是会做出一些假设,断言就是用于在代码中捕捉这些假设,因此可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。断言可以在调试模式下用来确保制定条件被满足,比如说,程序员想确保x>0,在代码中就可以写assert(x>0);如果在运行过程中发现x<=0了,代码就会中断,利用调试器很容易发现问题所在。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新起用断言。
现有技术中,针对数据库进行的断言处理一般采用以下方式:
测试人员先人工准备用于测试的数据,即手动输入用于测试的初始值,然后编写单元测试用例代码(例如Java、C#)将数据库数据转化成程序对象,再执行这些测试用例来达到断言的效果。
上述断言处理方法采用了将测试用例代码与测试用例绑定的方式,因此无法应用到多套测试方案中,每次测试都需要重新编写测试用例代码,工作量很大,大大降低了测试效率。
发明内容
本申请提供了一种测试中的断言处理方法及系统,以解决现有技术将测试用例代码与测试用例绑定导致测试效率低的问题。
为了解决上述问题,本申请公开了一种测试中的断言处理方法,包括:
接收测试请求;
根据所述测试请求进行数据初始化,得到初始测试数据;
解析预配置的断言文件,得到解析结果;
按照所述解析结果对所述初始测试数据执行断言处理。
优选的,所述解析预配置的断言文件得到解析结果,包括:将断言文件按照指定格式进行逐行解析,得到的解析结果包括断言操作以及执行该断言操作得到的期望值。
优选的,按照所述解析结果对所述初始测试数据执行断言处理,包括:获取所述解析结果中的断言操作,并对所述初始测试数据执行该断言操作,得到执行结果;将所述执行结果与所述解析结果中的期望值进行比较。
优选的,通过以下方式预配置断言文件:按照指定格式自定义断言文件,包括自定义断言判定的开始、断言操作和执行该断言操作得到的期望值。
优选的,根据所述测试请求进行数据初始化得到初始测试数据,包括:根据所述测试请求读取初始化配置文件;解析所述初始化配置文件得到数据初始化配置信息;依据所述数据初始化配置信息执行相应的数据初始化操作,得到初始测试数据。
优选的,根据所述测试请求进行数据初始化得到初始测试数据,包括:根据所述测试请求读取初始化配置文件,所述初始化配置文件中包含以sql脚本形式保存的配置信息;将所述sql脚本形式的配置信息从所述初始化配置文件中解析出来;根据所述sql脚本形式的配置信息连接相应的数据库服务器,并执行数据库操作命令,得到初始测试数据。
优选的,所述数据初始化包括全局初始化和调用初始化:若设定全局初始化,则每次测试都默认使用全局的数据初始化配置信息;若设定调用初始化,则每次测试都使用针对自己的数据初始化配置信息。
优选的,数据初始化支持多数据源数据初始化,并支持外部文件的读取。
优选的,若后续初始化操作语句的执行依赖于前面操作语句的执行结果,则在数据初始化配置信息中,设置变量用于缓存所述前面操作语句的执行结果;在数据初始化过程中,当执行所述后续初始化操作语句时,将所述缓存的执行结果读取。
本申请还提供了一种测试中的断言处理系统,包括:
断言请求模块,用于接收测试请求;
数据初始化模块,用于根据所述测试请求进行数据初始化,得到初始测试数据;
断言解析模块,用于解析预配置的断言文件,得到解析结果;
断言处理模块,用于按照所述解析结果对所述初始测试数据执行断言处理。
优选的,所述断言解析模块将断言文件按照指定格式进行逐行解析,得到的解析结果包括断言操作以及执行该断言操作得到的期望值。
优选的,所述断言处理模块包括:
断言执行子模块,用于获取所述解析结果中的断言操作,并对所述初始测试数据执行该断言操作,得到执行结果;
比较子模块,用于将所述执行结果与所述解析结果中的期望值进行比较。
优选的,所述系统还包括:断言配置模块,用于按照指定格式自定义断言文件,包括自定义断言判定的开始、断言操作和执行该断言操作得到的期望值。
优选的,所述数据初始化模块包括:
读取子模块,用于根据所述测试请求读取初始化配置文件;
解析子模块,用于解析所述初始化配置文件得到数据初始化配置信息;
初始化子模块,依据所述数据初始化配置信息执行相应的数据初始化操作,得到初始测试数据。
优选的,所述初始化子模块还包括:
全局初始化子模块,用于每次测试都默认使用全局的数据初始化配置信息;
调用初始化子模块,用于每次测试都使用针对自己的数据初始化配置信息。
优选的,所述系统还包括:
初始化配置模块,用于在初始化配置文件中自定义数据初始化配置信息,还用于当后续初始化操作语句的执行依赖于前面操作语句的执行结果时,在数据初始化配置信息中设置变量用于缓存所述前面操作语句的执行结果;
所述初始化子模块当执行所述后续初始化操作语句时,将所述缓存的执行结果读取。
与现有技术相比,本申请包括以下优点:
首先,本申请通过可配置的方式实现了测试中断言的自动化执行。测试人员可以在断言文件中声明各类所需要进行的断言操作,从测试的开始到结束,根据所配置好的断言文件即可完全自动化执行断言操作。因此,针对不同的测试用例,每次测试只需要编写配置断言文件即可,无需重新编写测试用例代码,大大提高了测试效率。而且,对于不了解具体编程语言的测试人员,还可以避免测试人员不具备开发技能而带来的一系列测试难度问题。
其次,本申请还可通过配置的方式准备测试所需的数据。通过声明式的数据初始化配置,根据解析获得的初始化配置信息就可以自动完成测试数据的准备工作,无需测试人员手动输入,从而进一步提高了测试效率。而且,这种数据初始化配置的方式更加灵活。
当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。
附图说明
图1是本申请实施例所述一种测试中的断言处理方法的流程图;
图2是本申请实施例所述一种声明式断言的解析流程图;
图3是本申请实施例所述一种执行自动化数据库断言的流程图;
图4是本申请实施例所述进行自动化数据准备的示意图;
图5是本申请实施例所述初始化配置文件的数据结构示意图;
图6是本申请实施例所述数据初始化动态参数绑定机制的示意图;
图7是本申请实施例所述一种测试中的断言处理系统结构图;
图8是本申请实施例所述断言处理系统的整体处理流程示意图;
图9是本申请实施例所述断言处理系统的详细处理流程示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
针对测试中的断言处理,为了提高处理效率,本申请提出一种断言处理方法及系统,通过可配置的方式实现断言的自动化执行。
下面通过实施例对本申请所述方法的实现流程进行详细说明。
参照图1,是本申请实施例所述一种测试中的断言处理方法的流程图。
以针对数据库进行的测试为例,处理流程如下:
步骤101,接收测试请求;
步骤102,根据所述测试请求进行数据初始化,得到初始测试数据;
针对特定的测试场景,在对数据库进行测试之前,需要准备一些测试数据,以便符合该场景下的业务规则。所述数据初始化的过程就是准备测试数据的过程,即按照业务规则的要求通过数据库的添加、删除、查询或修改等操作,设置测试数据的初始状态或初始值。
步骤103,解析预配置的断言文件,得到解析结果;
所述断言文件中设置了断言处理的配置信息,通过解析该断言文件,就可以获得所述配置信息,然后依据该配置信息进行自动化地断言处理。
具体的,所述断言文件可以按照指定格式进行预配置,这样解析该断言文件时就可以按照所述指定的格式进行逐行解析。预配置的内容包括断言判定的开始、具体执行的断言操作和执行该断言操作得到的期望值等信息。相应的,断言文件的解析结果也包括断言判定的开始、具体执行的断言操作和执行该断言操作得到的期望值等信息。其中,所述断言判定的开始信息用于解析断言文件的过程中判定出断言从文件的哪个位置开始;所述期望值用于判定测试执行结果是否符合测试的要求。
步骤104,按照所述解析结果对所述初始测试数据执行断言处理。
按照步骤103解析完断言文件之后,将执行自动化的数据库断言,流程如下:
1)获取所述解析结果中的断言操作,并对所述初始测试数据执行该断言操作,得到执行结果;
例如,解析出来的断言操作为查询数据库操作,则对数据库中存储的初始测试数据进行查询,并得到查询结果。
2)将所述执行结果与所述解析结果中的期望值进行比较。
所述比较的目的是判定测试执行的结果是否符合预配置的期望值,如果两者相同,则说明测试执行结果达到了预期的测试要求;如果两者不同,则说明测试执行结果与预期的测试要求不符。
为了更形象地说明上述自动化断言处理,下面通过一个具体的例子进行说明。
1、配置断言文件
对于断言文件的配置,在实际应用中可通过声明的方式实现,即用户可以按照声明语句的格式自定义断言的内容。
例如,断言的配置如下:
其中,
①处为上述的断言判定的开始信息,|connect|表示断言文件的开始标识,默认以此数据开头的下述文字,都属于断言处理;
②处为上述的断言操作,|query|表示断言的动作,本例中表示执行一次查询;selectcount(*)as......这段表示执行动作的相应sql语句;
③处,表示输出需要断言的列;
④处为上述的执行该断言操作得到的期望值,表示输出期望的值,本例中表示期望查询出来的数据,总数量为1。
由上述声明式的配置方式可知,用户可以按照测试要求进行断言文件的配置。
2、解析断言文件
对于上述断言文件的解析,将按照图2所示流程进行。
参照图2,是本申请实施例所述一种声明式断言的解析流程图。
步骤201,读取声明式的断言文件;
步骤202,对所述断言文件进行逐行解析;
如果某一行以指定格式|connect|开头,则继续步骤203;否则,结束解析。
步骤203,解析下一行,如果以指定格式|query|开头,则解析其要执行的sql动作,本例中是解析|query|之后的sql语句,并存储在内存区域1中,继续步骤204;
否则,结束解析。
步骤204,解析下一行,获取期望的断言列和期望值,并存储在内存区域2中;
步骤205,解析下一行,若下一行以|connect|开头,则继续从步骤202开始,再次逐行解析,直到最后一个|connect|开头的结构解析完成。
3、自动化执行断言
根据上述解析结果执行自动化数据库断言。
参照图3,是本申请实施例所述一种执行自动化数据库断言的流程图。
步骤301,获取存储在内存区域1的sql语句,并执行;
步骤302,将步骤301的执行结果保存在内存区域3;
步骤303,将内容区域3的执行结果与解析断言文件时存储在内存区域2中的期望值进行对比。
最后,根据所述对比情况,还可以生成测试报告,供测试人员调试程序使用。
综上所述,本申请实施例提供的断言处理方法实现了声明式自定义断言和自动化数据库断言处理。测试人员可以在断言文件中声明各类所需要进行的断言操作,从测试的开始到结束,根据所配置好的断言文件即可完全自动化执行断言操作。因此,针对不同的测试用例,每次测试只需要编写配置断言文件即可,无需重新编写测试用例代码,大大提高了测试效率。而且,对于不了解具体编程语言的测试人员,还可以避免测试人员不具备开发技能而带来的一系列测试难度问题。
基于上述实施例的内容,本申请还提供了更加优选的实施例,具体如下。
在准备初始测试数据的过程中,现有技术采用人工准备的方式,即测试人员手动输入测试所需的各种数据,为后续的测试运行提供初始数据。当然,本申请中也可以采用人工的方式来完成数据初始化过程,得到初始测试数据。但是,人工准备测试数据的工作量较大,占用了测试工作中的大量时间,降低了测试效率。
因此,本申请在所述优选实施例中提出一种可配置的数据初始化方法,可实现自动化的数据准备。所述的数据初始化过程如下:
步骤1,根据测试请求读取初始化配置文件;
步骤2,解析所述初始化配置文件得到数据初始化配置信息;
步骤3,依据所述数据初始化配置信息执行相应的数据初始化操作,得到初始测试数据。
下面通过一个具体例子进行更详细地解释说明。
参照图4,是本申请实施例所述进行自动化数据准备的示意图。
如图所示,测试人员将初始化配置信息以sql脚本形式,保存至初始化配置文件中。
首先,断言系统根据测试请求读取所述初始化配置文件;
其次,将所述sql脚本形式的配置信息从所述初始化配置文件中解析出来;
再次,根据所述sql脚本形式的配置信息连接相应的数据库服务器(如图中的DB集群),并执行所述sql脚本。在执行sql脚本的过程中,断言系统向数据库服务器发送相应的初始化命令,如果所述初始化命令是执行查询操作,则将查询出的数据放入一个临时的内存区域;如果是执行添加、删除、修改等操作,则直接操作数据库。通过执行查询、添加、删除、修改等数据库操作命令,就可以完成数据初始化,最终得到存储在数据库中的初始测试数据。
由上可以看出,这种数据初始化配置的方式,根据解析获得的初始化配置信息就可以自动完成测试数据的准备工作,无需测试人员手动输入,从而进一步提高了测试效率。而且,所述数据初始化配置的方式更加灵活,可通过修改初始化配置文件来重新准备测试数据。
进一步,为了突出本申请的其他优点,本申请还提供了具体示例来实现图4所示的自动化数据准备。
在自动化数据准备过程中,初始化配置文件的设置至关重要,因为数据初始化的自动执行是依据所述初始化配置文件而完成。下面通过图5和图6的示例详细说明如何设置初始化配置文件。
1、数据结构的设计
参照图5,是本申请实施例所述初始化配置文件的数据结构示意图。
数据初始化涉及到的数据结构如图5所示,从数据结构上来看,本示例以xml形式的设计来承载一些初始化配置信息。图5所示的数据结构包括以下突出特点:
(1)所述数据初始化包括全局初始化和调用初始化:
若在初始化配置文件中设定全局初始化,则每次的测试用例都没有设置自己的数据初始化配置信息,默认使用全局的数据初始化配置信息,来进行测试数据的初始化工作;
若在初始化配置文件中设定调用初始化,则每次的测试用例都配置了初始化信息,而且会将全局的数据初始化配置信息覆盖掉,使用针对自己这次的数据初始化配置信息,来进行测试数据的初始化工作。
(2)所述数据初始化支持多数据源的数据初始化工作。
所述数据源是指提供某种所需数据的器件或原始媒体,如DB集群、数据库服务器等。
图5中以config为主要节点,表示每个数据源的相关配置信息。如果多个<config>配置同时存在,则表示支持多数据源的配置,每个<config>对应一个数据源的配置。
在config节点中,提供一些配置的属性,以达到对数据库进行配置的目的,如:
<configid=″a″jdbcUrl=″jdbc:mysql://localhost:3306/offer″
user=″ginge″password=″12345″>
</config>
对于<config>节点,若是其内部没有任何的<statement>节点,它所标识的意义就仅仅是声明一些数据库的配置信息,如上例。
若是<config>节点内部存在<statement>子节点,则表示通过config节点的配置,去执行内部子节点的sql语句,如:
config节点中提供的具体属性如下表1所示:
表1
如表1所示,如果设定全局初始化,则只需要设置config节点中的id,不需要设置jdbcUrl、user和password。如果设定调用初始化,则id、jdbcUrl、user和password都需要进行设置。
(3)所述数据初始化支持外部文件的读取。
由于数据的初始化可能涉及到很多个步骤,所以,可以设计一种树状结构,以statements为父节点,下面可以有多个statement节点,表示执行多条初始化的语句。例如:
<statement>deletefromofferwhereidin(2,7)</statement>
但是如果初始化过程比较长,本实施例还可以对数据结构进行扩展,提供将初始化过程语句放入外部文件中,提供批处理解析功能。所以,在statements节点中添加了名readFromFile的XML属性,用于扩展读取外部文件的功能。
简单而言,就是将大量的数据初始化配置信息放在外部文件中,同时在初始化配置文件中设置读取该外部文件的命令,这样在解析初始化配置文件的时候就可以通过读取该外部文件来获得数据初始化配置信息。
2、数据初始化动态参数的支持
基于图5所示的数据结构,还可以通过设置数据初始化动态参数,让初始化过程相互依赖。所述依赖是指,例如一条更新语句,可以依赖前一句查询语句的结果来做动态更新等。
对于某些特殊的数据初始化工作,每个步骤可能都依赖于前一个sql语句的执行,比如下面这种情况:
语句②中的values($id$,$name$)将需要用到语句①中$id$,$name$的值,语句②和语句①之间存在依赖,可以设定一种动态参数绑定机制来灵活实现这种依赖关系。
所述动态参数绑定机制可通过在初始化配置信息中自定义变量来实现,所述变量用于保存sql语句执行后的结果集。
具体步骤如下:
步骤1,用户根据sql语句需要获取的结果列,指定所对应的变量,用于存储返回的所述结果列;
例如,根据变量名(如$id$)与获取的结果列名(如id列)对应,将列中的结果存储至该变量中。
步骤2,建立一个键-值对的数据结构,用于存储变量与其所对应的数据;
步骤3,执行后续sql语句时,若解析该sql语句遇到某种特别标记,比如“$id$”,则将此标记对应的变量值读取出来,以便使用。
上述过程可通过图6表示。
参照图6,是本申请实施例所述数据初始化动态参数绑定机制的示意图。
简单而言,可在初始化配置文件中设置如上例代码所示的配置信息,其中语句②的执行将依赖于语句①的执行结果数据。
在数据初始化过程中,通过解析该初始化配置文件可以获得语句①,执行语句①,得到id=1,name=ivanzhang的结果,将该结果存储到对象池中。
当执行后续的语句②时,从所述对象池中读取id=1,name=ivanzhang。
上述这种动态参数机制使得配置更加灵活,实现了初始化过程的相互依赖。
综上所述,上述几个实施例均是以数据库的断言处理为例进行说明,但具体应用中也可以应用到其他进行断言的实例中,其实施原理与上述实施例相似,故不再赘述。
需要说明的是,对于前述的方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必须的。
基于上述方法实施例的说明,本申请还提供了相应的断言处理系统实施例,来实现上述方法实施例所述的内容。
参照图7,是本申请实施例所述一种测试中的断言处理系统结构图。
所述断言处理系统可以包括断言请求模块701、数据初始化模块702、断言解析模块703和断言解析模块703,其中:
断言请求模块701,用于接收测试请求;
数据初始化模块702,用于根据所述测试请求进行数据初始化,得到初始测试数据;
断言解析模块703,用于解析预配置的断言文件,得到解析结果;
断言处理模块704,用于按照所述解析结果对所述初始测试数据执行断言处理。
具体的,所述断言解析模块703可以将断言文件按照指定格式进行逐行解析,得到的解析结果包括断言操作以及执行该断言操作得到的期望值。详细的断言解析过程可参见图2所示流程。
基于所述的断言解析模块703,所述断言处理模块704进一步可以包括:
断言执行子模块7041,用于获取所述解析结果中的断言操作,并对所述初始测试数据执行该断言操作,得到执行结果;
比较子模块7042,用于将所述执行结果与所述解析结果中的期望值进行比较。如果两者相同,则说明测试执行结果达到了预期的测试要求;如果两者不同,则说明测试执行结果与预期的测试要求不符。
优选的,所述断言处理系统还可以包括:
报告生成模块705,用于根据比较子模块7042的比较结果生成报告,供测试人员使用。
优选的,所述断言处理系统还可以包括:
断言配置模块706,用于按照指定格式自定义断言文件,包括自定义断言判定的开始、断言操作和执行该断言操作得到的期望值。
综上所述,上述断言处理系统实现了自定义断言和自动化断言处理。利用所述断言处理系统,针对不同的测试用例,每次测试只需要编写配置断言文件即可,无需重新编写测试用例代码,大大提高了测试效率。
基于上述系统实施例,优选的,所述数据初始化模块702进一步可以包括:
读取子模块7021,用于根据所述测试请求读取初始化配置文件;
解析子模块7022,用于解析所述初始化配置文件得到数据初始化配置信息;
初始化子模块7023,依据所述数据初始化配置信息执行相应的数据初始化操作,得到初始测试数据。
例如,所述读取子模块7021根据所述测试请求读取初始化配置文件,所述初始化配置文件中包含以sql脚本形式保存的配置信息;所述解析子模块7022将所述sql脚本形式的配置信息从所述初始化配置文件中解析出来;所述初始化子模块7023根据所述sql脚本形式的配置信息连接相应的数据库服务器,并执行数据库操作命令,得到初始测试数据。
由上可以看出,所述数据初始化模块根据解析获得的初始化配置信息就可以自动完成测试数据的准备工作,无需测试人员手动输入,从而进一步提高了测试效率。
进一步,所述初始化子模块7023还可以包括:
全局初始化子模块,用于每次测试都默认使用全局的数据初始化配置信息;
调用初始化子模块,用于每次测试都使用针对自己的数据初始化配置信息。
而且,所述初始化子模块7023还支持多数据源的数据初始化,以及支持外部文件的读取。
而且,为了实现初始化的相互依赖,所述断言处理系统还可以包括:
初始化配置模块707,用于在初始化配置文件中自定义数据初始化配置信息,还用于当后续初始化操作语句的执行依赖于前面操作语句的执行结果时,在数据初始化配置信息中设置变量用于缓存所述前面操作语句的执行结果;
所述初始化子模块7023当执行所述后续初始化操作语句时,将所述缓存的执行结果读取。
这样,通过上述动态参数机制可以使得初始化的配置更加灵活。
为了使本领域技术人员更加了解上述断言处理系统,下面通过图8进行进一步的说明。
参照图8,是本申请实施例所述断言处理系统的整体处理流程示意图。
首先,由客户端(client)向断言处理系统(图中简称为断言系统)发起测试请求;
其次,断言处理系统调用数据初始化模块准备初始测试数据,从而完成测试之前的数据准备工作;
再次,断言处理系统调用断言解析模块解析自定义的断言文件;
最后,断言处理系统调用断言处理模块执行数据库操作,根据上述断言文件解析结果进行断言处理。
更详细的,还可以参见图9所示的断言处理系统的详细处理流程示意图。
对于测试之前的数据准备,断言处理系统首先调用配置初始化模块(即上述的解析子模块)解析初始化配置文件,得到的数据初始化配置信息;然后,初始化子模块根据数据初始化配置信息执行数据库命令,得到初始测试数据。
然后,断言处理系统调用断言解析模块解析断言文件,并调用断言处理模块依据断言解析结果执行断言处理;
最后,报告生成模块根据断言执行结果生成报告。
综上所述,所述断言处理系统可实现数据初始化配置、断言配置和断言的自动执行,提高了测试效率。
对于上述断言处理系统的实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
以上对本申请所提供的一种测试中的断言处理方法及系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种测试中的断言处理方法,其特征在于,包括:
接收测试请求;
根据所述测试请求进行数据初始化,得到初始测试数据;
解析预配置的断言文件,得到解析结果;
按照所述解析结果对所述初始测试数据执行断言处理;
其中,根据所述测试请求进行数据初始化得到初始测试数据,包括:
根据所述测试请求读取初始化配置文件;
解析所述初始化配置文件得到数据初始化配置信息;
依据所述数据初始化配置信息执行相应的数据初始化操作,得到初始测试数据;
断言文件中设置了断言处理的配置信息,所述解析预配置的断言文件得到解析结果,包括:
将断言文件按照指定格式进行逐行解析,得到的解析结果包括断言操作以及执行该断言操作得到的期望值;
按照所述解析结果对所述初始测试数据执行断言处理,包括:
获取所述解析结果中的断言操作,并对所述初始测试数据执行该断言操作,得到执行结果;
将所述执行结果与所述解析结果中的期望值进行比较,判定测试执行的结果是否符合预配置的期望值,如果两者相同,则测试执行结果达到预期的测试要求;如果两者不同,则测试执行结果与预期的测试要求不符。
2.根据权利要求1所述的方法,其特征在于,通过以下方式预配置断言文件:
按照指定格式自定义断言文件,包括自定义断言判定的开始、断言操作和执行该断言操作得到的期望值。
3.根据权利要求1所述的方法,其特征在于,根据所述测试请求进行数据初始化得到初始测试数据,包括:
根据所述测试请求读取初始化配置文件,所述初始化配置文件中包含以sql脚本形式保存的配置信息;
将所述sql脚本形式的配置信息从所述初始化配置文件中解析出来;
根据所述sql脚本形式的配置信息连接相应的数据库服务器,并执行数据库操作命令,得到初始测试数据。
4.根据权利要求1所述的方法,其特征在于:
所述数据初始化包括全局初始化和调用初始化:
若设定全局初始化,则每次测试都默认使用全局的数据初始化配置信息;
若设定调用初始化,则每次测试都使用针对测试用例的数据初始化配置信息。
5.根据权利要求1所述的方法,其特征在于:
数据初始化支持多数据源数据初始化,并支持外部文件的读取。
6.根据权利要求1所述的方法,其特征在于:
若后续初始化操作语句的执行依赖于前面操作语句的执行结果,则在数据初始化配置信息中,设置变量用于缓存所述前面操作语句的执行结果;
在数据初始化过程中,当执行所述后续初始化操作语句时,将所述缓存的执行结果读取。
7.一种测试中的断言处理系统,其特征在于,包括:
断言请求模块,用于接收测试请求;
数据初始化模块,用于根据所述测试请求进行数据初始化,得到初始测试数据;
断言解析模块,用于解析预配置的断言文件,得到解析结果;
断言处理模块,用于按照所述解析结果对所述初始测试数据执行断言处理;
其中,所述数据初始化模块包括:
读取子模块,用于根据所述测试请求读取初始化配置文件;
解析子模块,用于解析所述初始化配置文件得到数据初始化配置信息;
初始化子模块,依据所述数据初始化配置信息执行相应的数据初始化操作,得到初始测试数据;
断言文件中设置了断言处理的配置信息,所述断言解析模块将断言文件按照指定格式进行逐行解析,得到的解析结果包括断言操作以及执行该断言操作得到的期望值;
所述断言处理模块包括:
断言执行子模块,用于获取所述解析结果中的断言操作,并对所述初始测试数据执行该断言操作,得到执行结果;
比较子模块,用于将所述执行结果与所述解析结果中的期望值进行比较,判定测试执行的结果是否符合预配置的期望值,如果两者相同,则测试执行结果达到预期的测试要求;如果两者不同,则测试执行结果与预期的测试要求不符。
8.根据权利要求7所述的系统,其特征在于,还包括:
断言配置模块,用于按照指定格式自定义断言文件,包括自定义断言判定的开始、断言操作和执行该断言操作得到的期望值。
9.根据权利要求7所述的系统,其特征在于,所述初始化子模块还包括:
全局初始化子模块,用于每次测试都默认使用全局的数据初始化配置信息;
调用初始化子模块,用于每次测试都使用针对测试用例的数据初始化配置信息。
10.根据权利要求7所述的系统,其特征在于,还包括:
初始化配置模块,用于在后续初始化操作语句的执行依赖于前面操作语句的执行结果时,在数据初始化配置信息中,设置变量用于缓存所述前面操作语句的执行结果;
所述初始化子模块当执行所述后续初始化操作语句时,将所述缓存的执行结果读取。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110166591.6A CN102841841B (zh) | 2011-06-20 | 2011-06-20 | 一种测试中的断言处理方法及系统 |
HK13102448.9A HK1175274A1 (zh) | 2011-06-20 | 2013-02-27 | 種測試中的斷言處理方法及系統 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110166591.6A CN102841841B (zh) | 2011-06-20 | 2011-06-20 | 一种测试中的断言处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102841841A CN102841841A (zh) | 2012-12-26 |
CN102841841B true CN102841841B (zh) | 2016-06-01 |
Family
ID=47369232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110166591.6A Expired - Fee Related CN102841841B (zh) | 2011-06-20 | 2011-06-20 | 一种测试中的断言处理方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102841841B (zh) |
HK (1) | HK1175274A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020396B (zh) * | 2012-12-31 | 2016-04-06 | 青岛中星微电子有限公司 | 一种自动生成断言的方法及装置 |
CN103019745B (zh) * | 2012-12-31 | 2015-10-21 | 青岛中星微电子有限公司 | 一种自动生成断言的方法及装置 |
CN106560797B (zh) * | 2016-08-24 | 2019-07-02 | 北京安天网络安全技术有限公司 | 一种基于调试器的单元测试系统及方法 |
CN106598852A (zh) * | 2016-12-05 | 2017-04-26 | 广州唯品会信息科技有限公司 | 软件测试方法及系统 |
CN107122296B (zh) * | 2017-04-18 | 2020-06-19 | 上海雷腾软件股份有限公司 | 用于测试接口的数据断言的方法及设备 |
CN107402883B (zh) * | 2017-07-27 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 一种数据测试处理方法和装置 |
CN108614770B (zh) * | 2018-04-09 | 2021-08-27 | 中国工商银行股份有限公司 | 自动化测试断言方法、装置、存储介质及设备 |
CN108829584B (zh) * | 2018-05-24 | 2022-02-11 | 携程计算机技术(上海)有限公司 | 业务逻辑接口mock测试方法及系统 |
CN109101415A (zh) * | 2018-06-25 | 2018-12-28 | 平安科技(深圳)有限公司 | 基于数据库比对的接口测试方法、系统、设备和存储介质 |
CN109240933B (zh) * | 2018-09-28 | 2022-07-26 | 四川虹微技术有限公司 | 一种数据表操作结果断言方法 |
CN109522225B (zh) * | 2018-11-09 | 2022-06-07 | 网宿科技股份有限公司 | 一种自动化测试断言方法及装置、测试平台及存储介质 |
CN110232024B (zh) * | 2019-05-26 | 2020-02-28 | 必成汇(成都)科技有限公司 | 软件自动化测试框架及测试方法 |
CN110427188B (zh) * | 2019-08-02 | 2023-06-09 | 深圳前海微众银行股份有限公司 | 单测断言程序的配置方法、装置、设备及存储介质 |
CN110990250B (zh) * | 2019-10-12 | 2022-09-06 | 深圳平安医疗健康科技服务有限公司 | 接口测试方法、装置、设备及存储介质 |
CN112084786A (zh) * | 2020-08-03 | 2020-12-15 | 东北大学 | 基于dsl的网络配置文件测试方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101131714A (zh) * | 2006-10-09 | 2008-02-27 | 威盛电子股份有限公司 | 断言测试程序及方法 |
CN101158919A (zh) * | 2007-11-07 | 2008-04-09 | 中兴通讯股份有限公司 | 一种数据驱动的单元测试方法 |
CN101996132A (zh) * | 2009-08-14 | 2011-03-30 | 中兴通讯股份有限公司 | 公用对象请求代理程序体系结构接口自动测试方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7478365B2 (en) * | 2004-01-13 | 2009-01-13 | Symphony Services Corp. | Method and system for rule-based generation of automation test scripts from abstract test case representation |
-
2011
- 2011-06-20 CN CN201110166591.6A patent/CN102841841B/zh not_active Expired - Fee Related
-
2013
- 2013-02-27 HK HK13102448.9A patent/HK1175274A1/zh not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101131714A (zh) * | 2006-10-09 | 2008-02-27 | 威盛电子股份有限公司 | 断言测试程序及方法 |
CN101158919A (zh) * | 2007-11-07 | 2008-04-09 | 中兴通讯股份有限公司 | 一种数据驱动的单元测试方法 |
CN101996132A (zh) * | 2009-08-14 | 2011-03-30 | 中兴通讯股份有限公司 | 公用对象请求代理程序体系结构接口自动测试方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
HK1175274A1 (zh) | 2013-06-28 |
CN102841841A (zh) | 2012-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102841841B (zh) | 一种测试中的断言处理方法及系统 | |
US8464242B2 (en) | Virtualization of configuration settings | |
US9043757B2 (en) | Identifying differences between source codes of different versions of a software when each source code is organized using incorporated files | |
US8887135B2 (en) | Generating test cases for functional testing of a software application | |
US20080276224A1 (en) | Method and Apparatus for Completing Functional Testing | |
CN112765023B (zh) | 测试用例生成方法、装置 | |
WO2007101734A1 (en) | Plug-in update and management | |
CN107203465B (zh) | 系统接口测试方法及装置 | |
CN110515795B (zh) | 一种大数据组件的监控方法、装置、电子设备 | |
US11003668B2 (en) | Programming language independent software testing environment | |
EP4231138A1 (en) | Method and apparatus for fixing weak memory ordering problem | |
CN111615688A (zh) | 一种断言验证代码绑定方法及装置 | |
CN109284222B (zh) | 软件单元、数据处理系统中的项目测试方法、装置及设备 | |
US8738569B1 (en) | Systematic verification of database metadata upgrade | |
US10339151B2 (en) | Creating federated data source connectors | |
CN110895544A (zh) | 一种接口数据处理方法、装置、系统及存储介质 | |
CN112685210A (zh) | 一种外设故障原因定位方法、装置、设备及介质 | |
JP2013534347A (ja) | 高性能コンピューティングアプリケーションの実行のためのシステムおよび方法 | |
CN114201382A (zh) | 测试用例生成方法、装置、存储介质和电子设备 | |
CN111324373B (zh) | 多个工程文件上传代码仓库的方法及装置、计算设备 | |
TWI501152B (zh) | 用於簡化具有動態程式庫的介面之方法 | |
KR102141084B1 (ko) | 애플리케이션 프로그램 사용자 인터페이스 자동화 테스트 방법, 전자 기기, 시스템 및 저장 매체 | |
US10635416B2 (en) | Property filtering | |
CN103677846A (zh) | 一种SQLite数据库开发工具包及开发方法 | |
CN113110885A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1175274 Country of ref document: HK |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1175274 Country of ref document: HK |
|
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160601 |
|
CF01 | Termination of patent right due to non-payment of annual fee |