自动操作系统测试框架的制作方法

文档序号:6361613阅读:300来源:国知局
专利名称:自动操作系统测试框架的制作方法
技术领域
本发明涉及计算系统的自动测试,具体涉及计算系统的支持接口元件的自动测试。
背景技术
本领域中公知用各种测试工具和测试装备(harness)来测试计算系统。在这方面,需要特别关注的测试的一个领域(area)在下述测试系统中,所述测试系统意欲在外部表现为好像它们是其它系统一样——例如,被设计来仿真或虚拟化其它系统或系统架构同时具有不同的内部结构、指令序列和操作特性的测试系统。另一个例子是修改或增强的系统的测试,以确定其仍旧支持前任(predecessor)系统(有时称为“回归(regression)测试”)的所有功能和行为特性。当需要在增强后测试操作系统的运算符命令行接口(operatorcommand-line interface)时,或当操作系统需要在不同的架构上再现其命令行接口特性时,需要大量略微重复的测试,从而导致由测试任务的本质造成的缺乏足够的覆盖范围和人为错误的潜在问题。虽然通常已知自动测试系统,但是这些自动测试系统没有解决上述的特定问题。例如,考虑跨平台应用翻译器的测试。在一个示例情况下,这样的跨平台翻译器允许对一个操作系统/CPU对编写应用从而在完全不同的操作系统/CPU对上运行。该技术需要传递与主机操作系统一起运行的附随的操作系统以及充当附随的操作系统和主机操作系统之间的桥梁的跨平台应用翻译器。在这样的环境中,期望自动测试附随的操作系统以确保在使用给定的翻译层的情况下,在命令集之下的操作系统的二进制(binaries)都以与其在参考平台上完全相同的方式操作。在测试下层的操作系统二进制时,本领域的技术人员将理解需要考虑二进制间的任何依赖性关系。例如,响应于对目录中的文件执行操纵的命令而执行的二进制的测试依赖于创建目录并向目录中填充文件的二进制。因此不能测试文件操纵二进制,直到制造二进制的目录和文件已被运用(exercise)为止。因此难以满足对下层二进制的穷尽和考虑依赖性的自动测试的需求,该下层二进制在接口层处由复合命令集表示。因此,希望解决已知测试系统的这些缺点。

发明内容
因此在第一方面,本发明提供一种自动测试第一计算系统的方法,包括:标识第二计算系统的多个系统接口元件;确定所述标识出的多个系统接口元件中的一个在所述第一计算系统处的未测试的状态;确定所述标识出的多个系统接口元件中的所述一个对所述标识出的多个系统接口元件中的另一个的任何依赖性的存在;响应于没有发现所述依赖性,在储存库中寻找与所述标识出的多个系统接口元件中的所述一个对应且具有根据所述第二计算系统的结构的预期输出的系统接口元件测试;以及在所述第一计算系统处执行所述系统接口元件测试。
该方法还可以包括步骤:响应于发现所述依赖性,在所述储存库中寻找与所述标识出的多个系统接口元件中的所述另一个对应的又一个系统接口元件测试;以及在所述第一计算系统处执行所述又一个系统接口元件测试。该方法还可以包括步骤:响应于所述寻找步骤发现所述系统接口元件测试或所述又一个系统接口元件测试失败,创建与所述标识出的多个系统接口元件中的所述一个对应的新测试;在所述第二计算系统处执行所述新测试;以及在所述储存库中存储所述新测试和与在所述第二计算系统处执行所述新测试的所述步骤的输出对应的预期输出。该方法还可以包括以下步骤:将在所述第一计算系统处执行所述系统接口元件测试或所述新测试的所述步骤的输出与所述储存库中的所述预期输出相比较;以及响应于执行所述步骤的所述输出和所述预期输出之间的不匹配,引出用户输入。优选地,所述用户输入选择性地掩蔽所述测试的所述输出的一部分。优选地,所述第一计算系统被布置以仿真所述第二计算系统的操作。在第二方面,提供了一种用于自动测试第一计算系统的系统,包括:标识组件,用于标识第二计算系统的多个系统接口元件;确定组件,用于确定所述标识出的多个系统接口元件中的一个在所述第一计算系统处的未测试的状态;确定组件,用于确定所述标识出的多个系统接口元件中的所述一个对所述标识出的多个系统接口元件中的另一个的任何依赖性的存在;寻找组件,响应于没有发现所述依赖性,在储存库中寻找与所述标识出的多个系统接口元件中的所述一个对应且具有根据所述第二计算系统的结构的预期输出的系统接口元件测试;以及执行组件,用于在所述第一计算系统处执行所述系统接口元件测试。该系统还可以包括:所述寻找组件还响应于发现所述依赖性,在所述储存库中寻找与所述标识出的多个系统接口元件中的所述另一个对应的又一个系统接口元件测试;以及所述执行组件还适配为在所述第一计算系统处执行所述又一个系统接口元件测试。该系统还可以包括:创建器组件,响应于所述寻找步骤发现所述系统接口元件测试或所述又一个系统接口元件测试失败,创建与所述标识出的多个系统接口元件的所述一个对应的新测试;所述执行组件还适配为在所述第二计算系统处执行所述新测试;以及存储组件,用于在所述储存库中存储所述新测试和与在所述第二计算系统处执行所述新测试的所述步骤的输出对应的预期输出。该系统还可以包括:比较器组件,用于将在所述第一计算系统处执行所述系统接口元件测试或所述新测试的所述步骤的输出与所述储存库中的所述预期输出相比较;以及输入引出组件,响应于执行所述步骤的所述输出和所述预期输出之间的不匹配,引出用户输入。优选地,所述用户输入选择性地掩蔽所述测试的所述输出的一部分。优选地,所述第一计算系统被布置以仿真所述第二计算系统的操作。在第三方面,提供了一种计算机程序,包括计算机程序代码以在当载入计算机系统并在该计算机系统上执行时,使所述计算机系统进行根据第一方面的方法的所有步骤。在示例性实施例中,本发明提供了以考虑命令依赖性并为多个并行测试写入器、实时反馈、多个平台和测试可移植性做好准备的方式用于操作系统的每个个别命令的系统执行的一种系统、方法和计算机程序。


现在将参照附图仅以示例的方式描述本发明的优选实施例,附图中:图1示出根据根本发明优选实施例的系统;以及图2示出根据本发明优选实施例的方法的步骤。
具体实施例方式如在以上背景技术部分所描述,难以满足对下层操作系统二进制的穷尽和考虑依赖性的自动测试的要求,该下层操作系统二进制在接口层处由复合命令集表示。根据优选实施例的示例性系统可以被一般地用于测试任何操作系统,特别是任何类似Unix的操作系统,而不依赖于被用于执行该操作系统的硬件,不论该硬件是真实或虚拟硬件。该系统具有基于网络的前端,其包括交互式测试开发接口、存储测试和关联的结果的数据库,以及通过各种通信方法(SSH、NFS、网络套接字、FTP)与远程测试机器远程交互以执行测试并获取结果的后端。所述测试在网络接口中被写入为标准操作系统命令,并且该系统从所述命令生成一个或多个外壳程序脚本(shell script);其被传送到测试机器并被执行。由于测试写入器仅需要输入系统命令,因此其不需要具有编程经验。由于类似Unix的操作系统经常共享很多相同的核心命令,因此可以在很多操作系统上再次使用并共享这些测试。该系统的关键部分在于其扩展到(scale to)很多并行用户写入和执行测试,并且由于测试写入器在数秒内自动得到有关其测试的反馈,因此允许快速测试开发。现在转到图1,其示出根据本发明优选实施例的系统。图1示出用于自动测试第一计算系统102的系统100,且系统100包括标识组件104,其用于标识第二计算系统108的多个系统接口元件106以及独立的第一计算系统102的多个系统接口元件107。系统接口元件106和系统接口元件107的交集为测试开发的目标。本领域普通技术人员会清楚,这里描述的系统是简化的且实际上本发明的实施例将涵盖多个计算系统102、108。系统100包括第一确定组件110,用于确定多个系统接口元件106中的一个在第一计算系统102处的未测试的状态;以及第二确定组件112,用于从由创建器122提供的元数据确定多个系统接口元件106中的一个对多个系统接口元件106中的另一个的任何依赖性的存在。系统100还包括寻找组件114,其响应于没有发现依赖性,在储存库116中寻找与多个系统接口元件106中一个对应且具有根据第二计算系统108的结构的预期输出的系统接口元件测试118 ;以及执行组件120,用于在第一计算系统102处执行该系统接口元件测试 118。在优选实施例中,第一计算系统102被布置为仿真第二计算系统108的操作。为了开始根据最优选的布置测试操作系统/CPU组合,通常需要三个机器:A.一个服务器,其通常为运行数据库的X86LinuX机器和网络服务器(通常为mysql和apache)-该系统保存储存库116 ;B.一个客户端(该客户端实质上是远程被测试机器,该远程被测试机器运行其意欲测试的组合且通常运行SSH)—该系统对应于第一计算系统102 ;以及C.一个参考平台,在该参考平台处执行命令从而建立比较的基础一此系统对应于第二计算系统108。测试机器被提供参考平台可用的尽可能多的不同配置选择。这允许测试尽可能独立于机器,这对测试的可靠性、可携带性和质量是必要的。一旦该系统启动,其与数据库通信并开始执行尚未记录任何结果的选择项目的测试。该系统自动确定其被导引使用的远程测试机器的架构和操作系统,并且随后仅尝试执行与该架构/操作系统组合相关联的测试。系统100还可以包括创建器组件122,其响应于寻找步骤发现系统接口元件测试118或又一个系统接口元件测试124失败,用于在第一参考计算系统123创建与多个计算接口元件106中的一个对应的新测试;以及存储组件126,用于在储存库116中存储该新测试和预期输出,预期输出对应于在第二计算系统108处参照第二参考计算系统125执行新测试的步骤的输出。创建器122具有对正在开发的测试的执行状态和结果的实时反馈。因此,如果在数据库中没有用于远程机器上组合的测试,则系统自动对远程机器进行二进制文件“bin”的扫描,并且本地的向数据库填充有关需要为其编写测试的bin的细节,并且如果操作系统能够提供则自动记录每个bin的描述。这使得新组合出现在网络接口中且其子二进制被标志(flag)为需要对其编写测试。随后测试写入器读取操作系统文档并选择二进制来测试。在优选实施例的系统100中,寻找器组件114响应于发现依赖性,适配为在储存库中寻找与多个系统接口元件106中的另一个对应的又一个系统接口元件测试124 ;以及执行组件120还被适配为在第一计算系统102处执行该又一个系统接口元件测试。因此,最初头几个二进制被任意地选择;随后,一旦测试开始开发,则建立有关bin的自然的优先级。这样执行的方式为测试写入器包括依赖性的列表:其它系统命令,所述其他系统命令用于其当前正在为之编写测试的二进制的测试中。其它测试所依赖的系统命令被认为具有更高的优先级——其倾向于是系统上最常用的命令。该优先级列表在更多测试被写入时动态生成。Bin具有的依赖(dependant)越多,则对其的测试赋予的优先级越闻。随后测试写入器执行它们在参考平台上用相关联的选项正在测试的二进制,并将命令及预期输出输入至系统。随后系统自动地在测试机器上运行该命令并且如果输出匹配预期则返回报告。如果测试匹配准确的输出,则认为通过且指示通过。如果该测试耗时超过标准的例如10秒的超时,则请求以20秒的超时再次运行并且设置为较低优先级。由于首先运行最快的运行测试,因此这允许快速的反馈。如果第二次运行该测试时,其在20内仍没有完成执行,则再次增加超时,这次增加到40秒。如果第三次其没有在40秒内结束,则将该测试标示为手动检查。如果测试在远程测试机器上运行且输出不匹配参考平台的输出,则确定该测试为失败。该系统还可以包括比较器组件128,用于将在第一计算系统102处执行系统接口元件测试或新测试的步骤的输出与储存库116中的预期输出相比较;以及输入引出(eliciting)部件130,其响应于执行步骤的输出和预期输出之间的不匹配引出用户输入。该用户输入可选择性地掩蔽(mask)测试输出的一部分。该系统记录输出中的差异且这清楚地显示在网络接口中。在许多情况下,测试的输出将随机器的不同(例如由于唯一的主机名和IP地址的情况)而变化,在该情况下,测试写入器会在来自系统的反馈中标识这些并在输出中提供标记(tag)。这些标记是标准对象的集合,已知该标准对象会产生诸如特定的主机名、用户名、互联网协议(IP)地址、日期、时间等问题。如现有标记中的一个与用户正试图在输出中掩蔽的不匹配,则用户还可以选择写入他们自己习惯性的表达。当每个测试执行完成时,系统评估需要运行的测试,选择一个测试并执行该测试;这整个过程通常仅用数秒且和可预期的一样接近实时。如果未完成的测试的数目变得太多,则可使额外的机器联机(on-line)从而按需散布工作量。可使用额外的锁定机制在资料库中将测试加标签(label)为测试中从而避免在多个机器上同时运行相同的测试。为了确保有质量的测试编写,测试团队将定期检验系统中现有的测试并且当他们认为测试编写得好且完整时,在系统中标示投票。如果测试接收到反对(negative)投票,则在二进制主要列表中标示为需要进行额外的工作。所有的测试都被认为是未完成的,除非它们具有对其足够的赞成票。具有多个反对票的测试被认为具有检验和校正的较高优先级。图2示出一种第一计算系统的自动测试方法,包括步骤:在开始步骤200之后,标识202第二计算系统的多个系统接口元件中在第一计算系统处具有未测试的状态的一个系统接口元件;确定204测试的存在并在步骤212确定多个系统接口元件中的一个对该多个系统接口元件中的另一个的任何依赖性的存在;响应于没有发现依赖性,,在储存库中寻找213与多个系统接口元件中一个对应且具有根据第二计算系统的结构的预期输出的系统接口元件测试;以及在第一计算系统处执行214该系统接口元件测试。如果如在步骤216确定剩余另一个测试要被执行,则系统返回至步骤202。响应于发现依赖性,该方法返回至步骤202。该方法还可以包括步骤:响应于步骤204寻找系统接口元件测试或又一个系统接口元件测试失败,创建206与多个计算接口元件中的一个对应的新测试;在储存库中存储208该新测试和预期的输出,以及在第二计算系统处执行209该新测试。在步骤211,在步骤209的输出与预期的输出之间进行比较,并且如果不匹配,则在步骤210引出输入,在此之后过程返回至创建测试步骤206。如果在测试步骤211处存在匹配,则该过程重新加入主过程并进行到步骤212。该方法还可以包括以下步骤:将在第一计算系统处执行214系统接口元件测试或新测试的步骤的输出与储存器中预期的输出进行比较218 ;以及响应于执行214步骤的输出和预期输出之间的不匹配,引出220用户输入。该过程在结束步骤222处完成。本领域的普通技术人员将会容易地理解,对上述实施例的各种进一步修改对本领域的普通技术人员将是显而易见的。本领域的技术人员将清楚,本发明的方法可适当地具体化(embody)在包括执行该方法步骤的逻辑部件的逻辑设备中,并且这样的逻辑部件可包括硬件组件或固件组件。应理解上述的方法还可适当地在运行在一个或多个处理器(未示出)上的软件中完全或部分地执行,并且该软件可作为在任何适当的数据载体(也未示出,诸如计算机磁盘或光盘)上执行的计算机程序元件来提供。用于传输数据的通道同样可以包括所有描述的存储介质以及信号承载媒质,诸如有线或无线的信号介质。本发明可适当地具体化为用于计算机系统的计算机程序产品。这样的实施可包括一系列计算机可读指令,该计算机可读指令或者固定在有形介质上,诸如计算机可读介质,例如软磁盘(diskette)、⑶-ROM、ROM或硬盘,或可经由调制解调器或其它接口设备,经由有形介质(包括但不限于光学或模拟通信线路)或无形地使用无线技术(包括但不限于微波、红外或其它传输技术)传输到计算机系统。该系列的计算机可读指令具体化所有或部分这里前面描述过的功能。本领域的技术人员将理解,这样的计算机可读指令可以以多种编程语言编写以用于很多计算机架构或操作系统。此外,可在当前或未来使用任何存储技术(包括但不限于半导体、磁或光学的)来存储这样的指令,或者可在当前或未来使用任何通信技术(包括但不限于光学、红外或微波)来传输这样的指令。预想这样的计算机程序产品可作为具有伴随的打印的或电子文档的可移除介质分发,例如收缩包装的(shr ink-wrapped )软件,利用计算机系统预加载到例如系统ROM或固定盘上,或可从服务器或电子公告栏经由网络(例如因特网或万维网)分发。
权利要求
1.一种自动测试第一计算系统的方法,包括以下步骤: 标识第二计算系统的多个系统接口元件; 确定所述标识出的多个系统接口元件中的一个在所述第一计算系统处的未测试的状态; 确定所述标识出的多个系统接口元件中的所述一个对所述标识出的多个系统接口元件中的另一个的任何依赖性的存在; 响应于没有发现所述依赖性,在储存库中寻找与所述标识出的多个系统接口元件中的所述一个对应且具有根据所述第二计算系统的结构的预期输出的系统接口元件测试;以及在所述第一计算系统处执行所述系统接口元件测试。
2.根据权利要求1所述的方法,还包括以下步骤: 响应于发现所述依赖性,在所述储存库中寻找与所述标识出的多个系统接口元件中的所述另一个对应的又一个系统接口元件测试;以及 在所述第一计算系统处执行所述又一个系统接口元件测试。
3.根据权利要求1或2所述的方法,还包括以下步骤: 响应于所述寻找步骤发现所述系统接口元件测试或所述又一个系统接口元件测试失败,创建与所述标识出的多个系统接口元件中的所述一个对应的新测试; 在所述第二计算系统处执行所述新测试;以及 在所述储存库中存储所述新测试和与在所述第二计算系统处执行所述新测试的所述步骤的输出对应的预期输出。
4.根据权利要求1至3中任一个所述的方法,还包括以下步骤: 将在所述第一计算系统处执行所述系统接口元件测试或所述新测试的所述步骤的输出与所述储存库中的所述预期输出相比较;以及 响应于执行所述步骤的所述输出和所述预期输出之间的不匹配,引出用户输入。
5.根据权利要求4所述的方法,其中所述用户输入选择性地掩蔽所述测试的所述输出的一部分。
6.根据任何一个前述权利要求所述的方法,其中所述第一计算系统被布置以仿真所述第二计算系统的操作。
7.一种用于自动测试第一计算系统的系统,包括: 标识组件,用于标识第二计算系统的多个系统接口元件; 确定组件,用于确定所述标识出的多个系统接口元件中的一个在所述第一计算系统处的未测试的状态; 确定组件,用于确定所述标识出的多个系统接口元件中的所述一个对所述标识出的多个系统接口元件中的另一个的任何依赖性的存在; 寻找组件,响应于没有发现所述依赖性,在储存库中寻找与所述标识出的多个系统接口元件中的所述一个对应且具有根据所述第二计算系统的结构的预期输出的系统接口元件测试;以及 执行组件,用于在所述第一计算系统处执行所述系统接口元件测试。
8.根据权利要求7所述的系统,还包括: 所述寻找组件还响应于发现所述依赖性,在所述储存库中寻找与所述标识出的多个系统接口元件中的所述另一个对应的又一个系统接口元件测试;以及 所述执行组件还适配为在所述第一计算系统处执行所述又一个系统接口元件测试。
9.根据权利要求7或8所述的系统,还包括: 创建器组件,响应于所述寻找步骤发现所述系统接口元件测试或所述又一个系统接口元件测试失败,创建与所述标识出的多个系统接口元件的所述一个对应的新测试; 所述执行组件还适配为在所述第二计算系统处执行所述新测试;以及 存储组件,用于在所述储存库中存储所述新测试和与在所述第二计算系统处执行所述新测试的所述步骤的输出对应的预期输出。
10.根据权利要求7至9中任何一个所述的系统,还包括: 比较器组件,用于将在所述第一计算系统处执行所述系统接口元件测试或所述新测试的所述步骤的输出与所述储存库中的所述预期输出相比较;以及 输入引出组件,响应于执行所述步骤的所述输出和所述预期输出之间的不匹配,引出用户输入。
11.根据权利要求10所述的系统,其中所述用户输入选择性地掩蔽所述测试的所述输出的一部分。
12.根据权利要求7至10中任何一个所述的系统,其中所述第一计算系统被布置以仿真所述第二计算系统的操作。
13.一种存储在计算机可读介质上的计算机程序,包括计算机程序代码以在当载入计算机系统并在该计算 机系统上执行时,使所述计算机系统进行权利要求1至6中任何一个所述的方法的所有步骤。
全文摘要
一种自动测试第一计算系统的方法,包括标识第二计算系统的多个系统接口元件;确定所述标识出的多个系统接口元件中的一个在所述第一计算系统处的未测试的状态;确定所述标识出的多个系统接口元件中的所述一个对所述标识出的多个系统接口元件的另一个的任何依赖性的存在;响应于没有发现所述依赖性,在储存库中寻找与所述标识出的多个系统接口元件中所述一个对应且具有根据所述第二计算系统的结构的预期输出的系统接口元件测试;以及在所述第一计算系统处执行所述系统接口元件测试。
文档编号G06F11/36GK103180834SQ201180043323
公开日2013年6月26日 申请日期2011年8月10日 优先权日2010年9月9日
发明者I.J.麦克罗伊, J.R.巴克, D.G.芒蒂 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1