元框架 该模式定义了一组基础的独立工具类。对任何自动化工具来说,它们都是通用的,而且可以在不同自动化项目之间复用。 当需要在一个组织机构中测试不同的项目,而且企业标准要求测试结果采用统一的界面时,或许就需要这样的解决方案。此外,元框架改进了项目间代码复用的度量标准,因为它可能会包含有用的工具方法。有关功能和测试对象的基础类,简化了项目之间知识的转移。元框架展现在图3的右侧。 功能组合模式功能方法针对特定于应用的业务功能,从其UI实现、API或其他层面进行了抽象。 用于自动化测试的许多工具,都支持创建被称之为“场景记录”的功能。当一位测试开发者针对特定应用执行特定操作时,这些工具将自动创建一份测试脚本。它可以在稍后进行回放,并检查在程序发生变化后,该脚本是否得到了正确的执行。 例子:改变登录界面的外观,将要求在全部预计的测试场景中的对应部分都进行变更。如果我们将登录方法提取为Application.Login(username,password),并在全部测试中使用这一方法,那么当登陆页面发生任何变更的时候,我们将只需要修改仅仅这一个功能方法,随后变更就会被自动分发到所有使用该方法的测试中。 图4:测试脚本与(a)缺乏功能方法的过渡层的用户界面之间的交互;(b) 带有功能方法层的用户界面。当应用发生变更时,阴影部分对象将会被改变。 页面对象 这一模式将某个页面的功能方法组合在一起。 由于图1中展现的用于应用的功能方法数量不多,因此它们可以移入一个单独的类。但是为了提升代码可维护性,此模式建议依据这些方法所代表页面,对其进行分组。例如,这些对应关系可以包括:页面:PageLogin——方法:Login();页面PageHome——方法:Logout()、CreateUser()。 功能库它将某个特定应用的功能对象或(和)功能方法分组打包,成为一个适合复用的模块。 SUT的启动和拆卸对象(SUT运行者)该模式支持被测系统的初始启动,即它的初始化。在此之后,测试对象释放与该系统相关的资源。 在功能方法之中,我们可以区分出与功能测试无关的方法集合:例如启动某个Web浏览器,并访问SUT的登录页面。而在测试之后,Web浏览器应该被关闭。SUT运行者负责以上这些通用活动。 对象源(对象之母、对象精灵、对象工程)该模式按测试执行所要求的形式,创建并初始化的对象。 运输者(导航器)根据测试要求,它将被测试系统中的导航控制集中在一起。 该对象封装了与被测试系统内部的导航实现有关的完整逻辑。因此业务逻辑的问题不会影响系统内的导航。 对于图1所描述的情况,我们将拥有一个Transporter类(运输者),它拥有以下方法:NavigateToLogin()、NavigateToHomePage()和NavigateToCreateuser()等等。或者,每个独立的页面(page)对象或许都会拥有自己的运输(transport)方法。在这种情况下,这些方法就作为该对象自身的运输者。 复合页面对象该模式将复用的页面(page)对象聚合在一个外部对象中。 这一模式支持用更加“面向对象”的方式来组织页面对象——把可以在不同页面上复用的子对象分离,并将其包含到父对象中。
图5:通过在主页和创建用户页面对象中聚集,来使用导航页面(Navigation Page)对象 扩展的页面对象 该模式通过继承来扩展基础的页面对象,成为复合页面对象的替代选择。 过程模式给定条件/时机/结果此模式将测试执行过程分为三个阶段: ●给定条件(定义先决条件) ●时机(设定与上下文协同工作的特定操作) ●结果(检查结果) 四阶段测试此模式将测试执行过程分为四个阶段: ●定义先决条件 ●调用业务功能 ●Checking results; ●拆卸系统 流测试该模式支持在一个测试内执行业务操作并进行检查。两项内容可以交替进行,直到实现测试的最终目标。 多次失败该模式定义了一套机制,能够在非致命错误出现之后继续进行测试。 测试依赖模式独立测试该模式令被测试的系统回到测试前的状态。 链式测试在该模式中,初步测试树立起了测试需要跟踪的SUT状态。 测试分组模式 每个测试类封装一个测试方法,在该模式下,每个独立的测试方法,都封装在一个独立的测试类中。 测试类中的分组测试方法在该模式下,多个测试方法被放置于一个独立的测试类中。 总结测试解决方案的设计背后的驱动力,是对特定测试实现模式的选择。它扮演了未来所有测试解决方案开发的起点,将在可读性、可维护性和其他诸多特性方面产生影响。而且它也设置了这些实验,使其在能够产生帮助的时候更好地复用项目之间的资源,并减少新项目自动启动的时间。 这篇文章抛出了有关如何参考设计模式,来构建测试解决方案的想法。 关于作者 Oleksandr Reminnyi是SoftServe股份有限公司的软件架构师,SoftServe是一家全球领先的软件开发、测试和技术咨询服务提供商。Oleksandr负责为新客户和已有客户建立自动化项目和流程。他相信自动化的成功与否,完全取决于已经建立起来的流程,以及是否设定正确的目标。Oleksandr目前正在致力于完成自动化方面的博士研究。他的联系方式为orem@softserveinc.com。
|