使用有目标的变量输入来测试数据格式的系统和方法

文档序号:7952163阅读:156来源:国知局
专利名称:使用有目标的变量输入来测试数据格式的系统和方法
技术领域
本发明涉及数据格式开发领域,尤其涉及测试数据格式来针对安全问题和其它缺陷进行保护。
背景技术
在常规的计算机网络中,编译、储存并在多个不同的计算设备之间传输大量数据。为更安全且更有效地进行数据的编译、存储和传输,开发了多种不同的数据格式。一种类型的数据格式是文件格式,它是描述如何组织文件中的数据的格式。例如,当文字处理程序保存文件时,文字处理程序保存除文件文本之外的格式化信息。该格式化信息通常是字符、指令和/或可被分离或剖析成遵循特定数据格式的规则的标记其它信息的集合。
另一种类型的数据格式是协议。协议是用于在两个设备之间传输数据的格式。协议描述了诸如要使用的检错类型、数据压缩方法、发送设备如何指示它完成了发送消息、以及接收设备如何指示它已接收到消息等属性。开放系统互连(“OSI”)是定义用于实现七层协议的联网架构的模型。一般而言,控制从一层传递到另一层,从一个站中的应用层开始,前进到底层,通过信道到达下一站,然后向上反向在该分层结构中前进。该分层结构包括一些层应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层。
应用层协议是用于在应用程序的客户机和服务器方之间传输信息的协议。一般而言,应用层协议定义了交换的消息的类型、各种消息类型的句法、以及用于确定应用程序何时以及如何发送和响应消息的规则。可根据所交换的数据的类型采用多种不同的应用层协议。例如,超文本传输协议(HTTP)用于传输网页内容,文件传输协议(FTP)用于通过因特网传输文件,而简单邮件传输协议(SMTP)用于传输电子邮件。
与数据格式尤其是应用层协议相关联的安全缺陷相当长时间以来都是行业级的问题。这一安全缺陷造成了某些非常严重的问题,包括但不限于,多种广泛分布且具破坏性的计算机病毒。尽管与这一安全缺陷相关联的金钱损失有时候是难以计量的,但它们仍可能是令人惊愕的。即使数据格式通常被良好地证明和理解,仍存在多种基本的数据格式实现问题。一个常见的问题是在描述数据格式的规范与数据格式的实际实现之间可能存在偏差或差异。另一个常见的问题出现在对数据格式进行实际剖析中存在缺陷的时候。许多这样的问题将以安全漏洞的形式来表现自己。因此,为降低这些缺陷的可能性,期望在实现之前对数据格式执行广泛的测试。
一种可能的数据格式测试技术是试图预测与数据格式相关联的潜在缺陷,并开发能解决这些潜在缺陷的测试数据格式。尽管在理论上,这看似为一种切合实际的方法,然而试图事先预测可能发生的各种各样问题并生成解决这些问题的测试数据格式要求大量的时间和工作。这一问题的一种更可行的常规方法涉及形成完全随机的数据并将完全随机的数据传递到数据格式剖析器。由于随机数据是不可预测的,因此它提供了对未来数据格式的不可预测特性的合理估计,而无需试图预测实际的缺陷是什么。尽管对完全随机的数据的使用在某种程度上是有效的技术,然而随机数据的固有变化导致多种缺点。具体地,对于任何相对复杂的数据格式,完全随机的数据通常将不会足够密切地符合该数据格式以使它能够在前几个剖析例程之外测试。由此,该技术往往无法测试数据格式的更复杂方面。由于这些和其它缺点,本领域中需要一种改进的数据格式测试技术。

发明内容
本发明针对使用有目标的变量输入来测试数据格式的系统和方法。依照本发明的一方面,数据格式可使用诸如巴科斯-诺尔范式(Backus Naur Form)等上下文无关语法来定义。所得的数据格式定义可包括多种不同的标记定义。上下文无关数据格式定义然后可被变换成以诸如可扩展标记语言(XML)等语言编写的人类可读数据格式定义。上下文无关数据格式定义中的每一标记可成为人类可读数据格式定义中的一个节点。该数据格式定义中一个或多个选中的节点的值然后可用变量占位符来替换。选中的节点可基于数据格式规范中的参数来选择。在运行时,当从数据格式定义中生成输入标记流时,每一变量占位符用一随机值来替换,由此提供了有目标的变量输入。可重复地生成新的输入标记流,每一新的流包括关于每一变量占位符的一个新的随机值。每一所得的输入流可被提交给数据格式剖析器以供测试。
当参考附图阅读以下说明性实施例的详细描述时,可以清楚本发明的其它特征和优点。


在参考附图阅读了以下详细描述之后,可以更好地理解各说明性实施例,附图中图1描述了依照本发明用于测试数据格式的示例性系统;图2是依照本发明用于测试数据格式的示例性方法的流程图;图3a和3b描述了依照本发明的示例性数据格式定义;图4a和4b描述了依照本发明的示例性人类可读数据格式定义;图5a和5b描述了依照本发明的示例性变量人类可读数据格式定义;图6是表示具有其中可实现本发明的各种计算设备的示例性网络环境的框图;以及图7是表示其中可实现本发明的示例性计算设备的示例性框图。
具体实施例方式
本发明的主题用细节来描述以满足法定要求。然而,该描述本身并不旨在限制本专利的范围。相反,发明人构想所要求保护的主题也可以结合其它当前或未来的技术用其它方式来实施,以包括与本文档中所描述的那些相似的不同动作或元素。
依照本发明用于测试数据格式的一个示例性系统在图1中示出。如上所述,该数据格式可以是例如文件格式、协议或任何其它类型的数据格式。一般而言,该系统包括用于生成有目标的变量测试数据格式105的一个或多个开发计算机100。测试数据格式105作为输入被提交给剖析和测试输入的数据格式剖析器107。开发计算机100或另一可访问的计算机可提供能够生成数据格式规范102的文本编辑器界面101。数据格式规范是描述数据格式的期望属性以及其它类似的特征的文档。文本编辑器界面101也能够生成数据格式定义104。数据格式定义104是定义关于数据格式内的标记的值、设置标记的顺序的文档,并且也可包括关于数据格式的其它信息。数据格式定义104可以基于数据格式规范102中的信息生成。在完成之后,使数据格式定义104对测试数据格式生成器103可用,后者使用其中的信息来生成有目标的变量测试数据格式105。测试数据格式生成过程在下文参考图2来详细描述。
如上所述,数据格式规范102描述了数据格式的期望属性。具体地,数据格式可具有多个设置属性,诸如固定长度属性、长度前缀属性以及偏移量属性。固定长度属性具有预先选择的固定长度,且因此仅包括一个数据标记。另一方面,长度前缀属性包括数据标记以及之前的长度标记。数据标记的长度是由长度标记的值来确定的。偏移量属性包括多个长度标记、多个偏移量标记以及数据标记。数据标记包括多个数据集,其每一个具有对应的数据标记和对应的偏移量标记。每一数据集的长度是由其对应的长度标记的值来确定的,且每一数据集在数据标记中的位置是由其对应的偏移量标记来确定的。这三个设置属性的示例将在下文中提供。
图2示出了依照本发明用于生成有目标的变量测试数据格式105的示例性方法的流程图。在动作210,由测试数据格式生成器103接收数据格式定义104。数据格式定义104可以用诸如巴科斯-诺尔范式(BNF)等上下文无关的语法来定义数据格式。图3a和3b中示出了用于两个不同的示例性数据格式的两个示例性上下文无关数据格式定义。第一种数据格式(“P1”)包括固定长度数据和长度前缀数据,而第二种数据格式(“P2”)包括偏移量数据。
现在参考图3a,P1数据格式定义的第一行指示P1包括三个标记“Type(类型)”,之后为“Length(长度)”,之后为“Data(数据)”。“Type”标记指定了固定长度数据,“Length”标记指定了长度前缀数据的长度,而“Data”标记指定了长度前缀数据的数据。图3a中剩余的行定义了标记的值。具体地,“Type”和“Length”标记的每一个包括一字节的数据,而“Data”标记包括由“Length”标记值确定的可变数量的数据字节。
现在参考图3b,P2数据格式定义的第一行指示P2包括三个标记“OffsetLength 1(偏移量长度1)”,之后为“Offset Length 2(偏移量长度2)”,之后为“Data(数据)”。两个“Offset Length”标记的每一个包括“Offset(偏移量)”标记和“Length(长度)”标记。“Offset”标记指定了“Data”标记中对应的数据集的位置,而“Length”标记指定了“Data”标记中对应的数据集的长度。图3b中的剩余行定义了标记的值。具体地,“Offset”和“Length”标记的每一个包括一字节的数据,而“Data”标记包括由“Length”标记的组合值确定的可变数量的数据字节。
返回到图2,在动作212,将上下文无关数据格式定义变换成人类可读形式。人类可读数据格式定义可以用诸如可扩展标记语言(XML)等语言来定义。上下文无关数据格式定义中的每一标记可成为人类可读数据格式定义中的一个节点。人类可读定义中的所得的叶层节点对应于一系列一个或多个字节。人类可读数据格式定义提供了一种直观且易于理解的模式,其中可设置标记的值。然而,应当注意,将数据格式定义转换成人类可读形式无需在每一情况下都完成,且动作212是可任选动作。用于数据格式P1和P2的示例性人类可读数据格式定义分别在图4a和4b中示出。这些示例性人类可读数据格式定义是用XML来定义的。
现在参考图4a,“Type”标记的值被设为4,“Length”标记的值被设为3,“Data”标记包括三个字节,其每一个具有二进制值“CC”。如应当理解的,“Data”标记包括三个字节,因为“Length”标记具有值3。依照图4所示的定义所得的用于数据格式P1的标记流如下P1{04 03 CC CC CC}。
现在参考图4b,对于“Offset Length 1”,“Offset”标记的值被设为0,“Length”标记的值被设为1。对于“Offset Length 2”,“Offset”标记的值被设为1,“Length”标记的值被设为3。“Data”标记包括两个数据集。第一个数据集对应于“OffsetLength 1”,且包括具有二进制值“AA”的数据的第一字节。第二个数据集对应于“Offset Length 2”,且包括数据的第二到第四字节,其每一个都具有二进制值“BB”。如应当理解的,第一数据集在“Data”标记中的第一字节处开始,因为它具有0的偏移量,而第二数据集在“Data”标记中的第二字节处开始,因为它具有1的偏移量。依照图4b所示的定义所得的用于数据格式P1的标记流如下P2{0001 01 03 AA BB BB BB}。
返回到图2,在动作214,用变量占位符来替代一个或多个选中的标记的值。如上所述,可以在数据格式定义104的人类可读形式中更直观地进行这一替代。然而,该替代无需从人类可读数据格式定义中作出,且例如可从上下文无关数据格式定义内作出。具有某些示例性变量替代的用于P1和P2的数据格式定义分别在图5a和5b中示出。在图5a中,“Length”标记的值用变量占位符来替代,而在图5b中,“Offset Length 2”的“Length”标记的值用变量占位符来替代。依照图5a所示的定义所得的用于数据格式P1的标记流如下P1{04 XX CC CC CC},而依照图5b的P2为P2{00 01 01 XX AA BB BB BB},其中“XX”表示变量占位符。可以用变量占位符替代数据格式内的一个以上标记。
返回到图2,在动作216,生成输入测试数据格式105。输入测试数据格式105是这样一种标记流,其中每一标记具有其自己的来自数据格式定义的对应值,且变量占位符用随机值来替代。在动作218,输入测试数据格式105被提交给数据格式剖析器107。输入测试数据格式105的生成可以被重复任意的次数(如由图2中的虚线循环所指示的),每一新的输入流包括用于每一变量占位符的新的随机值。可以重复地生成新的输入流,并将其提交给数据格式剖析器107,直到检测到数据格式中的一个或多个缺陷。当检测到缺陷时,可通过在必要时改变数据格式来调试数据格式,以缓和该缺陷。当然,也可能对给定的一组变量替代没有检测到任何缺陷。这可如下确定重复生成输入流,直到认为已经有了足够的随机值采样来得出对选中的变量标记没有任何缺陷存在的结论。一旦得出这一结论,可以返回变量标记的实际常数值,且可选择数据格式中的一个或多个其它标记为变量标记。
被选中用于变量替换的标记可以基于数据格式规范102中的信息以及数据格式的其它特征来确定。例如,参考数据格式P2,“Offset Length 1”可对应于用户名,而“Offset Length 2”可对应于口令。由此,如在图5b的示例中,“Offset Length2”的“Length”标记可用变量占位符来替换,以测试数据格式P2如何用变化长度的口令来表现。在这一情形中,“Offset Length 2”的“Length”标记可被测试到断开点,而数据格式P2中的其它标记保持不变。
有目标的变量输入与完全随机输入相反的某些好处可从该示例中容易地看到。具体地,如果没有将数据格式P2的变化的目标定为“Offset Length 2”的“Offset”标记,则该标记相当有可能从不被实际测试。为理解这一点,考虑如果数据格式P2中的所有标记被分配随机值则可能发生什么的示例。现在,为说明起见,假定当生成变量输入流时,向“Offset Length 1”分配偏移量0和长度3,而向“OffsetLength 2”分配偏移量2。在这一情形中,由于“Offset Length 1”的长度大于“OffsetLength 2”的长度,因此检测到错误。由此,由于该错误,测试将不会进展到“OffsetLength 2”的“Offset”标记。尽管这是一个相对简单的示例,但是许多数据格式要复杂得多,且涉及更多标记,由此提高了并非数据格式的所有部分都被测试到的可能性。
除上述上下文无关语法数据格式定义之外,也可能以基于语言的定义来定义数据格式。这一基于语言的数据格式定义可以类似于功能编程,或可以例如是基于栈的语言定义。数据格式P1的一个示例性基于语言的定义示出如下AddByte(0x04)AddRandomByte()AddByte(0xCC)AddByte(0xCC)AddByte(0xCC)
该示例性的基于语言的定义仅列出了每一标记的对应值,并且还包括由“AddRandomByte(添加随机字节)”命令表示的变量。当然,该定义未示出图3a中所示的数据格式P1的巴科斯-诺尔范式数据格式定义中诸如“Length”和“Data”标记等标记之间的关系。然而,该基于语言的定义仍提供了与上述有目标的变量输入相关联的优点。
除完全随机的值之外,变量也可以用“智能”值来替代。这些智能值能够测试标记流中的每一标记的公知边界。智能值可包括诸如空值(00)、修正值(N)、中间值(N/2)、最大值、预定值范围内大于修正值的值(N+X)、以及预定值范围内小于修正值的值(N-X)等值。例如,对于具有修正值“06”的长度前缀标记,可用的智能值可以包括空值(00)、修正值(06)、中间值(03)、比修正值大1的值(07)以及比修正值小1的值(05)。这些智能值可根据其中替换了这些智能值的特定标记来测试不同的属性。例如,对于长度前缀标记,智能值(N-X)和(N+X)仅调整对应数据集的长度。然而,对于偏移量标记,智能值(N-X)将调整对应数据集的位置,使得它位于前一数据集内的某处,而值(N+X)调整对应数据集的位置,使得它位于后一数据集内的某处。
因此,如上参考图1-5的示例性系统和方法所述的,本发明提供了用于生成测试数据格式的系统和方法。如可从上述内容中清楚的,本发明的各种系统、方法和方面的全部或部分可用硬件、软件或两者的组合来实现。当用软件实现时,本发明的方法和装置,或其某些方面或部分,可以用程序代码(即,指令)的形式来实施。该程序代码可以储存在计算机可读介质上,诸如磁、电或光存储介质,包括但不限于,软盘、CD-ROM、CD-RW、DVD-ROM、DVD-RAM、磁带、闪存、硬盘驱动器或任何其它机器可读存储介质,其中,当程序代码被加载到诸如计算机或服务器等机器中并由其执行时,该机器变为用于实施本发明的装置。其上执行程序代码的计算机一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。程序代码可以用高级过程语言或面向对象的编程语言来实现。或者,程序代码可以用汇编语言或机器语言来实现。在任何情况下,语言可以是已编译或已解释语言。
本发明也可用通过某一传输介质,如通过电线或电缆、通过光纤、通过包括局域网、广域网、因特网或内联网的网络、或通过任一其它形式的传输发送的程序代码的形式来实施,其中,当程序代码由诸如计算机等机器接收被装载到其中由其执行时,该机器变为用于实施本发明的装置。
当在通用处理器上实现时,程序代码可与处理器相结合,以提供与专用逻辑电路相似地操作的独特装置。
此外,本发明可以结合任何计算机或其它客户机或服务器设备来实现,它们可作为计算机网络的一部分部署,或部署在分布式计算环境中。在这一点上,本发明涉及具有任意数量的存储器或存储单元,以及跨任意数量的存储单元或卷发生的任意数量的应用程序和进程的任何计算机系统或环境,它可结合本发明来使用。本发明可应用于具有部署在具有远程或本地存储的网络环境或分布式计算环境中的服务器计算机和客户机计算机的环境。本发明也可应用于具有编程语言功能、解释、以及用于结合远程或本地服务生成、接收和发送信息的执行能力的独立计算设备。
分布式计算通过计算设备和系统之间的交换便于计算机资源和服务的共享。这些资源和服务包括,但不限于,信息交换、高速缓存存储以及用于文件的磁盘存储。分布式计算利用了网络连通性,从而允许客户机充分利用其集体能力来使整个企业受益。在这一点上,各种设备可具有可蕴含结合本发明来执行的处理的应用程序、对象或资源。
图6提供了示例性联网或分布式计算环境的示意图。该分布式计算环境包括计算对象10a、10b等等,以及计算对象或设备110a、110b、110c等。这些对象可包括程序、方法、数据存储、可编程逻辑等。这些对象可包括诸如PDA、电视机、MP3播放器、个人计算机等的相同或不同设备的各部分。每一对象可通过通信网络14与另一对象通信。该网络本身可包括向图6的系统提供服务的其它计算对象和计算设备,并且本身可表示多个互连的网络。依照本发明的一个方面,每一对象10a、10b等或110a、110b、110c等可包含可以利用API或其它对象、软件、固件和/或硬件来请求对用于实现本发明的过程的使用的应用程序。
可以理解,诸如110c等对象可以主存在另一计算设备10a、10b等或110a、110b等上。由此,尽管所描述的物理环境可以将连接的设备示出为计算机,然而这一说明仅是示例性的,并且该物理环境可替换地被描绘或描述为包括诸如PDA、电视机、MP3播放器等各种数字设备,诸如接口、COM对象等的软件对象。
有各种支持分布式计算环境的系统、组件和网络配置。例如,计算系统可以通过有线或无线系统、局域网或广泛分布的网络连接在一起。当前,许多网络耦合至因特网,后者为广泛分布的计算提供了基础结构并包含许多不同的网络。任一基础结构可用于关联本发明所作出的示例性通信。
因特网通常指使用TCP/IP协议套件的网络和网关的集合,该协议在计算机联网领域中是公知的。TCP/IP是“传输控制协议/互联网协议”的缩写。因特网可被描述为由执行允许用户通过一个或多个网络交互和共享信息的联网协议的计算机互连的地理上分布的远程计算机网络系统。由于这类广泛分布的信息共享,诸如因特网等远程网络至今发展成一种开放系统,开发者可对该开放系统设计用于执行专用操作或服务的应用程序,在本质上没有限制。
由此,网络基础结构启用了诸如客户机/服务器、对等或混合体系结构等大量网络拓扑结构。“客户机”是使用它所不相关的另一类或组的服务的类或组的成员。由此,在计算时,客户机是进程,即,粗略地而言是一组请求由另一程序提供的服务的指令或任务。客户机进程使用所请求的服务,而无需“知道”关于其它程序或服务本身的任何工作细节。在客户机/服务器体系结构中,尤其是网络化系统中,客户机通常是访问由另一计算机,如服务器提供的共享网络资源的计算机。在图6的示例中,计算机110a、110b等可以被认为是客户机,而计算机10a、10b等可以被认为是服务器,尽管任何计算机可以被认为是客户机、服务器或两者,这取决于环境。这些计算设备的任一个可以用蕴含本发明的方式处理数据。
服务器通常是可通过远程或本地网络,如因特网访问的远程计算机系统。客户机进程可以在第一计算机系统中活动,而服务器进程可以在第二计算机系统中活动,它们通过通信介质彼此通信,由此提供了分布式功能并允许多个客户机利用服务器的信息收集能力。依照本发明使用的任何软件对象可以在多个计算设备上分布。
一个或多个客户机和一个或多个服务器可使用由协议层提供的功能彼此通信。例如,超文本传输协议(HTTP)是一种结合万维网(WWW)或“Web”使用的常见协议。通常,计算机网络地址,如网际协议(IP)地址或诸如统一资源定位器(URL)等其它引用,可用于彼此标识服务器或客户机计算机。网络地址可被称为URL地址。通信可在任何可用通信介质上提供。
由此,图6示出了具有通过网络/总线与客户机计算机通信的服务器的示例性网络化或分布式环境,其中可实施本发明。依照本发明,网络/总线14可以是LAN、WAN、内联网、因特网或某一其它网络介质,它具有多个客户机或远程计算设备110a、110b、110c、110d、110e等,如便携式计算机、手持式计算机、瘦客户机、联网设备或其它设备,如VCR、TV、烤箱、灯、加热器等等。由此,构想本发明可应用于任何计算设备,期望结合这些设备使用有目标的变量输入来测试协议。
例如,在其中通信网络/总线14是因特网的网络环境中,服务器10a、10b等可以是客户机110a、110b、110c、110d、110e等通过诸如HTTP等多种已知协议与其通信的服务器。服务器10a、10b等也可担当客户机110a、110b、110c、110d、110e等,这可以是分布式计算环境的特征。
通信可以在适当时是有线或无线的。客户机设备110a、110b、110c、110d、110e等可以通过或不通过通信网络/总线14通信,并可具有与其相关联的独立通信。例如,在TV或VCR的情况下,可以有或没有其控制的网络化方面。每一客户机计算机110a、110b、110c、110d、110e等以及服务器计算机10a、10b等可以具备各种应用程序模块或对象135,并具有对各种类型的存储元件或对象的连接或访问,在这些存储元件或对象上可储存文件或数据流,或者可向其下载、发送或移植文件或数据流的一个或多个部分。任一计算机10a、10b、110a、110b等可以负责数据库、存储器或用于储存依照本发明处理的数据的其它存储元件20的维护和更新。由此,本发明可以用于具有可访问计算机网络/总线14或与其交互的客户机110a、110b等,以及可与客户机计算机110a、110b等交互的服务器计算机10a、10b等,以及其它类似的设备和数据库20的计算机网络环境中。
图7及以下讨论旨在提供可结合其来实现本发明的合适的计算设备的简要概括描述。例如,图7所示的客户机和服务器计算机或设备的任一个可采用这一形式。然而,应当理解,所有种类的手持式、便携式和其它计算设备和计算对象可被构想为结合本发明使用,即,计算环境中的任何地方均可生成、处理、接收和/或发送数据。尽管下文描述了通用计算机,然而这只是一个示例,本发明可以用具有网络/总线互操作性和交互的瘦客户机来实现。由此,本发明可以在其中蕴含了极少或最小客户机资源的网络化主存的服务的环境中实现,如其中客户机设备仅担当如放置在设备中的对象等对网络/总线的接口的网络化环境。本质上,可储存数据或从其检索数据或向另一计算机发送数据的任何地方都是用于本发明的对象持久存储方法的操作的合乎需要的或合适的环境。
尽管并非所需,但本发明可通过由设备或对象的服务开发者使用的操作系统来实现,和/或包括在依照本发明操作的应用程序或服务器软件中。软件可以在诸如由客户机工作站、服务器或其它设备等一个或多个计算机执行的软件模块等计算机可执行指令的一般上下文中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等等,它们执行特定的任务或实现特定的抽象数据类型。通常,程序模块的功能可如各实施例中所需的进行组合或分布。此外,本发明可以用其它计算机系统配置和协议来实施。其它适用于本发明的公知的计算系统、环境和/或配置包括但不限于,个人计算机(PC)、自动售货机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费者电子产品、网络PC、电器、灯、环境控制元件、小型机、大型计算机等等。
由此,图7示出了其中可实现本发明的合适的计算系统环境700的一个示例,尽管可从上述内容中清楚,但计算系统环境700仅为合适的计算环境的一个示例,并非对本发明的使用范围或功能提出任何局限。也不应将计算环境700解释为对示例性操作环境700中示出的任一组件或其组合具有任何依赖或需求。
参考图7,用于实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件包括,但不限于,处理单元120、系统存储器130以及将包括系统存储器的各类系统组件耦合至处理单元120的系统总线121。系统总线121可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线以及使用各类总线体系结构的局部总线。作为示例而非局限,这类体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线以及外围部件互连(PCI)总线(也称为Mezzanine总线)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非局限,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性,可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储设备、或可以用来储存所期望的信息并可由计算机110访问的任一其它介质。通信介质通常具体化为诸如载波或其它传输机制的已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。术语“已调制数据信号”指以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信介质包括有线介质,如有线网络或直接连线连接,以及无线介质,如声学、RF、红外和其它无线介质。上述任一的组合也应当包括在计算机可读介质的范围之内。
系统存储器130包括以易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包括如在启动时帮助在计算机110内的元件之间传输信息的基本例程,通常储存在ROM 131中。RAM 132通常包含处理单元120立即可访问和/或者当前正在操作的数据和/或程序模块。作为示例而非局限,图7示出了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作示例,图7示出了对不可移动、非易失性磁介质进行读写的硬盘驱动器141、对可移动、非易失性磁盘152进行读写的磁盘驱动器151以及对可移动、非易失性光盘156,如CD-RW、DVD-RW或其它光介质进行读写的光盘驱动器155。可以在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过不可移动存储器接口,如接口140连接到系统总线121,磁盘驱动器151和光盘驱动器155通常通过可移动存储器接口,如接口150连接到系统总线121。
上文讨论并在图7示出的驱动器及其关联的计算机存储介质为计算机110提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图7中,示出硬盘驱动器141储存操作系统144、应用程序145、其它程序模块146和程序数据147。注意,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同,也可以与它们不同。这里对操作系统144、应用程序145、其它程序模块146和程序数据147给予不同的标号来说明至少它们是不同的副本。用户可以通过输入设备,如键盘162和定位设备161(诸如鼠标、跟踪球或触摸板)向计算机110输入命令和信息。其它输入设备(未示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通常通过耦合至系统总线121的用户输入接口160连接至处理单元120,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。图形接口182也可连接到系统总线121。一个或多个图形处理单元(GPU)184可与图形接口182通信。监视器191或其它类型的显示设备也通过接口,如视频接口190连接至系统总线121,视频接口进而与视频存储器186通信。除监视器之外,计算机也可包括其它外围输出设备,如扬声器197和打印机196,它们通过输出外围接口195连接。
计算机110可以使用到一个或多个远程计算机,如远程计算机180的逻辑连接在网络化或分布式环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,并通常包括许多或所有上面相对于计算机110所描述的元件,尽管在图7中仅示出了存储器存储设备181。图7描述的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它的网络/总线。这类网络环境常见于家庭、办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN网络环境中使用时,计算机110通常包括调制解调器172或用于通过WAN 173,如因特网建立通信的其它装置。调制解调器172可以是内置或外置的,通过用户输入接口160或其它适当的机制连接至系统总线121。在网络化环境中,相对于计算机110所描述的程序模块或其部分可储存在远程存储器存储设备中。作为示例,而非局限,图7示出远程应用程序185驻留在存储器设备181上。可以理解,示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它装置。
总结由此,揭示了使用有目标的变量输入来测试协议的系统和方法。尽管本发明是结合各附图的较佳实施例来描述的,但是应当理解,可使用其它类似的实施例或可以对所描述的实施例进行修改或添加,以执行本发明的相同功能,而不偏离本发明。因此,本发明不应限于任何单个实施例,而是应当依照所附权利要求书的宽度和范围来解释。
权利要求
1.一种用于测试数据格式的方法,包括接收定义所述数据格式内的多个标记的数据格式定义,每一所述标记具有对应的值,所述标记的至少一个具有用变量来替换的其对应值;以及依照所述数据格式定义生成标记流,其中,所述流中的至少一个标记具有其对应的值,且所述至少一个变量的每一个用随机值来替换。
2.如权利要求1所述的方法,其特征在于,包括接收定义协议的数据格式定义。
3.如权利要求1所述的方法,其特征在于,包括接收定义文件格式的数据格式定义。
4.如权利要求1所述的方法,其特征在于,还包括接收以基于语言的格式定义所述数据格式的数据格式定义。
5.如权利要求1所述的方法,其特征在于,还包括接收以上下文无关语法定义所述数据格式的数据格式定义。
6.如权利要求5所述的方法,其特征在于,包括接收以巴科斯-诺尔范式上下文无关语法定义所述数据格式的数据格式定义。
7.如权利要求5所述的方法,其特征在于,还包括将所述上下文无关语法数据格式定义变换成可扩展标记语言数据格式定义。
8.如权利要求1所述的方法,其特征在于,包括接收依照固定长度数据属性、长度前缀属性、以及数据偏移量属性中的至少一个来定义所述数据格式的数据格式定义。
9.如权利要求1所述的方法,其特征在于,还包括用一随机值来替换至少一个所述变量,所述随机值是从一组智能值中选出的,所述智能值包括以下的至少一个空值、中间值、最大值、修正值、预定值范围内大于修正值的值、以及预定值范围内小于修正值的值。
10.一种具有用于执行如权利要求1所述的步骤的计算机可执行指令的计算机可读介质。
11.一种用于测试数据格式的系统,包括定义所述数据格式内的多个标记的数据格式定义,每一所述标记具有对应的值,所述标记的至少一个具有用变量来替换的其对应值;以及接收所述数据格式定义并依照所述数据格式定义来生成标记流的测试数据格式生成器,其中,所述流中的至少一个标记具有其对应的值,且所述至少一个变量中的每一个用随机值来替换。
12.如权利要求11所述的系统,其特征在于,所述数据格式是文件格式。
13.如权利要求11所述的系统,其特征在于,所述数据格式是协议。
14.如权利要求11所述的系统,其特征在于,所述数据格式定义以基于语言的格式定义所述数据格式。
15.如权利要求11所述的系统,其特征在于,所述数据格式定义以上下文无关语法定义所述数据格式。
16.如权利要求15所述的系统,其特征在于,所述上下文无关语法是巴科斯-诺尔范式。
17.如权利要求15所述的系统,其特征在于,所述上下文无关语法数据格式定义被变换成人类可读的数据格式定义。
18.如权利要求17所述的系统,其特征在于,所述人类可读数据格式定义以可扩展标记语言定义所述数据格式。
19.如权利要求11所述的系统,其特征在于,所述数据格式包括固定长度数据属性、长度前缀属性以及数据偏移量属性中的至少一个。
20.如权利要求11所述的系统,其特征在于,所述随机值是从一组智能值中选出的,所述智能值包括以下的至少一个空值、中间值、最大值、修正值、预定值范围内大于修正值的值、以及预定值范围内小于修正值的值。
全文摘要
数据格式定义中一个或多个所选择的节点的值可用变量占位符来替换。在运行时,从数据格式定义生成输入标记流,每一变量占位符将用随机值来替换,由此提供了有目标的变量输入。
文档编号H04L12/26GK1825852SQ20061000435
公开日2006年8月30日 申请日期2006年1月25日 优先权日2005年2月25日
发明者B·萨斯菲尔德 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1