关于对访问请求的意外响应验证计算机程序的方法和装置的制作方法

文档序号:6438224阅读:119来源:国知局
专利名称:关于对访问请求的意外响应验证计算机程序的方法和装置的制作方法
技术领域
本公开一般涉及计算机程序的验证,并且特别涉及可在计算机程序的操作期间从第一主机迁移到第二主机的计算机程序的测试。
背景技术
计算机化设备控制几乎我们生活的每个方面-从写入文档到控制交通信号灯。然而,计算机化设备是易于出现故障的,因此需要应当发现故障的测试阶段。在设计计算机化设备时,测试阶段被视为最困难的任务之一。由于故障的结果可能是灾难性的,因此不发现故障的成本可能是巨大的。例如,故障会导致依赖于计算机化设备的指定行为的人受伤。另外,硬件或固件中的故障修理起来是成本昂贵的,因为维修它需要召回计算机化设备。由此,计算机化设备的许多开发者投入相当一部分开发周期来发现计算机化设备的错误行为。计算机程序可由诸如计算机服务器的主机操作。当今,云计算是被很好地建立和利用的计算范例。在云计算中,计算机程序可由诸如服务器和类似计算机器的网络的处理设备的“云”来执行。在通过云执行计算机程序期间,计算机程序可从第一主机迁移到第二主机。例如,计算机程序可由虚拟机执行。虚拟机可首先由第一服务器处理,然后虚拟机可被迁移到第二服务器以继续执行计算机程序。服务器和其它计算机器被视为主机。主机可负责向虚拟机并因此向计算机程序提供资源。资源可以是例如空闲存储器、共享存储器、存储空间、对伪随机发生器的访问或对时钟的访问等。

发明内容
公开的主题的一个示例性实施例是一种计算机实现的方法,该方法包括通过由计算机化设备操作计算机程序来测试计算机程序,其中,计算机化设备操作用于向计算机程序提供对资源的访问;截取计算机程序对资源的访问请求,其中,所述截取包含确定要向计算机程序提供的响应;和向计算机程序提供确定的响应,而不是来自资源的对所述请求的响应。公开的主题的一个示例性实施例是一种具有处理器的计算机化装置,该装置包括操作用于操作计算机程序的测试模块,其中,测试模块被配置成向计算机程序提供对资源的访问;操作用于截取计算机程序对资源的访问请求的截取器,其中,截取器包含操作用于确定要向计算机程序提供的响应的响应确定器,并且,截取器进一步操作用于向计算机程序提供确定的响应,而不是来自资源的对所述请求的响应。公开的主题的一个示例性实施例是一种计算机程序产品,该产品包含计算机可读介质;用于通过由计算机化设备操作计算机程序来测试计算机程序的第一程序指令,其中,计算机化设备操作用于向计算机程序提供对资源的访问;用于截取计算机程序对资源的访问请求的第二程序指令,其中,第二程序指令包含用于确定要向计算机程序提供的响应的第三程序指令;和用于向计算机程序提供确定的响应,而不是来自资源的对所述请求的响应的第四程序指令;其中,第一、第二、第三和第四程序指令被存储在所述计算机可读介质上。


结合相应或类似附图标记表示相应或类似部件的附图阅读以下详细描述,将更完全地理解和认识本公开的主题。除非另外指出,附图提供公开的各示例性实施例或方面并且不限制公开的范围。在这些附图中,图I示出根据主题的一些示例性实施例,使用公开的主题的计算机化环境。图2示出根据公开的主题的一些示例性实施例的装置的框图。图3示出根据公开的主题的一些示例性实施例的方法的流程图。图4示出根据公开的主题的一些示例性实施例的云计算环境。图5示出根据公开的主题的一些示例性实施例的抽象模型层。
具体实施例方式以下参照根据主题的实施例的方法、装置(系统)和计算机程序产品的流程图和/ 或框图描述公开的主题。可以理解,可通过计算机程序指令实现流程图和/或框图的各块和流程图和/或框图中的块的组合。这些计算机程序指令可被提供给通用计算机、特殊用途计算机或其它可编程数据处理装置的处理器以制造机器,使得通过计算机或其它可编程数据处理装置的处理器执行的指令产生用于实现在流程图和/或框图块中规定的功能/作用的部件。这些计算机程序指令也可被存储在计算机可读介质中,该计算机可读介质可引导计算机或其它可编程数据处理装置以特定方式起作用,使得存储在计算机可读介质中的指令产生包含实现在流程图和/或框图块中规定的功能/作用的指令部件的制造物品。计算机程序指令也可被加载到计算机或其它可编程数据处理装置,以引起在计算机或其它可编程装置上执行一系列操作步骤,以产生计算机实现的处理,使得在计算机或其它可编程装置上执行的指令提供用于实现在流程图和/或框图块中规定的功能/作用的处理。公开的主题应对的一种技术问题是测试由云操作时的计算机程序。另一技术问题是测试主机之间的迁移是否会使计算机程序的操作无效。另一技术问题是通过在单个主机上执行计算机程序或由另一非云处理系统执行计算机程序,关于云处理模式测试计算机程序。另一技术问题是关于不与云计算环境特别有关的可能迁移测试计算机程序。一种技术方案是模拟来自主机的对计算机程序的请求的资源响应。模拟的响应可被配置成模拟会在发生迁移的情况下发生的响应。另一技术方案是截取资源请求并提供替代的模拟响应。再一技术方案是截取引向主机的时钟的时间请求,并且模拟替代的响应。再一技术方案是通过随机地选择事先提供的响应的预定范围内的响应来模拟替代的响应。例如,在事先提供时间06:32:16的情况下,模拟响应可以是距离事先提供的时间在I分钟范围内的随机时间(即,06:31:16和06:33:16之间的时间)。利用公开的主题的一种技术效果是模拟迁移的技术效果,而不必在测试阶段执行实际迁移。测试环境可以是相对简单的处理环境,并且不需要是云处理环境。另一技术效果是模拟在单个主机环境中预料不到但可能在云处理环境中发生的资源响应。例如,当时间是严格单调增加的函数时,第一提供时间必须早于在后面提供的第二提供时间。然而,在云计算环境中,由于可能基于第一时钟来提供第一时间并且可能基于第二时钟来提供第二时间,因此,可能会违反该提供的时间的固有特征。当通过单个主机执行计算机程序时,公开的主题提供了模拟这种情形的技术效果。另一技术效果是模拟其中返回的时间不由严格单调增加的函数表示的计算机程序的执行。另一技术效果是关于时钟前跳,测试计算机程序的操作。在一些示例性实施例中,由于时钟前跳,超时操作可被调用,并且可以测试计算机程序对于超时值的敏感性。现在参照示出根据主题的一些示例性实施例的使用公开的主题的计算机化环境的图I。计算机化环境100可包含计算机程序110。计算机程序110可以是操作用于操作也被称为主机的诸如处理器的处理机器的一组指令。可以在计算机可读介质上嵌入计算机程序110。可通过云105来操作计算机程序110。云105可包含多个诸如主机106的主机。 可以在诸如LAN、WAN、WiFi、WiMax、Intetnet、intranet、它们的组合或其它通信网络的计算机网络中连接云105的主机。在一些示例性实施例中,计算机程序110可与云105的特定实现细节无关。例如,计算机程序110可与云105的主机的数量、它们的使用硬件的类型、 或连接主机的方式等无关。在一些示例性实施例中,可通过使用虚拟机(VM)(未示出)来执行计算机程序110。VM可被用于从计算机程序110提取实现细节。VM可能能够被云105 执行。在计算机程序110的执行期间,云可从一个主机向另一个主机迁移VM。计算机程序 110可能不知道发生这种事件。在一些示例性实施例中,在不使用VM的示例性实施例中也会发生迁移。在一些示例性实施例中,迁移可包含取得分配用于VM的存储器的快照、用所述快照设定另一主机的存储器并释放分配的存储器。当存储器保持计算机程序110的当前状态时,复制它可被视为将计算机程序110从一个主机移动到另一个主机。注意,在特定状态 (例如,文件处理器或信号量等)下,可能需要诸如设定操作系统(OS)实体的附加操作。本领域技术人员能够将计算机程序110(通过或不通过虚拟机)从云中的一个主机迁移到云中的另一个主机。注意,也可在非云计算环境中发生迁移。例如,程序的快照可被取得并在后面被用于在重新启动之后在同一机器中继续计算机程序。作为另一例子,快照可被用于在另一机器(未必是云的一部分)上继续计算机程序的操作。在一些示例性实施例中,验证装置120可被配置成测试计算机程序110的执行。验证装置120可被配置成执行诸如保持在测试基准中的计算机程序110的测试。测试可定义诸如来自用户的输入或来自执行计算机程序110的环境的输入等的对计算机程序110的激励事件。验证装置120可包含向执行的计算机程序110提供计算能力和/或其它资源的执行主机130。在一些示例性实施例中,执行主机130可以是诸如106的单个主机。在其它示例性实施例中,执行主机130可以是诸如105的云。对于公开主题的目的,执行主机130的实现细节一般不是特别重要的。在一些示例性实施例中,用户140可通过诸如终端、显示器、键盘或输入设备等的人机界面(MMI) 145与验证装置120进行交互。用户140可关于计算机程序110定义使用的测试。用户140可向验证装置120提供规则、命令、偏好和参数。用户140可观察验证装置120的输出。基于所述输出,用户140可确定设计新的测试或修改测试(或者,在基于生成的测试的情况下,修改用于生成测试的测试模板)等。用户140可进一步识别故障、报告识别的故障和/或校正识别的故障。现在参照示出根据公开的主题的一些示例性实施例的装置的图2。诸如图I的120 的装置200可被配置成测试诸如图I的110的计算机程序的功能操作。在一些示例性实施例中,测试模块210可被配置成操作诸如图I的110的计算机程序。测试模块210可被配置成通过执行程序来便利计算机程序的测试。在一些示例性实施例中,测试程序被配置成访问执行计算机程序的主机的资源。一些示例性资源可以是性能统计(例如,空闲存储空间、执行的处理的数量或CPU使用率等)、与主机相关联的存储器的存储位置或时钟等。在一些示例性实施例中,测试模块210操作用于测试当计算机程序在云处理环境中执行时的操作。在一些示例性实施例中,测试模块210可操作用于在主机(或多个主机)上执行测试程序并向主机提供与测试计算机程序相关联的适当激励。激励的非详尽列表可包含 对计算机程序提供的输入或诸如线程的并行实体的调度等。在一些示例性实施例中,访问识别器220可被配置成识别计算机程序对资源的访问请求。访问识别器220可通过向资源请求添加挂钩,诸如例如挂到系统呼叫请求上,来识别访问。在一些示例性实施例中,访问识别器220可通过回顾计算机程序的程序代码并且识别有关功能呼叫的调用来识别访问。在一些示例性实施例中,访问识别器220可被配置成在通过测试模块210执行计算机程序之前预处理计算机程序。在预处理期间,可以识别操作用于访问资源的功能呼叫,并且,可使用其在执行过程中的调用来识别访问请求。在一些示例性实施例中,代码插装器225可被用于插装(instrument)操作用于与函数的调用相关地被调用的代码。例如,代码可被插装在函数的开头。作为另一例子,可以使用宏定义(例如,C语言中的#定义命令)来用插装的代码的调用替代函数引用。在一些示例性实施例中,诸如在源代码不可用(即,“黑箱”的测试)的情况下,可关于计算机程序的二进制表示来执行插装。可在与执行诸如例如调用系统引用或应用编程界面(API)等的访问请求相关联的部分中插装二进制码。本领域技术人员能够以另外和替代的方式来实现访问识别器220的识别。在一些示例性实施例中,可由访问识别器220识别调用诸如C时间库的函数的操作用于访问时钟并返回时间的函数。在一些示例性实施例中,代码插装器225可操作用于用诸如与截取器230相关联的替代函数来替代对函数的函数引用,将在下面进一步描述这一点。在一些示例性实施例中,截取器230可操作用于截取诸如由访问识别器220识别的访问请求,并且提供其确定的响应。响应可由响应确定器240来确定。可通过使用由代码插装器225插装的插装代码来执行访问请求的截取。截取器230可操作用于在访问或不访问执行主机的资源的情况下提供响应。例如,在针对机器的时钟的访问请求的情况下,可以在访问或不访问时钟本身的情况下返回时间。确定的响应可以是与时钟返回的时间不同的时间。在一些示例性实施例中,响应确定器240可被配置成确定对访问请求的响应。在一些示例性实施例中,响应确定器240可确定随机响应。在一些示例性实施例中,响应确定器240可基于先前提供的响应来确定响应。在一些示例性实施例中,响应确定器240可操作用于保持提供的响应并利用它们用于将来的响应确定。在一些示例性实施例中,先前提供的响应可被用作基准值,并且,确定的响应可以是处于基准值的预定范围内的值。所述范围可由诸如图I的140的用户确定,并且可选地使用诸如205的输入模块被提供给装置200。 所述范围会受到各种附加因素的影响。作为例子,考虑提供响应“时间”的资源“时钟”。确定的时间可基于作为基准点的先前提供的时间。确定的时间可在距离先前的响应两分钟的范围内。在一个示例性实施例中,所述范围会受到自先前的响应经过的时间的影响。在一些示例性实施例中,可通过访问实际资源(例如,主机的时钟)来确定诸如例如第一响应的一些确定的响应。在一些示例性实施例中,响应确定器240可操作用于提供在先前提供的时间之前的时间。由于时间是严格单调增加的函数,因此,在非云计算环境中,这种响应一般不是有效响应。然而,由于可由第一主机的第一时钟提供第一响应,而可由第二主机的第二时钟提供第二响应,因此,可在云计算环境中发生这种响应。在一些示例性实施例中,响应确定器240可操作用于提供时间,使得该时间和先前提供的时间之间的时间差长于提供先前提供的时间和该时间之间的实际时间差。以这种方式,可模拟时钟的前跳。作为替代方案,这可被用于模拟执行计算机程序的计算机的操作的缓慢执行的一些方面。在一些示例性实施例中,计算机程序可响应于超时值,并且,提供的时间可被用于测试当达到超时值时计算机程序的操作。在一些示例性实施例中,计算机程序可固有地假定操作的近似定时。例如,由于计算机程序的程序编制员假定在预定时间量内将完成一些并行操作,因此,可在所述预定时间量内调用睡眠命令。在一些示例性实施例中,响应确定器240可访问时钟以确定当前时间。确定的时间可以是从当前时间在至少预定持续时间之后的时间。例如,在当前时间为09:10:20并且预定持续时间为I分钟的情况下,确定的时间可以为09:11:22,09:20:00,10:00:00或 23:00:00等。在一些示例性实施例中,除了最小偏移时间或者作为其替代,可预定最大偏移时间。例如,时间可被偏移2分钟的最小偏移和10分钟的最大偏移。在一些示例性实施例中,装置200可被配置成响应于第一请求而提供当前时间,并且响应于连续请求而提供根据本段的时间,由此提供具有快速时钟的模拟。快速时钟可被明显变快(例如,每秒快速时钟跳过十秒)。在一些示例性实施例中,由于两个连续时间请求之间的报告的时间间隔被报告比实际的更长/更短,因此,响应提供了通过慢或快处理装置执行计算机程序的模拟。 换句话说,在一个时间周期内实际执行的若干指令被报告为在更短/更长的时间周期内执行。在一些示例性实施例中,随机化模块245可被用于以随机或伪随机方式来确定响应。随机化模块245可被用于确定基准值的预定范围内的响应。在一些示例性实施例中,装置200可包括处理器202。处理器202可以是中央处理单元(CPU)、微处理器、电子电路或集成电路(IC)等。处理器202可被用于执行装置200 或其任意子部件所需的计算。在公开的主题的一些示例性实施例中,装置200可包括输入/输出模块(1/0)205。 I/O模块205可被用于向诸如图I的140的用户提供输出并从其接收输入。
在一些示例性实施例中,装置200可包括存储设备207。存储设备207可以是硬盘驱动、闪存盘、随机存取存储器(ROM)或存储器芯片等。在一些示例性实施例中,存储设备207可保持操作用于使处理器202执行与装置200的任意子部件相关联的动作的程序代码。在一些示例性实施例中,存储设备207可保持先前提供的响应。现在参照示出根据公开的主题的一些示例性实施例的方法的流程图的图3。虽然图3特别地参照其中访问的资源是返回时间的时钟的例子,但公开的主题不限于该例子。在步骤300中,获得要测试的计算机程序。可获得计算机程序的二进制表示。可获得源代码表示。可通过诸如图2的205的输入模块获得计算机程序。在步骤310中,可由计算机化设备执行所述计算机程序。所述计算机程序可出于测试其操作的目的而被执行。所述计算机程序可由诸如图2的210的测试模块来执行和测试。在步骤320中,可识别对时钟的访问请求。可由诸如图2的220的访问识别器执行识别。在一些示例性实施例中,可通过预处理计算机程序或通过在执行计算机程序之前用有关代码插装计算机程序等来实现识别。在步骤330中,可以截取访问请求。在一些示例性实施例中,可截取访问请求并可能或者可不访问时钟。在一些示例性实施例中,可通过执行由诸如图2的225的代码插装器插装的代码来截取访问请求。可由诸如图2的230的截取器执行截取。在步骤340中,可确定响应于访问将被提供的时间。可由诸如图2的240的响应确定器确定时间。可将时间提供给计算机程序。在执行确定并提供确定的时间之后,根据公开的主题,可识别并响应于附加访问请求。在一些示例性实施例中,确定要提供的时间包含步骤342和344。在步骤342中,可获得先前提供的时间。可从诸如图2的207的存储设备获得所述时间。在步骤344中,可随机地确定先前提供的时间之前的时间。可通过使用诸如图2 的245的随机化模块来执行确定。确定的时间可早于先前提供的时间,并因此可使返回时间是严格单调增加的函数的假定无效,这种假定在云计算环境中可能是不正确的。确定的时间可被确定,以便提供长于在提供两个时间值之间实际经过的时间的该时间和先前提供的时间之间的时间差。在一些示例性实施例中,确定要提供的时间包含步骤346和348。在步骤346中,可以与步骤342类似的方式获得先前提供的时间。在步骤348中,可确定先前提供的时间的预定范围内的随机时间。可通过使用诸如图2的245的随机化模块来确定随机时间。预定范围可以是由诸如图I的140的用户确定的范围。在一些示例性实施例中,在执行计算机程序的充分测试之后(例如,基于覆盖度量或QA成员的确定等),计算机程序可被视为“是安全的”以被加载到云上以在其上运行。 在一些示例性实施例中,云的管理权可能禁止加载没有经过充分测试的计算机程序。公开的主题可被用作在将计算机程序加载到云上之前执行的单独测试或附加测试。仅为了阐明公开提供了以下例子,并且,该例子不应被解释为限制公开的主题的范围。考虑以下代码片段
time I = gettime ();time2 = gettime ();timersub (timel, time2, &diff);assert (diff. tv_sec > = 0);这里,timersub是操作用于通过从“time2”减去“timel”来确定“timel”和 “time2”之间的时间差并将时间差赋予“diff”的函数。由于“timel”基于在与设定“time2” 相关联的时钟读取之前执行的时钟读取被设定,因此,当在非云计算环境中测试时,该代码片段是稳定的。然而,在云计算环境中,“timel”可包含“time2”之后的时间,因此断言可能失败。公开的主题可被用于测试该代码片段,并且确定在一些情形中,在云计算环境中, “time2”即使在后面被设定也可以是“timel”之前的时间。公开的主题可被用于通过执行计算机程序、识别对资源的访问请求(例如,调用函数“gettime”)、截取访问请求并确定要依次提供的响应,来测试包含该代码片段的计算机程序。可以理解,虽然本公开包括云计算的详细描述,但是这里引用的教导的实现不限于云计算环境。而是本发明的实施例能够结合现在已知或者以后开发的任何其它类型的计算环境被实现。为了方便,公开以下的定义,以提供云计算环境的彻底理解。所述定义源自Peter Mell 和 Tim Grance 在 2009 年 10 月 7 日提交的“Draft NIST Working Definition of Cloud Computing”,该文件在这里提交的IDS中被引用并且其复本作为附件提交。云计算是对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、 应用、虚拟机和服务)的共享池,实现方便的按需网络访问的服务传输模型,所述可配置计算资源可以通过最小管理工作或与服务提供者的交互被迅速提供和释放。该云模型可包含至少五种特性、至少三种服务模型和至少四种部署模型。特性如下按需自服务云消费者可以在不需要与服务提供者进行人员交互的情况下,根据需要自动地单方面地提供诸如服务器时间和网络存储的计算能力。宽网络访问在网络上可用,并且通过促进异构薄或厚客户机平台(例如,移动电话、膝上型计算机和PDA)的使用的标准机构被访问。资源成池提供者的计算资源被成池以使用多占用者模型来服务多个消费者,根据需要动态地分配和再分配不同的物理和虚拟资源。存在这样一种位置独立性的感觉,即, 消费者一般在提供的资源的确切位置上没有控制或知识,但是能够在更高的抽象水平上规定位置(例如,国家、州或数据中心)。迅速弹性在一些情况下可以自动地、迅速地并且弹性地提供能力,以迅速地标出并且迅速地释放以迅速地标入。对于消费者,可用于提供的能力常常看起来是不受限制的, 并且,并且可以在任何时间以任意的量被购买。测量服务云系统通过在适于服务类型(例如,存储、处理、带宽和活动用户帐户) 的一些抽象水平上平衡计量能力,自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而对于利用服务的提供者和消费者两者提供透明性。服务模型如下
作为服务的软件(SaaS):提供给消费者的能力是使用在云基础结构上运行的提供者的应用。可通过诸如网络浏览器(例如,基于web的电子邮件)的薄客户机界面从各种客户机设备访问所述应用。消费者不管理或控制包含网络、服务器、操作系统、存储器或者甚至单个应用能力的底层云基础结构,有限的用户特殊应用配置设定可能是例外。作为服务的平台(PaaS):提供给消费者的能力是将消费者创建的或使用由提供者支持的编程语言和工具创建的获取应用部署到云基础结构上。消费者不管理或控制包含网络、服务器、操作系统或存储器的底层云基础结构,但对于部署的应用和宿主环境配置的应用具有控制。作为服务的基础结构(IaaS):提供给消费者的能力是提供消费者能够部署和运行可包含操作系统和应用的任意软件的处理、存储、网络和其它基础计算资源。消费者不管理或控制底层云基础结构,但对于操作系统、存储、部署的应用具有控制,并可能对于选择联网部件(例如,主机防火墙)具有有限控制。部署模型如下私人云云基础结构被操作单独用于一个组织。可由组织或第三方管理它,并且可存在应急或备用设备。社区云云基础结构由几个组织共享,并且支持具有共享关注(例如,任务、安全需要、政策和符合性考虑)的特定社区。可由组织或第三方管理它,并且可存在应急或备用设备。公共云使得云基础结构可用于一般公共或大的工业组并且由出售云服务的组织拥有。混合云云基础结构是保持唯一实体但通过实现数据和应用便携性的标准化或私有技术接合在一起的两个或更多个云(私人、社区或公共)的合成物(例如,用于云之间的负载均衡的云突发)。云计算环境是通过关注无国籍、低耦合、模块性和语义互用性取向的服务。本质上,云计算环境是包含互连节点的网络的基础结构。现在参照示出诸如图I的105的示意性云计算环境50的图4。如所示的那样,云计算环境50包含一个或更多个云计算节点10,通过所述云计算节点,诸如例如个人数字助理(PDA)或蜂窝式电话54A、台式计算机54B、膝上型计算机54C和/或车载计算机系统54N 的由云消费者使用的本地计算设备可相互通信。节点10可相互通信。在一个或更多个诸如以上描述的私人、社区、公共或混合云的网络或者它们的组合中,它们可以在物理上或在虚拟上被分组(未示出)。这允许云计算环境50提供基础结构、平台和/或软件作为云消费者不需要在本地计算设备上保持资源的服务。可以理解,图4所示的计算设备54A N 的类型仅出于解释的目的,并且,计算节点10和云计算环境50可在任意类型的网络和/或网络可寻址连接(例如,通过使用web浏览器)上与任意类型的计算机化设备通信。现在参照图5,示出由云计算环境50(图4)提供的一组功能抽象层。应当事先理解,图5所示的部件、层和功能仅出于解释的目的,并且,本发明的实施例不限于此。如所示的那样,提供以下的层和相应的功能硬件和软件层60包含硬件和软件部件。硬件部件的例子包含主计算机,一个例子是IBM zSeries 系统;基于Rise(精简指令集计算机)体系结构的服务器,一个例子是IBM pSeries 系统;ibm xSeries 系统;iBMBladeCenter 系统;
存储设备;网络和联网部件。软件部件的例子包含网络应用服务器软件,一个例子是 IBM WebSphere 应用服务器软件;和数据库软件,一个例子是IBMDB2 数据库软件。(IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphere 和 DB2 是在世界范围内的许多司法地域中注册的国际商业机器公司的商标)。虚拟化层62提供可从中提供以下例子的虚拟实体的抽象层虚拟服务器虚拟存储器;虚拟网络,包含虚拟私人网络;虚拟应用和操作系统;以及虚拟客户机。在一个例子中,管理层64可提供以下描述的功能。资源提供提供用于在云计算环境内执行任务的计算资源和其它资源的动态供应。计量和定价提供当在云计算环境内利用资源时的成本跟踪,以及消费这些资源的结算或计价。在一个例子中,这些资源可包含应用软件许可。安全提供对于云消费者和任务的身份验证以及对于数据和其它资源的保护。用户门户向消费者和系统管理员提供对云计算环境的访问。服务水平管理提供云计算资源分配和管理,使得满足需要的服务水平。服务水平协定(SLA)计划和实现根据SLA提供预期未来需要的云计算资源的预安排和供应。工作负载层66提供可利用云计算环境的功能的例子。可从该层提供的工作负载和功能的例子包含地图和导航;软件开发和生命周期管理;虚拟教室教育传输;数据分析
处理;事务处理等。图中的流程和框图示出根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的体系结构、功能和操作。在这一点上,流程图或框图中的各块可表示包含用于实现规定的逻辑功能的一个或更多个可执行指令的模块、段或代码部分。还应注意,在一些替代性实现中,在块中注明的功能的次序可以与在图中注明的次序不同。例如,根据包含的功能,连续表示的两个块事实上可被基本上同时执行,或者,各块有时可以以相反的次序被执行。还应注意,可通过执行规定的功能或作用的基于特殊用途硬件的系统或特殊用途硬件和计算机指令的组合,实现框图和/或流程图的各块和框图和/或流程图的各块的组合。这里使用的术语仅出于描述特定的实施例的目的,并且不是要限制本发明。如这里使用的那样,除非上下文清楚地另外表示,否则,单数形式“一个”、“一种”和“该”也要包含多数形式。还应理解,在本说明书中使用的术语“包括”和/或“包含”规定陈述的特征、 整数、步骤、动作、要素和/或部件的存在,但不排除一个或更多个其它的特征、整数、步骤、 动作、要素、部件和/或它们的组的存在或添加。本领域技术人员可以理解,公开的主题可体现为系统、方法或计算机程序产品。因此,公开的主题可采取完全硬件实施例、完全软件实施例(包含固件、驻留软件、微代码等) 或组合软件和硬件方面的实施例,它们在这里均可被统称为“电路”、“模块”或“系统”。并且,本发明的方面可采取在具有在介质中体现的计算机可用程序代码的表现的任何可接触知介质中体现的计算机程序产品的形式。可以利用一个或更多个计算机可用或计算机可读介质的任意组合。计算机可用或计算机可读介质可例如为但不限于电子、磁、光学、电磁、红外或半导体系统、装置或设备或传播介质。计算机可读存储介质的更具体的例子(非详尽的列表)会包含以下方面具有一个或更多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPR0M或快擦写存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光学存储设备、诸如支持因特网或内联网的传输介质或磁存储设备。注意,由于程序可通过例如纸或其它的介质的光学扫描以电子的方式被捕获、然后如果必要的话以适当的方式被编辑、解释或以另外的方式被处理并被然后被存储于计算机存储器中,因此,计算机可用或计算机可读介质甚至可以为上面打印程序的纸或另一适当的介质。在本文件的上下文中,计算机可用或计算机可读存储介质可以是可包含、存储、通信、传播或传输供指令执行系统、装置或设备使用或与其组合的程序的任何介质。计算机可用介质可例如在基带中或作为载波的一部分包含具有在其中体现的计算机可读程序代码的传播的数据信号。 可通过使用包含但不限于无线、有线、光纤电缆、RF等或以上的任意适当的组合的任意适当的介质传送在计算机可用程序代码。可以以包括诸如Java、Smalltalk、C++等的面向对象的编程语目和诸如“C”编程语言或类似的编程语言的常规的过程编程语言的一个或更多个编程语言的任意组合书写用于实施本发明的操作的计算机程序代码。程序代码可整体在用户的计算机上、作为独立软件封装部分地在用户的计算机上、部分地在用户的计算机上并且部分地在远程计算机上或者完全在远程计算机或服务器上执行。在后一种方案中,远程计算机可通过包含局域网络(LAN)或广域网络(WAN)的任意类型的网络与用户的计算机连接,或者,可与外部计算机连接(例如,通过使用Internet Service Provider的因特网)。以下的权利要求中的相应的结构、材料、动作和所有手段或步骤加功能要素的等同物要包含用于与特别要求权利的其它的要求权利的要素结合执行功能的任何结构、材料和动作。本发明的描述的给出是出于解释和描述的目的,不是详尽的,或者不是将本发明限于公开的形式。在不背离本发明的范围和精神的情况下,许多的修改和变更对于本领域技术人员来说是十分明显的。实施例的选择和描述是为了最好地解释本发明的原理和实际的应用并且为了使得其它的本领域技术人员能够理解本发明的具有适于设想的实际用途的各种修改的各种实施例。
权利要求
1.一种计算机实现的方法,该方法包括通过由计算机化设备操作计算机程序来测试计算机程序,其中,计算机化设备操作用于向计算机程序提供对资源的访问;由计算机程序截取对资源的访问请求,其中,所述截取包含确定要向计算机程序提供的响应;和向计算机程序提供确定的响应而不是来自资源的对请求的响应。
2.根据权利要求1的计算机实现的方法,其中,所述资源是时钟;并且,所述响应是时钟的时间。
3.根据权利要求2的计算机实现的方法,其中,所述确定包含检索先前提供的时间;和随机化在先前提供的时间的预定范围内的时间,其中,随机化的时间是所述确定的响应。
4.根据权利要求3的计算机实现的方法,还包括从用户接收所述预定范围。
5.根据权利要求2的计算机实现的方法,其中,所述确定包含检索先前提供的时间;和将所述时间确定为在先前提供的时间之前。
6.根据权利要求5的计算机实现的方法,其中,所述确定包含从所述时钟检索当前时间;和将时间确定为从当前时间至少在预定持续时间之后的时间。
7.根据权利要求I的计算机实现的方法,其中,关于对资源的多个访问请求,所述截取被执行多次。
8.根据权利要求I的计算机实现的方法,其中,所述测试包含测试所述计算机程序在云计算环境中的操作的有效性。
9.根据权利要求8的计算机实现的方法,还包括响应于所述测试操作的有效性的完成,将计算机程序加载到云计算环境上。
10.根据权利要求I的计算机实现的方法,还包括预处理所述计算机程序并且识别操作用于访问资源的函数调用。
11.根据权利要求10的计算机实现的方法,还包括用操作用于替代函数调用的代码来插装所述计算机程序;并且,其中,所述截取包含执行所述代码。
12.一种具有处理器的计算机化设备,该设备包括操作用于操作计算机程序的测试模块,其中,所述测试模块被配置成向计算机程序提供对资源的访问;操作用于截取计算机程序对资源的访问请求的截取器,其中,所述截取器包含操作用于确定要向计算机程序提供的响应的响应确定器,并且,所述截取器进一步操作用于向计算机程序提供预定响应,而不是来自资源的对请求的响应。
13.根据权利要求12的计算机化设备,其中,其中,所述资源是时钟;并且,所述响应是时钟的时间。
14.根据权利要求13的计算机化设备,其中,所述响应确定器进一步操作用于检索先前提供的时间;其中,所述响应确定器与操作用于随机化先前提供的时间的预定范围内的时间的随机化模块在操作上耦合,并且,其中,随机化的时间是确定的响应。
15.根据权利要求14的计算机化设备,其中,还包括操作用于从用户接收所述预定范围的输入模块。
16.根据权利要求13的计算机化设备,其中,所述响应确定器进一步操作用于检索先前提供的时间;并且,其中,确定的响应是先前提供的时间之前的时间。
17.根据权利要求13的计算机化设备,其中,所述响应确定器进一步操作用于从时钟检索当前时间,并且,将所述时间确定为从当前时间至少在预定持续时间之后的时间。
18.根据权利要求12的计算机化设备,其中,所述测试模块被配置成测试所述计算机程序在云计算环境中的操作的有效性。
19.根据权利要求12的计算机化设备,还包括操作用于预处理所述计算机程序并且识别操作用于访问所述资源的函数调用的访问识别器。
20.根据权利要求19的计算机化设备,其中,所述预处理所述计算机程序包含用操作用于替代所述函数调用的代码来插装所述计算机程序。
全文摘要
关于对访问请求的意外响应验证计算机程序的方法和装置。测试计算机程序包含识别计算机程序对底层主机所提供的资源的资源访问请求。资源访问请求可被截取,并且,确定的响应可被返回而不是底层主机的实际响应。在一些示例性实施例中,资源可以是底层主机的时钟,并且,响应可以是时钟的时间。在一些示例性实施例中,计算机程序可被测试以检查在云计算环境上执行期间的有效性,其中,对资源的访问会产生在非云计算环境上一般不可预料到的结果。测试可以在非云计算环境上执行并且模拟可应用于云计算环境的情形。
文档编号G06F11/36GK102591771SQ201110360010
公开日2012年7月18日 申请日期2011年11月15日 优先权日2010年11月18日
发明者A·兹罗特尼克, D·西特龙, Y·尼尔-布奇宾德 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1