当前位置: 首页 > 专利查询>微软公司专利>正文

测试自动化的系统和方法技术方案

技术编号:2920721 阅读:159 留言:0更新日期:2012-04-11 18:40
将自动化测试的各方面分成各体系结构层使得自动化测试能更早更快地进行并提供更综合性的测试。物理层提供应用程序用户界面上的对象模型。逻辑层提供围绕应用程序功能的对象模型。测试实例执行器可执行测试实例。数据管理器可确保测试数据中的可变性。行为管理器可确定适于特定测试实例的执行细节。验证管理器可在已执行测试实例之后执行验证处理。

【技术实现步骤摘要】

本专利技术涉及软件测试,尤其涉及使用分层体系结构来进行自动化软件测试。
技术介绍
软件开发生命期中的主要阶段是设计阶段、编码阶段、代码完成阶段、α阶段、β阶段,以及最后向市场发行。在设计阶段期间,将解决软件产品的客户问题并定义软件产品的功能。通常,功能规范的完成标志着设计阶段的结束。编码阶段开始。当代码写成但尚未调试时则进入代码完成阶段。α阶段标记产品稳定的时间点;即,已发现了大部分的主要缺陷。在β阶段,产品几乎没有了所有的主要缺陷;即所剩的缺陷应基本上无害。当产品通过最终的质量保证检查列表时,它已准备就绪向市场发行。因为没有人想要不工作的软件,测试是生命期的重要部分并可跨越若干阶段。软件测试包括设计一测试实例(或更可能是测试实例集)、以测试实例为输入运行该软件、并检查以测试实例为输入的软件的性能是否产生预期结果。软件测试可由人们手动引导,或通过程序来引导(称为自动化软件测试)。理想地,软件的测试在软件生命期的一开始就应开始。然而一般而言,不到完成了设计阶段软件根本不能测试,因为直到完成设计阶段才能确定期望结果。通常,在编码阶段,开发者在写代码时手动测试其代码。自动化软件测试通常在开发过程的较后期才会开始。有时,所引导的唯一测试由开发者在他编写程序时手动测试来完成。测试自已工作的开发者可能会忽视在情绪上不那么投入代码的某些人会发现的缺陷。此外,开发者测试的范围通常限于其代码的功能以及其代码与有限数量的其它软件应用程序的结合。为了解决这些缺点,许多软件开发机构具有常使用至少部分自动化的测试技术来测试软件的独立的软件测试组。通常,测试组通过编写和运行测试实例来测试各特征之间和应用程序之间的交互。使测试组及早地甚至在设计阶段就进入产品生命期能获得很多好处通常是无异议的,这些好处包括标识功能规范中的不一致、标识难以测试的区域及其它。然而一般而言,面对特征定义、实现和用户界面(UI)调整中的持续变化而保持每个测试实例最新所需的精力使该方法呈现为不实用。因此,编写并运行测试实例通常是在产品开发末期仓促发生的。因而测试特别是自动化测试总是落后于需求。如果有一种在一进入软件产品的生命期(理想地是在设计阶段期间)就能编写测试实例并采用自动化测试的方法将是有帮助的。一整套测试实例的开发在任何时候都具挑战性。为了测试应用程序的特定特征,必需编写许多测试集。例如,应用程序可允许与一特征的许多交互模式通过鼠标、键盘、数字化仪、可访问软件、通过程序等。因此,为了提供对该特征的综合性测试,一整套测试应包括通过鼠标与该特征交互(像用户一样键入文本)的一个测试集、通过键盘与该特征交互的一个集、通过数字化仪与该特征交互的一个集、通过可访问软件与该特征交互来调用缺省动作并以其它方式模拟可访问应用程序的一个集、通过应用程序的编码模型与该特征交互的一个集等。如果有一种确保一整套测试实例提供特征或应用程序的综合性测试,并进一步减少为了提供综合性测试而必需编写的测试实例的总量的方法,这将是有帮助的。此外,这些测试集的每一个中的许多或全部逻辑都与其它测试集中的逻辑相同,且通常许多或全部的结果处理验证也相同。因此,许多测试是相同或非常接近的,仅仅在执行选项上有变化。例如,对于上述全部多种形式的输入,期望结果可能是相同的。因此,对这些输入源的每一个编写测试实例通常需要编写用于执行每个输入源的测试的独立方法,并复制大多数剩余的测试脚本。重复编写仅具有极小变化的相同测试是乏味并耗时的。如果有一种消除或大大减少这种重复编码并减少必需编写的测试实例的总量的方法将是有帮助的。编写用来确定运行测试实例的实际结果是否与期望结果相一致(常称为结果验证或验证)的代码常包括在测试实例内。改变特定结果验证的细节或添加新的结果验证通常需要更改每个测试实例。如果验证代码独立于测试实例,使该测试实例更易于理解以及验证代码更易于重复使用和维护将是有帮助的。执行细节常被硬编码到测试实例中,需要设计阶段在编写测试实例之前就完成。如果有一种根据用户动作而不根据特定执行细节来定义测试实例使得测试实例能在软件开发生命期的较早期编写的方法,这将是有帮助的。在编写测试实例之后对执行细节和验证作出的改变通常需要为必须寻找并更改许多测试实例而付出的大量维护精力。如果维护精力可局部化从而使更改可在一个地方而不是每个测试实例中进行,这将是有帮助的。
技术实现思路
利用自动化堆栈的自动化测试系统可使测试实例能早在软件开发的设计阶段就进行编写和编译了。一旦编写了实现要测试特征的代码就可执行测试实例。自动化测试系统可包括以下的一个或多个测试实例执行器、数据管理器、行为管理器和行为数据库、验证管理器、以及自动化堆栈。测试实例执行器可执行一测试实例。数据管理器可确保测试数据中的可变性。行为管理器可确定适于特定测试实例的执行细节。验证管理器可在测试实例已执行之后执行验证处理。自动化堆栈可提供使测试实例执行分成对象层或集的体系结构。自动化堆栈可包括逻辑层和物理层,而测试实例层可建立在逻辑层上。测试实例可根据特征或用户动作而不根据特定执行细节/用户界面细节而定义,因而使测试实例能在软件开发生命期中的较早期编写,并使执行细节和用户界面细节的改变去耦并与测试实例细节分开。测试实例执行和测试实例验证可通过分成执行行为层和验证层而去耦。结果处理的验证可与测试实例分开,从而使从实施例更可理解并便于验证代码的再使用。通过定位到自动化堆栈内或验证或行为层内的单个变化点可简化维护,从而使该测试实例能基本上免维护。将如何执行测试实例中各个步骤的细节分到它自己的对象层或集中使这些因素的每一个能独立变化。每个层可将可变性引入该层或其下各层,从而较少必须编写的测试数量。例如,写入较高层的运行5次的一个测试可与写入较低层的5个、10个甚至50个测试具有相同的功效。组织到各层中可使测试本身更简单并更易于理解,并在减少覆盖执行路径集必须编写的测试实例数量之外还可减少编写测试实例所需的时间。逻辑层可基于可采取的动作(例如“打开文档”的动作)而不是用户界面的特定细节(例如诸如“打开File菜单并点击Open、等待File Open对话框打开、输入要打开的文件名、点击OK、等待File Open对话框消失、等待应用程序打开文档并为进一步的输入作好准备”的具体细节)来提供应用程序的视图。逻辑层还可提取尽可能多的用户界面实际的知识,从而当用户界面改变时无需编辑写入该层的测试。逻辑层还可将可变性引入执行的各个物理方法,从而可通过鼠标或键盘执行写入该层的单个测试实例而无需对该测试实例有任何改变。物理层将测试从与特定控制通信的高度特定细节中隔离开,包括诸如特定控制的标识代码、以及访问该控制的方法(通过鼠标、键盘、可存取性、书写板等)的细节。物理层可提供围绕应用程序的用户界面的对象模型从而测试具有对该用户界面的强类型化访问。物理层还可使执行方法能独立于控制定义,从而无论执行方法有多少都只需单个对象模型。验证层可独立于测试实例并与测试实例的直接联系相隔离,从而对验证细节的改变无需对测试有任何改变。执行行为层可独立于测试实例并与测试实例的直接联系相隔离,从而无需对测试实例作改变或仅需对其作最少改变就可改变可用的执行行为或任何特定行为实现。当测试实例需要测试数据本文档来自技高网
...

【技术保护点】
一种自动化测试系统,其特征在于,包括:一体系结构的测试自动化堆栈,包括:一对象集,包括逻辑层、与要测试的应用程序的用户动作集相关联的所述逻辑层的对象集、可直接访问物理层的对象集的所述逻辑层的对象集;以及所述物理层的对 象集,所述物理层的对象集包括指向与所述用户动作集相关联的执行选项的对象集。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:AM乌尔里希MD加拉赫MJ亨特
申请(专利权)人:微软公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1