《用于生成目标对象的测试值的方法和装置.pdf》由会员分享,可在线阅读,更多相关《用于生成目标对象的测试值的方法和装置.pdf(9页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN101989224A43申请公布日20110323CN101989224ACN101989224A21申请号200910090103022申请日20090731G06F11/3620060171申请人西门子中国有限公司地址100102北京市朝阳区望京中环南路7号72发明人隋爱芬郭代飞54发明名称用于生成目标对象的测试值的方法和装置57摘要本发明涉及一种用于生成目标对象的测试值的方法和装置,其中,该方法包括步骤生成一个随机过程;对所述生成的随机过程的预定数目的样本函数分别进行采样,得到多组采样值,其中,对所述预定数目的样本函数中的每一个样本函数进行采样得到的多个采样值形成所述多。
2、组采样值的其中一组采样值;圆整所述多组采样值中的各个采样值,以便所述多组采样值中的各个采样值都是整数;以及,根据基本字符集中的各个基本字符的标识码,将所述圆整后的多组采样值映射为多个字符串,作为所述目标对象的测试值。利用该方法和装置,可以在生成目标对象的测试值时不出现等效测试值。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书4页附图2页CN101989224A1/2页21一种用于生成目标对象的测试值的方法,包括步骤生成一个随机过程;对所述生成的随机过程的预定数目的样本函数分别进行采样,得到多组采样值,其中,对所述预定数目的样本函数中的每一个样本函数进行采样得。
3、到的多个采样值形成所述多组采样值的其中一组采样值;圆整所述多组采样值中的各个采样值,以便所述多组采样值中的各个采样值都是整数;以及根据基本字符集中的各个基本字符的标识码,将所述圆整后的多组采样值映射为多个字符串,作为所述目标对象的测试值。2如权利要求1所述的方法,其中,还包括步骤利用从由所述基本字符集中的各个普通基本字符组成的子集中选取的代表字符和由所述基本字符集中的各个特殊基本字符组成的子集,使用用于生成所述目标对象的边界值条件的正则表达式来生成字符串,作为所述目标对象的测试值。3如权利要求1所述的方法,其中,所述随机过程是高斯白噪声随机过程。4如权利要求1所述的方法,其中,所述预定数目的样。
4、本函数是所述生成的随机过程的所有样本函数或部分样本函数。5如权利要求1所述的方法,其中,所述基本字符集合是ASCII基本表。6如权利要求1所述的方法,其中,所述目标对象是程序代码对象的输入或者程序代码对象所使用的通信协议的消息的信息单元。7一种用于生成目标对象的测试值的装置,包括生成模块,用于生成一个随机过程;采样模块,用于对所述生成的随机过程的预定数目的样本函数分别进行多次采样,得到多组采样值,其中,对所述预定数目的样本函数中的每一个样本函数进行多次采样得到的多个采样值形成所述多组采样值的其中一组采样值;圆整模块,用于圆整所述多组采样值中的各个采样值,以便所述多组采样值中的各个采样值都是整数。
5、;以及映射模块,用于根据基本字符集中的各个基本字符的标识码,将所述圆整后的多组采样值映射为多个字符串,作为所述目标对象的测试值。8如权利要求7所述的装置,其中,还包括产生模块,用于利用从由所述基本字符集中的各个普通基本字符组成的子集中选取的代表字符和由所述基本字符集中的各个特殊基本字符组成的子集,使用用于生成所述目标对象的边界值条件的正则表达式来生成字符串,作为所述目标对象的测试值。9如权利要求7所述的装置,其中,所述随机过程是高斯白噪声随机过程。10如权利要求7所述的装置,其中,所述预定数目的样本函数是所述生成的随机过程的所有样本函数或部分样本函数。11如权利要求7所述的装置,其中,所述基本。
6、字符集合是ASCII基本表。12如权利要求7所述的装置,其中,所述目标对象是程序代码对象的输入或者程序代码对象所使用的通信协议的消息的信息单元。13一种机器可读介质,其上存储有程序指令,当所述程序指令被执行时,使机器执行权利要求书CN101989224A2/2页3权利要求16中任意一个权利要求所记载的步骤。权利要求书CN101989224A1/4页4用于生成目标对象的测试值的方法和装置技术领域0001本发明涉及软件测试,尤其涉及一种用于生成目标对象的测试值的方法和装置。背景技术0002通常,软件可以包括有函数FUNCTION、模块MODULE、组件COMPONENT和/或程序包PACKAGE。。
7、一般情况下,软件所包括的函数、模块、组件和程序包以及软件本身都是接收一个或多个输入并且根据所接收的一个或多个输入来执行特定的功能。在本文中,把软件所包括的函数、模块、组件和程序包以及软件本身都称作程序代码对象。0003一个程序代码对象的输入可以来自其它程序代码对象和/或用户。通常,在程序代码对象之间和程序代码对象与用户之间使用通信协议来相互之间传送信息。通信协议一般通过各种消息来实现,每一种消息一般包括一个或者多个信息单元也称为域或者字段,其中,每个信息单元携带一个作为接收该消息的程序代码对象的一个输入的信息。0004现在,在软件正式使用之前,通常都会先对软件进行测试,其中,常用的自动化软件测。
8、试方法称作模糊测试FUZZTESTING。模糊测试通常在程序代码对象的输入的各种测试值下来执行程序代码对象,以观察程序代码对象针对每个输入的每种测试值的实际执行结果是否与对应于该测试值的期望结果一致,从而发现程序代码对象中存在的各种错误并改正这些错误。在进行模糊测试时,既可以通过直接生成程序代码对象的输入的测试值来测试程序代码对象,也可以生成程序代码对象所使用的通信协议的消息的信息单元的测试值来测试程序代码对象。也就是说,被生成测试值的目标对象可以是程序代码对象的输入和程序代码对象所使用的通信协议的消息的信息单元。0005目前,在进行模糊测试时,通常采用正则表达式REGULAREXPRESSI。
9、ON来生成目标对象程序代码对象的输入或程序代码对象所使用的通信协议的消息的信息单元的测试值。然而,采用正则表达式来生成测试值会产生大量的等效测试值EQUIVALENTINPUT。例如,以程序代码对象的一个输入为例,如果对于该输入的两个测试值“AAAAA”和“BBBBB”,该程序代码对象的执行结果是一样的,则“AAAAA”和“BBBBB”对于该程序代码对象来说就是等效测试值。大量的等效测试值会增加测试用例的数目,增大测试空间,从而导致测试时间和测试成本的增加。发明内容0006考虑到现有技术的上述问题,本发明的实施例提供一种用于生成目标对象的测试值的方法和装置,利用该方法和装置,可以在生成目标对象。
10、的测试值时不出现等效测试值。0007按照本发明的一种用于生成目标对象的测试值的方法,包括步骤生成一个随机过程;对所述生成的随机过程的预定数目的样本函数分别进行采样,得到多组采样值,其中,对所述预定数目的样本函数中的每一个样本函数进行采样得到的多个采样值形成所述多组采样值的其中一组采样值;圆整所述多组采样值中的各个采样值,以便所述多组采样值中的各个采样值都是整数;以及,根据基本字符集中的各个基本字符的标识码,将所述圆说明书CN101989224A2/4页5整后的多组采样值映射为多个字符串,作为所述目标对象的测试值。0008按照本发明的一种用于生成目标对象的测试值的装置,包括生成模块,用于生成一个。
11、随机过程;采样模块,用于对所述生成的随机过程的预定数目的样本函数分别进行多次采样,得到多组采样值,其中,对所述预定数目的样本函数中的每一个样本函数进行多次采样得到的多个采样值形成所述多组采样值的其中一组采样值;圆整模块,用于圆整所述多组采样值中的各个采样值,以便所述多组采样值中的各个采样值都是整数;以及,映射模块,用于根据基本字符集中的各个基本字符的标识码,将所述圆整后的多组采样值映射为多个字符串,作为所述目标对象的测试值。附图说明0009本发明的特点、特征和优点通过以下结合附图的详细描述将变得更加显而易见。其中0010图1是示出按照本发明第一实施例的用于生成程序代码对象所使用的通信协议的消息。
12、的信息单元的测试值的方法的流程图;以及0011图2是示出按照本发明第二实施例的用于生成程序代码对象所使用的通信协议的消息的信息单元的测试值的方法的流程图。具体实施方式0012下面,结合附图详细说明本发明的各个实施例。0013首先,以程序代码对象所使用的通信协议的消息的信息单元作为被生成测试值的目标对象来说明本发明的各个实施例。0014图1是示出按照本发明第一实施例的用于生成程序代码对象所使用的通信协议的消息的信息单元的测试值的方法的流程图。如图1所示,首先,把基本字符集中的各个基本字符逐一编号,以便为基本字符集中的每一个基本字符分配一个唯一的标识码步骤S100。例如,以ASCII基本表作为基本。
13、字符集为例,ASCII基本表包括128个基本字符,其中,该128个基本字符包括33个非打印字符和94个可打印字符,该94个可打印字符进一步包括26个大写字母、26个小写字母、10个数字和32个特殊字符。把ASCII基本表中的128个基本字符按照从1到128的顺序逐一编号,从而ASCII基本表中的每一个基本字符都被分配一个唯一的范围在1128内的标识码。0015然后,生成一个高斯白噪声随机过程步骤S110。在这里,可以利用诸如CENTRALLIMITTHEOREM方法和BOXMULLER方法等这样的方法来生成高斯白噪声随机过程。0016接着,对所生成的高斯白噪声随机过程所包括的各个样本函数分别进。
14、行采样,得到多组样本值步骤S120。在这里,对每一个样本函数进行采样得到的多个样本值,形成该多组样本值的其中一组样本值。0017接下来,圆整该多组样本值中的各个样本值,以便该多组样本值中的各个样本值都是整数步骤S130。在这里,圆整该多组样本值中的各个样本值可以采用四舍五入的方法来圆整或者采用直接去掉样本值中的小数部分的方法来圆整。0018最后,根据基本字符集中的各个基本字符的标识码,将该圆整后的多组样本值映射成多个字符串,作为程序代码对象所使用的通信协议的消息的信息单元的测试值步骤说明书CN101989224A3/4页6S140。在这里,把圆整后的多组样本值中的每一组样本值映射成一个字符串。。
15、例如,假设其中一组样本值为1,23,67,130,基本字符“A”的标识码为1,基本字符“S”的标识码为23,基本字符“P”的标识码为67,以及基本字符“9”的标识码为130,则该组样本值1,23,67,130所映射的字符串为“ASP9”。0019根据随机过程理论可以知道,高斯白噪声随机过程所包括的各个样本函数相互之间都是独立的,从而高斯白噪声随机过程所包括的各个样本函数分别采样得到的各组样本值所映射的各个字符串相互之间也是独立的,由此,把高斯白噪声随机过程所包括的各个样本函数分别采样得到的各组样本值所映射的各个字符串作为程序代码对象所使用的通信协议的消息的信息单元的测试值,不会出现等效测试值的。
16、情况。因此,采用本实施例的随机的方式来获取程序代码对象所使用的通信协议的消息的信息单元的测试值,能够避免出现等效输测试入值,从而减少测试用例的数目和测试空间,相应地减少测试时间和测试成本。0020图2是示出按照本发明第二实施例的用于生成程序代码对象所使用的通信协议的消息的信息单元的测试值的方法的流程图。如图2所示,首先,按照基本字符集中的各个基本字符在编程时具有的不同作用,把基本字符集分成多个子集步骤S200。其中,每一个子集所包括的各个基本字符在编程时具有相同的作用。例如,将整个基本字符集标记为C,由整个基本字符集中的各个特殊基本字符组成的子集标记为CS,由整个基本字符集中的各个普通基本字符。
17、组成的子集标记为CX,其中,子集CS和CX还可以分别进一步分成多个子集。以ASCII基本表作为基本字符集和使用C编程语言来编制程序代码对象为例,可以把ASCII字符集分为由各个普通基本字符ASCII字符集中的字母和数字组成的子集CX和由各个特殊基本字符ASCII字符集中除了字母和数字之外的字符组成的子集CS,其中,子集CX进一步分成CA子集包括ASCII字符集中的26个大写字母和26个小写字母和CN子集包括ASCII字符集的各个数字,以及子集CS进一步分成CSC子集包括ASCII字符集中C编程语言专门使用的特殊字符,例如/T、/N等、CSF子集包括ASCII字符集中的其它特殊字符,例如、等以及。
18、CSP子集包括程序代码对象所使用的通信协议使用的特殊字符。0021然后,步骤S210S250被执行,以把高斯白噪声随机过程所包括的各个样本函数分别采样得到的多组样本值映射成多个字符串。本实施例的步骤S210250分别对应于第一实施例中的步骤S100S140。由于第一实施例已经详细描述了步骤S100S140,所以在这里省略对步骤S210250的描述。0022接着,利用从由各个普通基本字符组成的子集CX中选取的代表字符和由各个特殊基本字符组成的子集CS,使用正则表达式来生成字符串步骤S260,其中,该正则表达式应包含用于生成程序代码对象所使用的通信协议的消息的信息单元的边界值条件的正则表达式。例如。
19、,假设用于生成程序代码对象所使用的通信协议的消息的信息单元的边界值条件的正则表达式是“J8CSCCSF”,其中,正则表达式中的“J”和“8”分别是从由普通基本字符组成的子集CX中的子集CA和子集CN提取的代表字符,正则表达式中的“CSC”和“CSF”分别表示CSC子字符集中的任一字符和CSF子字符集中的任一字符,则就可以利用子集CX中的代表字符“J”和“8”以及子集CS中的CSC和CSF,使用该正则表达式来生成字符串。说明书CN101989224A4/4页70023最后,把步骤S210S250所得到的字符串和步骤S260所生成的字符串作为程序代码对象所使用的通信协议的消息的信息单元的测试值步骤。
20、S270。0024由前一实施例的描述可知,把高斯白噪声随机过程所包括的各个样本函数分别采样得到的各组样本值所映射的各个字符串作为程序代码对象所使用的通信协议的消息的信息单元的测试值,即采用随机的方式来获取程序代码对象所使用的通信协议的消息的信息单元的测试值,能够避免出现等效测试值,从而减少测试案例的数目和测试空间,相应地减少测试时间和测试成本。此外,采用正则表达式能够生成使用随机的方式不能获取的程序代码对象所使用的通信协议的消息的信息单元的边界条件测试值。因此,在本实施例中,通过采用随机的方式和正则表达式的方式来获取程序代码对象所使用的通信协议的消息的信息单元的测试值,能够避免出现等效测试值,。
21、减少测试空间,同时能够保证测试空间的完备性。0025其它变形0026本领域技术人员应当理解,虽然在上面的各个实施例中,对高斯白噪声随机过程所包括的所有样本函数分别进行采样来获取多组样本值,然而,本发明并不局限于此。在本发明的其它一些实施例中,也可以只对高斯白噪声随机过程所包括的所有样本函数中的部分样本函数分别进行采样来获取多组样本值。0027本领域技术人员应当理解,虽然在上面的各个实施例中,生成的是高斯白噪声随机过程,然而,本发明并不局限于此。在本发明的其它一些实施例中,也可以生成其它类型的随机过程,只要该生成的随机过程所包括的各个样本函数相互独立即可。0028本领域技术人员应当理解,虽然在上。
22、面的第二实施例中,用于把基本字符集分成多个子集的步骤S200发生在所有其它步骤之前,然而,本发明并不局限于此。在本发明的其它一些实施例中,用于把基本字符集分成多个子集的步骤可以发生在步骤S260之前的任何一个时刻。0029本领域技术人员应当理解,本发明的基本字符集既可以是ASCII基本表,也可以是其它类型的基本字符集。0030本领域技术人员应当理解,虽然上面的各个实施例所公开的方法所针对的目标对象是程序代码对象所使用的通信协议的消息的信息单元,然而,本发明并不局限于此。事实上,上面的各个实施例所公开的方法所针对的目标对象也可以是程序代码对象的输入。0031本领域技术人员应当理解,本发明各个实施例所公开的各个步骤,可以利用软件、硬件或者软硬件的方式来实现。0032本领域技术人员应当理解,本发明的各个实施例可以在没有偏离发明实质的情况下做出各种变形和修改,并且这些变形和修改都应当位于本发明的保护范围之内。因此,本发明的保护范围由所附的权利要求书来定义。说明书CN101989224A1/2页8图1说明书附图CN101989224A2/2页9图2说明书附图。