报文交互的测试方法及装置转让专利

申请号 : CN201010570950.X

文献号 : CN102487340A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 袁世伦

申请人 : 中兴通讯股份有限公司

摘要 :

本发明公开了一种报文交互的测试方法及装置,该方法包括:获取报文交互的测试需求;根据测试需求,生成包括动态测试脚本的测试用例,其中动态测试脚本用于控制报文交互;使用测试用例,进行报文交互的测试。本发明可以实现用例执行过程自动化,提高用例执行效率,进而可以缩短产品开发周期,降低了产品成本。

权利要求 :

1.一种报文交互的测试方法,其特征在于,包括:获取报文交互的测试需求;

根据所述测试需求,生成包括动态测试脚本的测试用例,其中所述动态测试脚本用于控制所述报文交互;

使用所述测试用例,进行所述报文交互的测试。

2.根据权利要求1所述的方法,其特征在于,使用所述测试用例,进行所述报文交互的测试包括:读取所述测试用例;

解析所述动态测试脚本;

根据解析的所述动态测试脚本中的命令,进行所述报文交互的测试。

3.根据权利要求2所述的方法,其特征在于,所述动态测试脚本中的命令指示等待预先设定的消息;

根据解析的所述动态测试脚本中的命令,进行所述报文交互的测试包括:解码接收到的报文;

发送所述报文。

4.根据权利要求2所述的方法,其特征在于,所述动态测试脚本中的命令指示等待预先设定的时间;

根据解析的所述动态测试脚本中的命令,进行所述报文交互的测试包括:暂停所述报文交互的测试;

使用预先设置的计时器记录暂停时间;

确定所述暂停时间大于等于所述预先设定的时间或者接收到用于停止所述计时器的消息;

恢复所述报文交互的测试。

5.根据权利要求2所述的方法,其特征在于,根据解析的所述动态测试脚本中的命令,进行所述报文交互的测试包括:检验接收到的消息中的字段的数值是否与预先设定值相同;

使用接收到的消息中的字段的数值给预先设定的消息或者预先设定的字段赋值。

6.根据权利要求1所述的方法,其特征在于,所述测试用例还包括静态报文,所述静态报文包括用于指示原子字段的字段,其中所述原子字段用于指示发送所述原子字段的值;

使用所述测试用例,进行所述报文交互的测试包括:提取所述静态报文中的所述原子字段的值;

发送所述原子字段的值。

7.根据权利要求1所述的方法,其特征在于,根据所述测试需求,生成包括动态测试脚本的所述测试用例包括:根据所述测试需求,构造测试用例模板;

根据所述测试用例模板,生成包括动态测试脚本的所述测试用例。

8.根据权利要求7所述的方法,其特征在于,在根据所述测试需求,构造测试用例模板之后,所述方法还包括:在测试用例模板数据库中保存所述测试用例模板。

9.根据权利要求1至8中任一项所述的方法,其特征在于,在使用所述测试用例,进行所述报文交互的测试之后,所述方法还包括:生成测试结果;

归并所述测试结果或者对比所述测试结果。

10.一种报文交互的测试装置,其特征在于,包括:获取模块,用于获取报文交互的测试需求;

生成模块,用于根据所述测试需求,生成包括动态测试脚本的测试用例,其中所述动态测试脚本用于控制所述报文交互;

测试模块,用于使用所述测试用例,进行所述报文交互的测试。

说明书 :

报文交互的测试方法及装置

技术领域

[0001] 本发明涉及通信领域,具体而言,涉及一种报文交互的测试方法及装置。

背景技术

[0002] 随着电信技术的不断发展和电信业务的不断壮大,客户对业务系统的要求越来越严格,不仅要求业务系统功能强大,而且要求产品开发周期时间短,系统运行高效、可靠。为了检验一个产品或者系统是否满足规定的需求或是弄清预期结果与实际结果之间的差别,必须在产品推出之前进行一系列的系统测试。
[0003] 在一些智能化电子系统中,经常需要发送特定的报文给另外一个模块,这个模块处理这个报文后需要返回相关的信息给对方,这样需要测试两个模块之间报文的交互情况。而这个报文交互的测试用例表示方法是目前测试系统中的一大难题。
[0004] 传统的报文交互的测试系统只是向测试用例文件写了实际发送给设备的一串字节流,多个测试用例就用多个字节流文件来表示;而且手动控制每一个用例文件的执行。这种方式具有明显的缺点:编写字节流测试用例比较困难、很容易出错;用例可读行不强;无法控制报文的发送接收和跟踪报文交互情况;而且无法进行自动化测试。

发明内容

[0005] 针对相关技术中测试用例无法控制报文的发送接收和跟踪报文交互情况的问题而提出本发明,为此,本发明的主要目的在于提供一种报文交互的测试方法及装置,以解决上述问题。
[0006] 为了实现上述目的,根据本发明的一个方面,提供了一种报文交互的测试方法。
[0007] 根据本发明的报文交互的测试方法包括:获取报文交互的测试需求;根据测试需求,生成包括动态测试脚本的测试用例,其中动态测试脚本用于控制报文交互;使用测试用例,进行报文交互的测试。
[0008] 进一步地,使用测试用例,进行报文交互的测试包括:读取测试用例;解析动态测试脚本;根据解析的动态测试脚本中的命令,进行报文交互的测试。
[0009] 进一步地,动态测试脚本中的命令指示等待预先设定的消息;根据解析的动态测试脚本中的命令,进行报文交互的测试包括:解码接收到的报文;发送报文。
[0010] 进一步地,动态测试脚本中的命令指示等待预先设定的时间;根据解析的动态测试脚本中的命令,进行报文交互的测试包括:暂停报文交互的测试;使用预先设置的计时器记录暂停时间;确定暂停时间大于等于预先设定的时间或者接收到用于停止计时器的消息;恢复报文交互的测试。
[0011] 进一步地,根据解析的动态测试脚本中的命令,进行报文交互的测试包括:检验接收到的消息中的字段的数值是否与预先设定值相同;使用接收到的消息中的字段的数值给预先设定的消息或者预先设定的字段赋值。
[0012] 进一步地,测试用例还包括静态报文,静态报文包括用于指示原子字段的字段,其中原子字段用于指示发送原子字段的值;使用测试用例,进行报文交互的测试包括:提取静态报文中的原子字段的值;发送原子字段的值。
[0013] 进一步地,根据测试需求,生成包括动态测试脚本的测试用例包括:根据测试需求,构造测试用例模板;根据测试用例模板,生成包括动态测试脚本的测试用例。
[0014] 进一步地,在根据测试需求,构造测试用例模板之后,上述方法还包括:在测试用例模板数据库中保存测试用例模板。
[0015] 进一步地,在使用测试用例,进行报文交互的测试之后,上述方法还包括:生成测试结果;归并测试结果或者对比测试结果。
[0016] 为了实现上述目的,根据本发明的另一个方面,提供了一种报文交互的测试装置。
[0017] 根据本发明的报文交互的测试装置包括:获取模块,用于获取报文交互的测试需求;生成模块,用于根据测试需求,生成包括动态测试脚本的测试用例,其中动态测试脚本用于控制报文交互;测试模块,用于使用测试用例,进行报文交互的测试。
[0018] 通过本发明,采用可以控制报文交互的动态测试脚本,解决了相关技术中测试用例无法控制报文的发送接收和跟踪报文交互情况的问题,从而可以实现用例执行过程自动化,提高用例执行效率,进而可以缩短产品开发周期,降低了产品成本。

附图说明

[0019] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0020] 图1是根据本发明实施例的报文交互的测试方法的流程图;
[0021] 图2是根据本发明优选实施例的报文交互的测试方法的流程图;
[0022] 图3是根据本发明优选实施例的测试用例构造模块的示意图;
[0023] 图4是根据本发明优选实施例的测试用例生成模块的示意图;
[0024] 图5是根据本发明优选实施例的测试用例执行模块的示意图;
[0025] 图6是根据本发明优选实施例的测试结果生成与分析模块的示意图;
[0026] 图7是根据本发明实施例的报文交互的测试装置的结构框图。

具体实施方式

[0027] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0028] 本发明实施例提供了一种报文交互的测试方法,图1是根据本发明实施例的报文交互的测试方法的流程图,包括如下的步骤S 102至步骤S106。
[0029] 步骤S102,获取报文交互的测试需求。
[0030] 步骤S104,根据测试需求,生成包括动态测试脚本的测试用例,其中动态测试脚本用于控制报文交互。
[0031] 步骤S106,使用测试用例,进行报文交互的测试。
[0032] 相关技术中,测试用例无法控制报文的发送接收和跟踪报文交互情况。本发明实施例中引入了动态测试脚本,其可以控制报文交互,从而可以实现用例执行过程自动化,提高用例执行效率,进而可以缩短产品开发周期,降低了产品成本。
[0033] 优选地,使用测试用例,进行报文交互的测试包括:读取测试用例;解析动态测试脚本;根据解析的动态测试脚本中的命令,进行报文交互的测试。
[0034] 优选地,动态测试脚本中的命令指示等待预先设定的消息;根据解析的动态测试脚本中的命令,进行报文交互的测试包括:解码接收到的报文;发送报文。
[0035] 优选地,动态测试脚本中的命令指示等待预先设定的时间;根据解析的动态测试脚本中的命令,进行报文交互的测试包括:暂停报文交互的测试;使用预先设置的计时器记录暂停时间;确定暂停时间大于等于预先设定的时间或者接收到用于停止计时器的消息;恢复报文交互的测试。
[0036] 优选地,根据解析的动态测试脚本中的命令,进行报文交互的测试包括:检验接收到的消息中的字段的数值是否与预先设定值相同;使用接收到的消息中的字段的数值给预先设定的消息或者预先设定的字段赋值。
[0037] 优选地,测试用例还包括静态报文,静态报文包括用于指示原子字段的字段,其中原子字段用于指示发送原子字段的值;使用测试用例,进行报文交互的测试包括:提取静态报文中的原子字段的值;发送原子字段的值。
[0038] 优选地,根据测试需求,生成包括动态测试脚本的测试用例包括:根据测试需求,构造测试用例模板;根据测试用例模板,生成包括动态测试脚本的测试用例。
[0039] 本优选实施例中,通过构造测试用例模板,可以节约编辑相类似的测试用例的时间,从而提高测试用例的编写效率。
[0040] 优选地,在根据测试需求,构造测试用例模板之后,上述方法还包括:在测试用例模板数据库中保存测试用例模板。
[0041] 优选地,在使用测试用例,进行报文交互的测试之后,上述方法还包括:生成测试结果;归并测试结果或者对比测试结果。
[0042] 下面将结合实例对本发明实施例的实现过程进行详细描述。
[0043] 图2是根据本发明优选实施例的报文交互的测试方法的流程图,如图2所示,包括如下的步骤S202至步骤S210。
[0044] 步骤S202,测试报文需求分析。
[0045] 步骤S204,测试用例构造。
[0046] 步骤S206,测试用例生成。
[0047] 步骤S208,测试用例执行。
[0048] 步骤S210,测试结果生成与分析。
[0049] 上述步骤S202至步骤S210可以分别通过测试用例构造模块、测试用例生成模块、测试用例执行模块和测试结果生成与分析模块而实现。
[0050] 图3是根据本发明优选实施例的测试用例构造模块的示意图,如图3所示,测试用例构造模块主要由以下三个部分构成:用例模板构造器、用例模板、用例模板数据库。下面对其进行具体描述。
[0051] 用例模板构造器根据用例报文需求,分析报文结构特点,构造用例模板;构造好的用例模板可以存放在用例模板数据库中。
[0052] 图4是根据本发明优选实施例的测试用例生成模块的示意图,如图4所示,测试用例生成模块主要作用是根据构造好的用例模板生成一定格式的测试用例文件,该用例文件由三部分组成:用例标识,静态报文,动态测试脚本。下面对其进行具体描述。
[0053] ①、用例标识:用于唯一标识一个用例,在本发明中,它由用例消息名称,用例命令号,用例ID组成。
[0054] ②、静态报文:用于表示与对方交互的具体报文。每一个用例文件都有静态报文,静态报文由一些行组成,每行有以下字段:在树形显示结构中所属层次、是否原子字段、字段友好名称、字段数据类型、本字段第一个字节的索引、本字段长度、本字段值(用十六进制表示)。其中是否原子字段表示是否将本字段的值发送给对方,如果是原子字段,则本字段值要发送给对方;如果不是原子字段,则此字段只是用于显示报文的层次和表示报文结构名称,其值无意义,不会发送给对方。
[0055] ③、动态测试脚本是测试用例的核心,它控制着报文的交互,接收与发送相关报文、判断报文中某一个字段的值、延时一段时间、等待某个报文的到来等。
[0056] 在本发明中,定义了一组系统脚本库命令,测试用例中的动态测试脚本由系统脚本库中一些脚本命令组成。
[0057] 下面介绍本发明中的系统脚本命令库:
[0058] 1)Domain和EndDomain脚本命令。它们用来界定一个域的范围。域是测试用例动态区的基本单位,使用域将用例的执行流程按时间段划分开。一个域中描述一个时刻要进行的所有操作。EndDomain总是和Domain配套使用,Domain后面的()里,需要设置域的编号,编号一般从0开始。
[0059] 2)Case脚本命令。它代表等待接收的某个激励消息,激励可以是被测对象发来的消息或定时器到时消息。
[0060] 3)NextStep脚本命令。它用来表示收到对应的消息并执行完操作后下一步要进入的域。NextStep总是和Case配套使用。NextStep后面的括号里,填写下一步要进入的域的编号,如果是最后一个域中的最后一条消息,即收到该消息就结束用例则在括号中填入NULL。
[0061] 4)Associate脚本命令。它用于关联几个消息,一个域中可能需要同时等待多条消息,并且几条消息相互之间没有严格时间顺序,关联后这几个消息构成一个组,只有在组中所有激励消息全部到达并处理完以后才会跳到预定的下一个域。一个域中可以定义多组相关联的消息。
[0062] 5)定时器脚本命令。定时器的操作分为两种,启动和停止,即为StartTimer和StopTimer命令。启动一个定时器时除了说明定时器名称还要说明时长和类型。目前Timer有两种类型:分别为0和1。类型0是超时定时器,如果这种定时器到时说明流程执行超时,这时用例以执行失败退出。类型1是延时定时器,这种定时器到时后会发送一个和Timer名字一样的激励并执行相关的操作。延时计时器应该与case配合使用。
[0063] 6)Check脚本命令。它用于检验收到的消息的某个字段的数值是否符合预期值,这时要求参数的预期值必须已经存储在静态区的某个消息结构中,用户在使用时需要指示出待检查消息的字段位置以及保存预期值的消息的字段位置。
[0064] 7)Assign脚本命令。它用于给特定消息或特定字段赋值,通常用于在接收到一条消息后把消息的某个字段值取出来赋给下面要发送消息的对应字段,也可以整条消息赋值。
[0065] 8)Send脚本命令。它用来表示向被测对象发送报文消息。
[0066] 图5是根据本发明优选实施例的测试用例执行模块的示意图,如图5所示,测试用例执行模块是本发明中的核心部分,它控制着测试用例自动化执行与测试结果的生成。它由下面几个部分组成:动态脚本解析模块,字节流提取模块,通信适配模块,测试控制模块。下面对其进行具体描述。
[0067] 动态脚本解析模块:用于解析脚本并执行相关命令。
[0068] 字节流提取模块:用于测试用例文件中存放的是用例标识、静态报文、动态脚本命令,字节流提取模块从静态报文中提取出原子字段的值。
[0069] 通信适配模块:用于控制消息包编码和发送,控制消息包的接收和解码。
[0070] 测试控制模块:用于控制执行测试方案中的测试用例,发送相关命令给结果生成器,调用结果归并和对比模块。
[0071] 在本发明中,一个完善的测试方案由一组有先后顺序的测试用例文件组成。如图5所示,当执行测试方案时,测试控制模块依次读取测试用例文件,调用动态脚本解析模块来解析里面的动态脚本,然后根据脚本命令执行相关的脚本。
[0072] a)当解析到要发送报文时,它调用字节流提取模块来提取静态报文中的原子字段的值,然后调用通信适配模块把消息包编码发送给对方。
[0073] b)当解析到要等待一个消息的到来时,它调用通信适配模块解码接收到的报文然后将此报文发送到需要的地方。
[0074] c)当解析到要等待一段时间时,测试控制模块挂起整个用例的执行,当等待超时或者接收到停止计时器命令时继续测试用例的执行。
[0075] d)当解析到Check脚本命令或者Assign脚本命令时,它将检验收到的消息的某个字段的数值是否符合预期值,或者给特定消息或特定字段赋值。
[0076] 测试控制模块执行完测试用例后,将调用测试结果生成与分析相关模块生成测试结果归并或者对比测试结果。
[0077] 图6是根据本发明优选实施例的测试结果生成与分析模块的示意图,如图6所示,测试结果生成与分析模块主要作用是生成测试结果并归并或者对比测试结果,它包括三个部分:测试结果生成器,结果归并模块,结果对比模块。其具体工作过程为:
[0078] a,测试控制模块每次发送、接收报文或者做其他处理时,它向测试结果生成器发送记录命令,通知测试结果生成器记录测试报文交互情况;
[0079] b,测试结果生成器接收测试控制器发送来的记录命令,按照一定的方式记录发送和接收的报文;
[0080] c,当一个测试方案执行完成时,测试控制器搜索是否已经归并了该方案的测试结果。如果没有归并,则向结果归并模块发送归并命令,通知结果归并模块归并相关测试结果,否则转d;
[0081] d,如果已经归并了测试结果,则测试控制器向结果对比模块发送对比命令,通知结果对比模块对比现在的测试结果与以前归并的测试结果之间的差异。
[0082] 以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等、均应包含在本发明的保护范围之内。
[0083] 本发明实施例提供了一种报文交互的测试装置,该报文交互的测试装置可以用于实现上述报文交互的测试方法。图7是根据本发明实施例的报文交互的测试装置的结构框图,包括获取模块72,生成模块74和测试模块76。下面对其进行详细描述。
[0084] 获取模块72,用于获取报文交互的测试需求;生成模块74,连接至获取模块72,用于根据获取模块72获取的测试需求,生成包括动态测试脚本的测试用例,其中动态测试脚本用于控制报文交互;测试模块76,连接至生成模块74,用于使用生成模块74生成的测试用例,进行报文交互的测试。
[0085] 相关技术中,测试用例无法控制报文的发送接收和跟踪报文交互情况。本发明实施例中引入了动态测试脚本,其可以控制报文交互,从而可以实现用例执行过程自动化,提高用例执行效率,进而可以缩短产品开发周期,降低了产品成本。
[0086] 需要说明的是,装置实施例中描述的报文交互的测试装置对应于上述的方法实施例,其具体的实现过程在方法实施例中已经进行过详细说明,在此不再赘述。
[0087] 综上所述,根据本发明的上述实施例,提供了一种报文交互的测试方法及装置。通过采用可以控制报文交互的动态测试脚本,解决了相关技术中测试用例无法控制报文的发送接收和跟踪报文交互情况的问题,从而可以实现用例执行过程自动化,提高用例执行效率,进而可以缩短产品开发周期,降低了产品成本。
[0088] 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0089] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。