使用Functional Tester 实现自动化框架

发表于:2008-2-25 17:52

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

抽象、封装,以及其它计算机科学术语

  我通常不会大量使用术语,但是由于模块化框架是基于一些计算机科学基本原理的,所以看起来我们要花一些时间来谈论这些基本原理。一个模块化框架的第一个基本原理是,努力尝试在一个时间关注于一个逻辑功能块,也称作为抽象。使用抽象,您可以减少和排除一些细节,不用立即关联到您要进行编码的功能上。在模块中,您要关注于将控制从您的测试用例中分解出来。通过控制,我的意思是被测试应用程序中的用例流和功能。对比数据驱动的框架(本系列中所涵盖的下一个框架),在那您更加关注于将数据从您的测试用例中提取出来。而控制的抽象就是活动的抽象。

  模块化框架的第二个基本原理与抽象紧密相关。这就是封装的基本原理。在封装中,您要将关系紧密的程序元素(脚本、类等等)放在一个更大的、更抽象的实体(其它脚本和类)中。封装为您提供了将相关联的任务和操作集成在一起的技术。它也通过提供一个稳定的接口来为您保护您的脚本免受程序变更的影响,此接口能够隐藏您的脚本所执行的实际操作。这是一类隐藏的信息,您将在这里保护您的测试脚本;让它们都调用相同的脚本和类集合,这样在您需要进行变更时,这些变更将自然地对您的所有测试脚本生效。

  模块化框架的第三个基本原理关注分离。关注分离是将一个程序分解成在功能上尽可能少重叠的独立特性。这个基本原理在您执行封装时会给您提供指导。通常,在您计划如何为被测试应用的特性和行为进行分离和组织测试代码时,您将会使用关注分离这个基本原理。

  在本系列的三个框架中,模块化应当是最容易理解和掌握的。以上描述的这三个基本原理是众所周知的编程方法,并且今天的大多数开发人员在使用它们时甚至没有积极地思考过。模块化框架的目标就是通过应用这些基本原理,以改进您的自动化测试套件的可维护性和可扩展性。让我们看一下模块化的几个简单例子,然后我们将返回来,讨论一下有关这种方法的优势和劣势。

  使用一个类来实现模块化

  在这个例子中,我们将使用对www.BookPool.com的一个测试。在列表1中所显示的记录脚本启动了访问 BookPool.com 的浏览器,搜索有关软件测试方面的书籍,并验证应当在第一个返回结果页面中的三本书。

  列表 1. 记录的 BookPool.com 搜索脚本
  package tests;
  import resources.tests.bookpool_search_recordHelper;
  import com.rational.test.ft.*;
  import com.rational.test.ft.object.interfaces.*;
  import com.rational.test.ft.script.*;
  import com.rational.test.ft.value.*;
  import com.rational.test.ft.vp.*;
  public class bookpool_search_record extends bookpool_search_recordHelper{
  public void testMain(Object[] args){
  //Start the browser and load BookPool.com
  startApp("www.BookPool.com");
  //Search for 'software testing'
  text_qs().click(atPoint(74,7));
  browser_htmlBrowser(document_bookpoolDiscountCompu(),
  DEFAULT_FLAGS).inputChars("software testing");
  button_search_btnGif().click();
  //Verify these three books are returned
  //in the first results page
  TestingComputerSoftware_textVP().performTest(2.0, 20.0);
  LessonsLearnedInSoftwareTestinVP().performTest(2.0, 20.0);
  HowToBreakSoftware_textVP().performTest(2.0, 20.0);
  //Exit
  browser_htmlBrowser(document_bookpoolDiscountCompu(),
  MAY_EXIT).close();
  }
  }

  在我查看这段测试脚本时,我看到了某些我想要能够在许多其它脚本 --执行一个搜索(图1)-- 中做的东西。有三行代码用于搜索:在qs 域上的点击,用于我们的搜索标准的 inputChars,以及在搜索按钮上的点击。

                  z
                      图 1. BookPool.com 搜索表单

51/512345>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号