CN101989224B - 用于生成目标对象的测试值的方法和装置 - Google Patents
用于生成目标对象的测试值的方法和装置 Download PDFInfo
- Publication number
- CN101989224B CN101989224B CN 200910090103 CN200910090103A CN101989224B CN 101989224 B CN101989224 B CN 101989224B CN 200910090103 CN200910090103 CN 200910090103 CN 200910090103 A CN200910090103 A CN 200910090103A CN 101989224 B CN101989224 B CN 101989224B
- Authority
- CN
- China
- Prior art keywords
- character
- sampled values
- sampled
- sample
- stochastic process
- 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
Images
Landscapes
- Debugging And Monitoring (AREA)
- Maintenance And Management Of Digital Transmission (AREA)
Abstract
本发明涉及一种用于生成目标对象的测试值的方法和装置,其中,该方法包括步骤:生成一个随机过程;对所述生成的随机过程的预定数目的样本函数分别进行采样,得到多组采样值,其中,对所述预定数目的样本函数中的每一个样本函数进行采样得到的多个采样值形成所述多组采样值的其中一组采样值;圆整所述多组采样值中的各个采样值,以便所述多组采样值中的各个采样值都是整数;以及,根据基本字符集中的各个基本字符的标识码,将所述圆整后的多组采样值映射为多个字符串,作为所述目标对象的测试值。利用该方法和装置,可以在生成目标对象的测试值时不出现等效测试值。
Description
技术领域
本发明涉及软件测试,尤其涉及一种用于生成目标对象的测试值的方法和装置。
背景技术
通常,软件可以包括有函数(function)、模块(module)、组件(component)和/或程序包(package)。一般情况下,软件所包括的函数、模块、组件和程序包以及软件本身都是接收一个或多个输入并且根据所接收的一个或多个输入来执行特定的功能。在本文中,把软件所包括的函数、模块、组件和程序包以及软件本身都称作程序代码对象。
一个程序代码对象的输入可以来自其它程序代码对象和/或用户。通常,在程序代码对象之间和程序代码对象与用户之间使用通信协议来相互之间传送信息。通信协议一般通过各种消息来实现,每一种消息一般包括一个或者多个信息单元(也称为域或者字段),其中,每个信息单元携带一个作为接收该消息的程序代码对象的一个输入的信息。
现在,在软件正式使用之前,通常都会先对软件进行测试,其中,常用的自动化软件测试方法称作模糊测试(fuzz testing)。模糊测试通常在程序代码对象的输入的各种测试值下来执行程序代码对象,以观察程序代码对象针对每个输入的每种测试值的实际执行结果是否与对应于该测试值的期望结果一致,从而发现程序代码对象中存在的各种错误并改正这些错误。在进行模糊测试时,既可以通过直接生成程序代码对象的输入的测试值来测试程序代码对象,也可以生成程序代码对象所使用的通信协议的消息的信息单元的测试值来测试程序代码对象。也就是说,被生成测试值的目标对象可以是程序代码对象的输入和程序代码对象所使用的通信协议的消息的信息单元。
目前,在进行模糊测试时,通常采用正则表达式(regularexpression)来生成目标对象(程序代码对象的输入或程序代码对象所使用的通信协议的消息的信息单元)的测试值。然而,采用正则表达式来生成测试值会产生大量的等效测试值(equivalent input)。例如,以程序代码对象的一个输入为例,如果对于该输入的两个测试值“aaaaa”和“bbbbb”,该程序代码对象的执行结果是一样的,则“aaaaa”和“bbbbb”对于该程序代码对象来说就是等效测试值。大量的等效测试值会增加测试用例的数目,增大测试空间,从而导致测试时间和测试成本的增加。
发明内容
考虑到现有技术的上述问题,本发明的实施例提供一种用于生成目标对象的测试值的方法和装置,利用该方法和装置,可以在生成目标对象的测试值时不出现等效测试值。
按照本发明的一种用于生成目标对象的测试值的方法,所述目标对象是程序代码对象的输入或者程序代码对象所使用的通信协议的消息的信息单元,所述方法包括步骤:生成一个随机过程;对所述生成的随机过程的预定数目的样本函数分别进行采样,得到多组采样值,其中,对所述预定数目的样本函数中的每一个样本函数进行采样得到的多个采样值形成所述多组采样值的其中一组采样值;圆整所述多组采样值中的各个采样值,以便所述多组采样值中的各个采样值都是整数;以及,根据基本字符集中的各个基本字符的标识码,将所述圆整后的多组采样值映射为多个字符串,作为所述目标对象的测试值。
按照本发明的一种用于生成目标对象的测试值的装置,所述目标对象是程序代码对象的输入或者程序代码对象所使用的通信协议的消息的信息单元,所述装置包括:生成模块,用于生成一个随机过程;采样模块,用于对所述生成的随机过程的预定数目的样本函数分别进行多次采样,得到多组采样值,其中,对所述预定数目的样本函数中的每一个样本函数进行多次采样得到的多个采样值形成所述多组采样值的其中一组采样值;圆整模块,用于圆整所述多组采样值中的各个采样值,以便所述多组采样值中的各个采样值都是整数;以及,映射模块,用于根据基本字符集中的各个基本字符的标识码,将所述圆整后的多组采样值映射为多个字符串,作为所述目标对象的测试值。
附图说明
本发明的特点、特征和优点通过以下结合附图的详细描述将变得更加显而易见。其中:
图1是示出按照本发明第一实施例的用于生成程序代码对象所使用的通信协议的消息的信息单元的测试值的方法的流程图;以及
图2是示出按照本发明第二实施例的用于生成程序代码对象所使用的通信协议的消息的信息单元的测试值的方法的流程图。
具体实施方式
下面,结合附图详细说明本发明的各个实施例。
首先,以程序代码对象所使用的通信协议的消息的信息单元作为被生成测试值的目标对象来说明本发明的各个实施例。
图1是示出按照本发明第一实施例的用于生成程序代码对象所使用的通信协议的消息的信息单元的测试值的方法的流程图。如图1所示,首先,把基本字符集中的各个基本字符逐一编号,以便为基本字符集中的每一个基本字符分配一个唯一的标识码(步骤S100)。例如,以ASCII基本表作为基本字符集为例,ASCII基本表包括128个基本字符,其中,该128个基本字符包括33个非打印字符和94个可打印字符,该94个可打印字符进一步包括26个大写字母、26个小写字母、10个数字和32个特殊字符。把ASCII基本表中的128个基本字符按照从1到128的顺序逐一编号,从而ASCII基本表中的每一个基本字符都被分配一个唯一的范围在1-128内的标识码。
然后,生成一个高斯白噪声随机过程(步骤S110)。在这里,可以利用诸如Central Limit Theorem方法和Box-Muller方法等这样的方法来生成高斯白噪声随机过程。
接着,对所生成的高斯白噪声随机过程所包括的各个样本函数分别进行采样,得到多组样本值(步骤S120)。在这里,对每一个样本函数进行采样得到的多个样本值,形成该多组样本值的其中一组样本值。
接下来,圆整该多组样本值中的各个样本值,以便该多组样本值中的各个样本值都是整数(步骤S130)。在这里,圆整该多组样本值中的各个样本值可以采用四舍五入的方法来圆整或者采用直接去掉样本值中的小数部分的方法来圆整。
最后,根据基本字符集中的各个基本字符的标识码,将该圆整后的多组样本值映射成多个字符串,作为程序代码对象所使用的通信协议的消息的信息单元的测试值(步骤S140)。在这里,把圆整后的多组样本值中的每一组样本值映射成一个字符串。例如,假设其中一组样本值为[1,23,67,130],基本字符“a”的标识码为1,基本字符“s”的标识码为23,基本字符“P”的标识码为67,以及基本字符“9”的标识码为130,则该组样本值[1,23,67,130]所映射的字符串为“asP9”。
根据随机过程理论可以知道,高斯白噪声随机过程所包括的各个样本函数相互之间都是独立的,从而高斯白噪声随机过程所包括的各个样本函数分别采样得到的各组样本值所映射的各个字符串相互之间也是独立的,由此,把高斯白噪声随机过程所包括的各个样本函数分别采样得到的各组样本值所映射的各个字符串作为程序代码对象所使用的通信协议的消息的信息单元的测试值,不会出现等效测试值的情况。因此,采用本实施例的随机的方式来获取程序代码对象所使用的通信协议的消息的信息单元的测试值,能够避免出现等效输测试入值,从而减少测试用例的数目和测试空间,相应地减少测试时间和测试成本。
图2是示出按照本发明第二实施例的用于生成程序代码对象所使用的通信协议的消息的信息单元的测试值的方法的流程图。如图2所示,首先,按照基本字符集中的各个基本字符在编程时具有的不同作用,把基本字符集分成多个子集(步骤S200)。其中,每一个子集所包括的各个基本字符在编程时具有相同的作用。例如,将整个基本字符集标记为C,由整个基本字符集中的各个特殊基本字符组成的子集标记为Cs,由整个基本字符集中的各个普通基本字符组成的子集标记为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字符集中的其它特殊字符,例如、#、$等)以及Csp子集(包括程序代码对象所使用的通信协议使用的特殊字符)。
然后,步骤S210-S250被执行,以把高斯白噪声随机过程所包括的各个样本函数分别采样得到的多组样本值映射成多个字符串。本实施例的步骤S210-250分别对应于第一实施例中的步骤S100-S140。由于第一实施例已经详细描述了步骤S100-S140,所以在这里省略对步骤S210-250的描述。
接着,利用从由各个普通基本字符组成的子集Cx中选取的代表字符和由各个特殊基本字符组成的子集Cs,使用正则表达式来生成字符串(步骤S260),其中,该正则表达式应包含用于生成程序代码对象所使用的通信协议的消息的信息单元的边界值条件的正则表达式。例如,假设用于生成程序代码对象所使用的通信协议的消息的信息单元的边界值条件的正则表达式是“j8\Csc\Csf”,其中,正则表达式中的“j”和“8”分别是从由普通基本字符组成的子集Cx中的子集Ca和子集Cn提取的代表字符,正则表达式中的“\Csc”和“\Csf”分别表示Csc子字符集中的任一字符和Csf子字符集中的任一字符,则就可以利用子集Cx中的代表字符“j”和“8”以及子集Cs中的Csc和Csf,使用该正则表达式来生成字符串。
最后,把步骤S210-S250所得到的字符串和步骤S260所生成的字符串作为程序代码对象所使用的通信协议的消息的信息单元的测试值(步骤S270)。
由前一实施例的描述可知,把高斯白噪声随机过程所包括的各个样本函数分别采样得到的各组样本值所映射的各个字符串作为程序代码对象所使用的通信协议的消息的信息单元的测试值,即采用随机的方式来获取程序代码对象所使用的通信协议的消息的信息单元的测试值,能够避免出现等效测试值,从而减少测试案例的数目和测试空间,相应地减少测试时间和测试成本。此外,采用正则表达式能够生成使用随机的方式不能获取的程序代码对象所使用的通信协议的消息的信息单元的边界条件测试值。因此,在本实施例中,通过采用随机的方式和正则表达式的方式来获取程序代码对象所使用的通信协议的消息的信息单元的测试值,能够避免出现等效测试值,减少测试空间,同时能够保证测试空间的完备性。
其它变形
本领域技术人员应当理解,虽然在上面的各个实施例中,对高斯白噪声随机过程所包括的所有样本函数分别进行采样来获取多组样本值,然而,本发明并不局限于此。在本发明的其它一些实施例中,也可以只对高斯白噪声随机过程所包括的所有样本函数中的部分样本函数分别进行采样来获取多组样本值。
本领域技术人员应当理解,虽然在上面的各个实施例中,生成的是高斯白噪声随机过程,然而,本发明并不局限于此。在本发明的其它一些实施例中,也可以生成其它类型的随机过程,只要该生成的随机过程所包括的各个样本函数相互独立即可。
本领域技术人员应当理解,虽然在上面的第二实施例中,用于把基本字符集分成多个子集的步骤S200发生在所有其它步骤之前,然而,本发明并不局限于此。在本发明的其它一些实施例中,用于把基本字符集分成多个子集的步骤可以发生在步骤S260之前的任何一个时刻。
本领域技术人员应当理解,本发明的基本字符集既可以是ASCII基本表,也可以是其它类型的基本字符集。
本领域技术人员应当理解,虽然上面的各个实施例所公开的方法所针对的目标对象是程序代码对象所使用的通信协议的消息的信息单元,然而,本发明并不局限于此。事实上,上面的各个实施例所公开的方法所针对的目标对象也可以是程序代码对象的输入。
本领域技术人员应当理解,本发明各个实施例所公开的各个步骤,可以利用软件、硬件或者软硬件的方式来实现。
本领域技术人员应当理解,本发明的各个实施例可以在没有偏离发明实质的情况下做出各种变形和修改,并且这些变形和修改都应当位于本发明的保护范围之内。因此,本发明的保护范围由所附的权利要求书来定义。
Claims (10)
1.一种用于生成目标对象的测试值的方法,所述目标对象是程序代码对象的输入或者程序代码对象所使用的通信协议的消息的信息单元,所述方法包括步骤:
生成一个随机过程;
对所述生成的随机过程的预定数目的样本函数分别进行采样,得到多组采样值,其中,对所述预定数目的样本函数中的每一个样本函数进行采样得到的多个采样值形成所述多组采样值的其中一组采样值;
圆整所述多组采样值中的各个采样值,以便所述多组采样值中的各个采样值都是整数;以及
根据基本字符集中的各个基本字符的标识码,将所述圆整后的多组采样值映射为多个字符串,作为所述目标对象的测试值。
2.如权利要求1所述的方法,其中,所述随机过程是高斯白噪声随机过程。
3.如权利要求1所述的方法,其中,所述预定数目的样本函数是所述生成的随机过程的所有样本函数或部分样本函数。
4.如权利要求1所述的方法,其中,所述基本字符集合是ASCII基本表。
5.一种用于生成目标对象的测试值的方法,所述目标对象是程序代码对象的输入或者程序代码对象所使用的通信协议的消息的信息单元,所述方法包括步骤:
生成一个随机过程;
对所述生成的随机过程的预定数目的样本函数分别进行采样,得到多组采样值,其中,对所述预定数目的样本函数中的每一个样本函数进行采样得到的多个采样值形成所述多组采样值的其中一组采样值;
圆整所述多组采样值中的各个采样值,以便所述多组采样值中的各个采样值都是整数;以及
根据基本字符集中的各个基本字符的标识码,将所述圆整后的多组采样值映射为多个字符串;
从所述基本字符集中的各个普通基本字符组成的子集中选取代表字符,并且利用所述代表字符和所述基本字符集中的各个特殊基本字符组成的子集,使用用于生成所述目标对象的边界值条件的正则表达式来生成字符串;
将使用所述正则表达式生成的字符串与所映射的多个字符串一起作为所述目标对象的测试值。
6.一种用于生成目标对象的测试值的装置,所述目标对象是程序代码对象的输入或者程序代码对象所使用的通信协议的消息的信息单元,所述装置包括:
生成模块,用于生成一个随机过程;
采样模块,用于对所述生成的随机过程的预定数目的样本函数分别进行采样,得到多组采样值,其中,对所述预定数目的样本函数中的每一个样本函数进行采样得到的多个采样值形成所述多组采样值的其中一组采样值;
圆整模块,用于圆整所述多组采样值中的各个采样值,以便所述多组采样值中的各个采样值都是整数;以及
映射模块,用于根据基本字符集中的各个基本字符的标识码,将所述圆整后的多组采样值映射为多个字符串,作为所述目标对象的测试值。
7.如权利要求6所述的装置,其中,所述随机过程是高斯白噪声随机过程。
8.如权利要求6所述的装置,其中,所述预定数目的样本函数是所述生成的随机过程的所有样本函数或部分样本函数。
9.如权利要求6所述的装置,其中,所述基本字符集合是ASCII基本表。
10.一种用于生成目标对象的测试值的装置,所述目标对象是程序代码对象的输入或者程序代码对象所使用的通信协议的消息的信息单元,所述装置包括:
生成模块,用于生成一个随机过程;
采样模块,用于对所述生成的随机过程的预定数目的样本函数分别进行采样,得到多组采样值,其中,对所述预定数目的样本函数中的每一个样本函数进行采样得到的多个采样值形成所述多组采样值的其中一组采样值;
圆整模块,用于圆整所述多组采样值中的各个采样值,以便所述多组采样值中的各个采样值都是整数;
映射模块,用于根据基本字符集中的各个基本字符的标识码,将所述圆整后的多组采样值映射为多个字符串;以及
产生模块,用于从所述基本字符集中的各个普通基本字符组成的子集中选取代表字符;利用所述代表字符和所述基本字符集中的各个特殊基本字符组成的子集,使用用于生成所述目标对象的边界值条件的正则表达式来生成字符串;将使用所述正则表达式生成的字符串与利用所述随机过程得到的字符串一起作为所述目标对象的测试值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910090103 CN101989224B (zh) | 2009-07-31 | 2009-07-31 | 用于生成目标对象的测试值的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910090103 CN101989224B (zh) | 2009-07-31 | 2009-07-31 | 用于生成目标对象的测试值的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101989224A CN101989224A (zh) | 2011-03-23 |
CN101989224B true CN101989224B (zh) | 2013-04-03 |
Family
ID=43745766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910090103 Active CN101989224B (zh) | 2009-07-31 | 2009-07-31 | 用于生成目标对象的测试值的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101989224B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1965332A (zh) * | 2004-02-20 | 2007-05-16 | 西门子共同研究公司 | 利用鲁棒信息融合来基于多模组成部分地跟踪对象的方法和系统 |
CN101154182A (zh) * | 2006-09-25 | 2008-04-02 | 西门子(中国)有限公司 | 一种语法检查器 |
-
2009
- 2009-07-31 CN CN 200910090103 patent/CN101989224B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1965332A (zh) * | 2004-02-20 | 2007-05-16 | 西门子共同研究公司 | 利用鲁棒信息融合来基于多模组成部分地跟踪对象的方法和系统 |
CN101154182A (zh) * | 2006-09-25 | 2008-04-02 | 西门子(中国)有限公司 | 一种语法检查器 |
Also Published As
Publication number | Publication date |
---|---|
CN101989224A (zh) | 2011-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2901643B1 (en) | An apparatus for, a method of, and a network server for detecting data patterns in a data stream | |
CN104834603B (zh) | 一种面向回归测试的控制流变更影响域分析方法和系统 | |
US8255701B2 (en) | File encryption method | |
CN102195773B (zh) | 一种分组密码算法分析方法及系统 | |
CN104036187B (zh) | 计算机病毒类型确定方法及其系统 | |
CN112487253B (zh) | 用户邀请码生成方法、验证方法、装置、设备及存储介质 | |
CN110275695B (zh) | 非重复随机码生成方法、设备、存储介质及装置 | |
CN105718368A (zh) | 一种软件测试数据扩增方法 | |
CN112232171A (zh) | 基于随机森林的遥感影像信息提取方法、装置及存储介质 | |
CN105573843A (zh) | 一种数据处理方法和系统 | |
CN101989224B (zh) | 用于生成目标对象的测试值的方法和装置 | |
CN115689656B (zh) | 基于物联网的广告投放方法、装置、设备及存储介质 | |
CN109857740B (zh) | 字符串的存储方法、匹配方法、电子设备及可读存储介质 | |
TWI557647B (zh) | Two - dimensional code, generation method and recognition method with two - dimensional software installation information | |
CN111782507A (zh) | 数据测试方法、装置、存储介质及电子设备 | |
CN101719208B (zh) | 对病毒文件自动提取特征的方法和装置 | |
CN108108306B (zh) | 一种提高报文解析测试覆盖率的方法及系统 | |
CN110955603A (zh) | 自动化测试方法、装置、电子设备及计算机可读存储介质 | |
CN103136166A (zh) | 字体确定方法和设备 | |
CN106067876B (zh) | 一种基于模式匹配的http请求报文识别方法 | |
CN103257977A (zh) | 获取标识号码的方法及装置 | |
CN111127094B (zh) | 一种账户匹配方法、装置、电子设备和存储介质 | |
US20100262416A1 (en) | Computer and method for simulating an attention command test of a mobile phone | |
KR102451130B1 (ko) | 분산 클러스터 암호 해독 시스템 및 방법 | |
CN104616047A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |