软件的双向探测的制作方法

文档序号:6419565阅读:145来源:国知局
专利名称:软件的双向探测的制作方法
背景技术
发明领域本发明涉及软件测试并尤其涉及用于双向探测软件的方法。
相关技术说明在软件开发者中,对软件的最重要的要求之一是可靠。可靠性指的是软件在规定环境中在规定数量的时间内无故障运行的能力。为了确保足够高水平的可靠性,软件必须在发行之前被彻底地测试和调试。通常,总体上测试整个软件程序、以及组成该软件程序的单独功能组成部分(例如函数调用、子程序)。所产生的测试矢量一般包括软件和/或其一个或多个功能组成部分所需的一系列变量值。变量值被选择来表示各种类型的使用条件和想要在其中运行软件的环境。然后,测试矢量被应用于软件和/或它的一个或多个功能组成部分,并且变量值被观察和记录。
经常被执行的一类测试被称作回归分析,或有时也称之为验证测试。回归分析包括选择性地再测试已经被更改以便解决已知问题的软件。选择性的再测试被执行以便确保识别出的问题已经被解决,并且确保作为修补结果没有其它之前工作着的功能组成部分出现了故障。这类测试基本上是质量控制测量,用以确保被变更的代码仍然遵循其规定要求并且任何未变更的代码不受维修活动的影响。
通常在软件测试并尤其在回归分析中的重要特点是观察由测试矢量产生的变量值的能力。早期尝试观察软件和/或其功能组成部分的变量值包括在源代码自身中手动设置断点及其它中断。近年来,诸如来自TexasInstruments的Code Composer StudioTM和来自National Instruments的LabVIEWTM之类的软件开发工具包括可以在测试时被插入代码中的软件探测器。软件探测器在执行软件时允许被测代码中的变量被实时观察。然而,后面的这些解决方案仅仅是基于从被测代码中取出变量值(例如因此它们可以被分析)。它们不允许在软件的执行过程中改变变量值。换而言之,目前存在的软件探测器只是单行或单向探测器,其中,只允许数据从被测代码流入测试系统。它们不允许数据的传送方向被反转以便数据从测试系统流入被测代码。
因此,希望提供一种方法,用于以这样一种方式探测软件以使可以从被测代码中传送数据以及将数据传送到被测代码中。

发明内容
简要地,本发明是针对软件的双向探测。本发明的双向探测器能够传送数据给正在测试的软件以及从正在测试的软件传送数据。这种双向数据传送不仅允许监控软件中的变量,而且允许按照需要来改变它。在为了测试目的而运行软件的时候,测试矢量可以被开发并插入到软件中。通过把来自之前迭代的数据用作下一次迭代的输入,回归分析变得更容易。
在一个实施例中,本发明通常是针对一种测试其中具有多个数据变量和函数参数的软件的方法。该方法包括执行软件,识别软件所使用的至少一个变量或参数的地址单元,和把存储在该地址单元中的任何数据输出到测试系统从而监控该数据。然后,来自测试系统的数据被输入该地址单元从而替换之前存储在该地址单元中的任何数据。
在另一个实施例中,本发明通常是针对一种用于测试其中具有多个数据变量和函数参数的软件的设备。该设备包括中央处理单元和连接到中央处理单元上的存储单元。存储单元存储计算机可读指令,该计算机可读指令用于指示中央处理单元执行软件,识别该软件所使用的至少一个变量或参数的地址单元,把存储在该地址单元中的任何数据输出到中央处理单元从而监控该数据,和把来自中央处理单元的数据输入该地址单元从而替换之前存储在该地址单元中的任何数据。
在又一个实施例中,本发明通常是针对一种用于测试其中具有多个数据变量和函数参数的软件的系统。该系统包括被配置来执行包括软件中的一个或多个探测器指令的软件的被测装置,和连接到被测装置的测试器。测试器被配置来控制被测装置以便当执行探测器指令时,被测装置将识别该软件所使用的至少一个变量或参数的地址单元;把存储在该地址单元中的任何数据输出到测试器;和把从测试器接收的数据输入该地址单元。
应当强调,本说明书中使用的术语“包括”是用来规定所述特征、整体、步骤或元件的存在,但并不排除一个或多个其它特征、整体、步骤、元件或其组合的存在或添加。


通过参考以下详细说明并结合附图,可以更透彻地了解本发明,其中图1使用类似硬件部件来说明根据本发明实施例的可仿效软件测试环境;图2A-2D使用类似硬件部件来说明根据本发明实施例的双向软件探测器的可仿效操作模式;图3说明一个可仿效的系统,其中,根据本发明实施例的双向软件探测器可以被执行;图4说明另一个可仿效的系统,其中,根据本发明实施例的双向软件探测器可以被执行;和图5说明执行根据本发明实施例的双向软件探测器的可仿效的方法。
具体实施例方式
下面是参考附图的本发明的详细说明,其中,用于相同和类似元件的附图标记被转入下页。
本发明的实施例提供用于使用双向探测器来测试软件的方法和系统。本发明的双向探测器可以在基本上任何位置上插入程序代码中。探测器允许从软件捕获数据以及把数据插入软件。特别地,探测器允许监控软件中的变量值,并在软件的运行过程中将变量值改变并插回到软件中。然后用被改变的值来进一步执行软件。本发明的双向探测器可以被实施为软件开发工具或其它类似的软件开发环境中的特征或功能,软件开放工具比如是来自National Instruments的LabVTEWTM和来自Texas Instruments的Code Composer StudioTM。
本发明的双向软件探测技术有些类似于硬件电路板的测试。因此,将首先根据用于硬件电路板的测试系统来描述本发明。本说明书只被提供用于说明性的目的,然而本发明实际上是针对软件的探测。
图1说明类似于软件测试工具的硬件测试系统100,在其中本发明的双向探测技术可以被使用。硬件检测系统100经由多个硬件探头被连接到被测装置(DUT)102,其中一个硬件探头在104被指出。每个硬件探头104可以由其探头ID来标识。例如,第一探头是PID 1,第二探头是PID 2,第三探头是PID 3,等等。探头104被连接到交叉电路盒106的一端,其另一端被连接到一个或多个诸如波形发生器之类的函数发生器108和一个或多个诸如示波器和波长计之类的测量单元110。交叉电路盒106允许有选择地把探头104连接到测试系统100的函数发生器108和测量单元110并从函数发生器108和测量单元110断开。测试系统100中的控制器(未明确示出)提供用于控制交叉电路盒106的连通性的控制信号。
可以看出,探头104被有策略地放置以便允许在DUT 102上的某些感兴趣点处探测电信号。例如,第一探头PID 1被放置在Func2的输入端上以便允许探测电信号“a”。同样,第二探头PID 2被放置在Func1的输入端上以便探测电信号“b”。然而,第五探头PID 5被放置在Func1的输出端上以便探测电信号“d”。不同功能(即Func1-3)可以是能够由DUT执行的任何功能(例如加、减、平均等等)。一些功能可能其中具有一个或多个也可以被探测的内部功能和/或子功能。例如,Func3中包括有可以被探测的子功能“f”。以类似于所描述的方法,本发明的双向探测器允许探测软件中某些感兴趣的变量。
每个探头104到DUT的连接点类似于标准的线对连接,其在由112指出的虚线圈中示出。可以看出,线对112的一条线114从DUT 102导向交叉电路盒106,而线对112的另一条线116从交叉电路盒106引导回DUT102。同样地,每个探头104到交叉电路盒106的连接点类似于一对开关,如在由118指出的虚线圈中所示。在120指出的入站开关有选择地把探头104的输入线114连接到测试器系统100(例如连接到测量单元)。在122指出的出站开关有选择地把探头104的回线116连接到输入线114(例如用于正常操作)或测试器系统100(例如连接到函数发生器)。开关的不同操作模式将在下面更详细地描述。
现在参见图2A-2D,连接探头与交叉电路盒的开关的基本操作模式被示出。这些操作模式图解地说明本发明的软件探测器的操作能力。在图2A示出的第一操作模式中,入站开关120和出站开关122都从交叉电路盒106上断开并代之以相互连接。这是正常的操作模式,其中,数据既不从DUT 102流入测试系统100,也不从测试系统100流入DUT 102。在图2B示出的第二操作模式中,入站开关120把DUT 102连接到测试系统100上,而出站开关122仍然被连接到入站开关120上(即从测试系统上断开)。这个操作模式被用来从DUT 102获得数据以用于监控目的。在图2C示出的第三操作模式中,出站开关122被连接到测试系统100上,而入站开关120从测试系统100上被断开。这个操作模式被用来把数据从测试系统100插入DUT 102以用于测试目的。在图2D示出的第四操作模式中,入站开关120和出站开关122都被连接到测试系统100上。这个操作模式被用来从DUT 102获得数据以用于监控目的,以及用于把数据插入DUT 102以用于测试目的。用类似的方法,本发明的双向探测器可以被用于从被测软件程序的变量和参数中获取数据,把数据输入到这些变量和参数中或用于这两个目的。
包括根据本发明实施例的双向探测器指令的程序代码的一个可仿效块在下面的例子1中被示出。可以看出,程序代码块用伪代码而不用任何特殊程序语言来编写,以便强调双向探测器的一般特性和适用性。在这个例子中,Func0是被测代码并类似于图1的DUT 102。“probe”指令类似于图1的硬件探头PID1-5,并且一般包括探头ID以及将被作为参数探测的变量或参数的标记。例如,“probe(1,c)”指的是第一探头PID 1并影响对应于被测代码中变量“c”的地址单元。从而,probe指令“probe(1,c)”允许程序代码块中的变量“c”按照需要被监控和改变。同样,probe指令“probe(4,a)”允许变量“a”按照需要被监控和改变,诸如此类。
例子1func0(a,b,c){probe(1,c)probe(2,b)probe(4,a)d=func1(b)probe(5,d)probe(3,g)e,f=func2(c,g)probe(6,e)h,g=func 3(a,d,e,f)probe(11,h)return h}func3(a’,b’,c’,d’){e’=f’(a’,b’,c’,d)
probe(8,e’)return e’}注意,Func3具有子函数“f’”,其输入是变量“a’”-“d’”的输入并且其输出是变量“e’”,分别对应于Func0的变量“a”-“d”和“h”。子函数也可以使用本发明的双向探测技术来探测。
通过把探测器指令添加到被测代码中,软件是可观察的并因此是可测试的。任何类型的变量(例如自动(临时存储在栈式存储器上)、全局、静态,等等)或任何存储数据都可以被探测,只要它在如由探测器指令中的变量指出的探测器的地址空间中。使用本发明的双向探测器来探测函数参数也是可能的。探测变量和函数参数使得进一步测试软件的功能成为可能。特别地,探测函数的变量和参数允许基于所获取的数据来开发附加的测试和测试矢量。
探测器指令的一个可仿效C代码版本可以在下面的例子2中示出的源代码块中看到。这个例子被提供来说明使用本发明实施例的实际的源代码块可能看起来是怎样的。
例子2//计算b*b+aint func0(int a,int b){int d;int e; //需要引入变量probe(2,&b); //这样可以改变值d=func1(b); //这是func0的功能e=d+a;probe(7,&e);return e;}int func1(int arg0){int res;res=arg0*arg0;//这是func1的功能
probe(8,&res);return res;}本发明的双向探测技术可以在任何测试系统中执行。图3示出用于执行双向探测技术的可仿效测试系统300。测试系统300包括相互通信的测试器302和被测装置304。测试器302是一个具有多个功能部件的典型计算机,包括CPU 306、输入/输出接口单元308、和存储单元310。这些部件是计算机领域中的普通技术人员所熟知的,因此在这里只简要地描述它们。CPU 306处理测试器302上的所有软件程序的执行,所有软件程序包括操作系统和在其上运行的任何软件。接口单元308用来把测试器302连接到被测装置304上,以及连接到与其连接的任何输入/输出设备(例如键盘、鼠标、显示器、打印机等等)上。存储单元310为用于执行操作系统和在测试器302上运行的软件可能所需的任何软件程序和/或数据提供暂时存储(例如RAM)和/或长期储存(例如硬盘)。
包括软件开发工具312的多个软件应用程序被存储在存储单元310中。软件开发工具312用与现有的软件开发工具相同方法来操作并具有许多与现有的软件开发工具相同的特征,现有的软件开发工具比如是来自National Instruments的LabVIEWTM和来自Texas Instruments的Code Composer StudioTM,或其它类似的软件开发工具。然而根据本发明的实施例,软件开发工具312还包括探测控制和分析模块314。该探测控制和分析模块314能够使用软件开发工具312来控制任何正被测试的软件的双向探测,并能够分析正被探测的数据。特别地,该探测控制和分析模块314允许如由用户确定的那样从被测代码捕获数据,将数据插入被测代码,或这两者。该探测控制和分析模块314还允许用户基于所获取的数据来产生测试矢量并把测试矢量插回到被测代码中。这使得用户更加容易和方便地监控和测试被测代码的操作和可靠性。
在当前的实施例中,包括双向探测器指令的被测代码在独立单元、即与测试器302通信的被测装置304上被执行。像测试器302一样,被测装置304是一个具有多个功能部件的典型计算机,其包括CPU 316、输入/输出接口单元318、和存储单元320。被测装置304的部件在功能方面与它们在测试器302中的对应物相类似,因此就不在此描述了。重点是包括被探测的源代码和双向探测器指令和执行过程的被测代码322独立于测试器302被存储并被执行。(参见探测器指令例子的上述可仿效的源代码块。)然而在一些实施例中,测试器和被测装置作为都执行功能的单个综合测试系统来实现。图4说明这种测试系统400的一个例子。综合测试系统400具有多个功能部件,包括CPU 402、输入/输出接口404、和存储单元406。这些部件类似于根据图3所描述的它们的对应物,不同之处是存储单元406具有存储在其中的软件开发工具408和被测代码410这两者。从而,测试系统400优选地具有足够的存储和处理能力来同时执行软件开发工具408和被测代码410(即多任务)。软件开发工具408基本上和上述的软件开发工具312一样,包括探测控制和分析模块(未明确地示出)。同样,被测代码410基本上与上述的被测代码322相同,包括被探测的源代码和探测器指令和执行过程。
根据本发明的实施例,双向探测器指令的执行在图5的可仿效方法500中被说明。这种方法500通常在执行被测代码的被测装置上或在多任务环境中的综合测试器系统上被执行。在方法500中,包括一个或多个探测器指令的源代码块处于正在被执行的进程中。在代码执行过程中的某一点上,步骤501,探测器指令之一被遇到。在下一个步骤、即步骤502中,确定是否已经将探测器设置在探测模式下。该特殊模式通常由用户经由来自软件开发工具312的测试器来设置,或作为预编程的命令或手动地或以两者相结合的方式来设置。如果回答是肯定的,则在第三步骤503中由探测器指令指出的存储器或存储区内的数据被发射到测试系统,在该测试系统中数据可以根据需要被监控和分析。如果回答是否定的,则方法500继续到第四步骤504,其中确定是否已将探测器设置在插入模式下。如果回答是肯定的,则在第五步骤505中,由探测器指令指出的存储器或存储区中的数据利用例如简单的存储器复制被修订和/或替换为从测试系统接收的新数据。如果回答是否定的,则方法500继续执行剩余的被测代码。
注意,上述的方法500是探测器指令的简化的执行过程。在某些实施例中,除了确定探测模式之外,数据类型及其大小也被校验。还可以探测更复杂化的变量、比如阵列和甚至没有存储在连续结构中的变量。用这个方法,当软件正在被测试时多种类型的数据可以从软件被捕获以及被插入软件中。
虽然本发明的特殊实施例和应用已经被说明和描述,但是应当理解,本发明不受限于在此公开的精确的结构和组合,并且可以在没有背离如在所附的权利要求中定义的本发明范围的前提下对上述内容做出修改和变化。
权利要求
1.一种用于测试其中具有多个数据变量和函数参数的软件的方法,包括执行软件;识别该软件所使用的至少一个变量或参数的地址单元;把任何存储在该地址单元中的数据输出到测试系统,以便监控该数据;和把来自测试系统的数据输入该地址单元,从而替换之前存储在该地址单元中的任何数据。
2.权利要求1的方法,其中,输入到该地址单元中的数据是从该地址单元输出的数据的修订版本。
3.权利要求1的方法,其中,输入到该地址单元中的数据与从该地址单元输出的数据相同。
4.权利要求1的方法,其中,输入到该地址单元中的数据基于在之前迭代过程中从该地址单元输出的数据而被产生。
5.权利要求1的方法,其中,输入到该地址单元中的数据包括基于在之前迭代过程中从该地址单元输出的数据而产生的数据测试矢量。
6.权利要求1的方法,其中,该地址单元标识计算机存储器中的存储单元。
7.权利要求1的方法,其中,该地址单元标识硬盘中的存储单元。
8.一种用于测试其中具有多个数据变量和函数参数的软件的设备,包括中央处理单元;被连接到中央处理单元上的存储单元,该存储单元存储计算机可读指令,以用于指示中央处理单元执行软件;识别该软件所使用的至少一个变量或参数的地址单元;把任何存储在该地址单元中的数据输出到中央处理单元,以便监控该数据;和把来自中央处理单元的数据输入该地址单元,从而替换之前存储在该地址单元中的任何数据。
9.权利要求8的设备,其中,输入到该地址单元中的数据是从该地址单元输出的数据的修订版本。
10.权利要求8的设备,其中,输入到该地址单元中的数据与从该地址单元输出的数据相同。
11.权利要求8的设备,其中输入到该地址单元中的数据基于在之前迭代过程中从该地址单元输出的数据而产生。
12.权利要求8的设备,其中,输入到存储区中的数据包括基于在之前迭代过程中从该地址单元输出的数据而产生的数据测试矢量。
13.权利要求8的设备,其中,该地址单元标识计算机存储器中的存储单元。
14.权利要求8的设备,其中,该地址单元标识硬盘中的存储单元。
15.一种用于测试其中具有多个数据变量和函数参数的软件的系统,包括被测装置,被配置来执行在软件中包括一个或多个探测器指令的软件;被连接到该被测装置上的测试器,该测试器被配置来控制该被测装置,因此当探测器指令被执行时,该被测装置将识别该软件所使用的至少一个变量或参数的地址单元;把任何存储在该地址单元中的数据输出到测试器;和把从该测试器接收的数据输入该地址单元中。
16.权利要求15的系统,其中,输入到该地址单元中的数据是从该地址单元输出的数据的修订版本。
17.权利要求15的系统,其中,输入到该地址单元中的数据与从该地址单元输出的数据相同。
18.权利要求15的系统,其中,输入到该地址单元中的数据基于在之前迭代过程中从该地址单元输出的数据而产生。
19.权利要求15的系统,其中,输入到存储区中的数据包括基于在之前迭代过程中从该地址单元输出的数据而产生的数据测试矢量。
20.权利要求15的系统,其中,该地址单元标识计算机存储器中的存储单元。
21.权利要求15的系统,其中,该地址单元标识硬盘中的存储单元。
22.权利要求15的系统,其中,测试器和被测装置存在于单个单元中。
全文摘要
用于双向探测软件的方法和系统被公开。双向探测能够在被测软件之间进行双向传送。这种数据双向传送不仅允许监控软件中的变量和参数,而且可以根据需要来改变它们。当为测试目的运行时,测试矢量可以被开发并被插入软件。通过使用将来自之前迭代的数据用作下一次迭代,回归分析可以变得更容易。
文档编号G06F11/36GK1701305SQ03825351
公开日2005年11月23日 申请日期2003年9月22日 优先权日2002年9月23日
发明者P·O·罗伯松 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1