使用Functional Tester 实现自动化框架

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

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

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

browser_htmlBrowser(document_edWiseStudentCalculat(),
  DEFAULT_FLAGS).inputChars("Mike");
  image_next2().click();
  //Edwise - Calculate Budget
  //Annual Income
  callScript("scripts.annual_income_module");
  //Education-Related Expenses
  callScript("scripts.education_related_worksheet_module");
  //Rent/Mortgage Worksheet
  callScript("scripts.rent_mortgage_worksheet_module");
  //Utilities Worksheet
  callScript("scripts.utilities_worksheet_module");
  //Food/Household Worksheet
  callScript("scripts.food_household_worksheet_module");
  //Student Loan Payment Worksheet
  callScript("scripts.student_loan_payment_worksheet_module");
  //Credit Card/Personal Loan Worksheet
  callScript("scripts.credit_loans_worksheet_module");
  //Transportation Costs Worksheet
  callScript("scripts.transportation_costs_worksheet_module");
  //Clothing Costs Worksheet
  callScript("scripts.clothing_costs_worksheet_module");
  //Additional Expenses Worksheet
  callScript("scripts.additional_expenses_worksheet_module");
  //Verify Total Annual Expenses
  totalExpense_textVP().performTest(2.0, 20.0);
  //Verify Summary amounts
  summary_gridVP().performTest(2.0, 20.0);
  //Click Next
  image_next3().click();
  //etc...
  }
  }

  通过使用 callScript 命令,您可以调用您的模块化脚本,这些脚本是您从测试中创建的。这使得代码可读性更强,并且更加维护。这是一个非常好的方法,您可以使用象这样的模块脚本构建模块,以创建不同的测试用例场景。对于上面您所有的每个模块脚本,您可能会有三个(或更多)不同的成本分类:便宜的、一般的、昂贵的。然后您可以进行混合,并将它们匹配到不同场景的测试上,如带有高成本功效的便宜租金,或使用信用卡支付的低成本运输费用。

  优势和劣势

  此系列的三种框架类型将涵盖模块化、数据驱动和关键字驱动,模块化框架理解和实现起来是最简单的。它也是最易于和其它框架联合使用的--例如,将模块化框架和数据驱动框架组合在一起。通常,在 Rational Functional Tester 中实现模块化要求有底层的技术知识。您真正需要学习的是如何管理帮助类--如果您在使用 Rational Functional Tester 的任何功能(包括记录和回放),您确实应当理解它们。

  模块化的主要优势是重用和减少重用伴随而来的维护成本。对比记录和回放,模块化应当产生更多可读的脚本,易于阅读和调试。创建测试模块脚本然后记录和回放脚本通常会有较高的成本,但是维护成本更加便宜。这意味着您需要知道您要使用您的测试脚本多长时间,以完全了解实现模块化的成本。成本-收益分析可能会帮助您决定模块化是否适合于您目前的项目。可能性就是,即使如果您的整个框架不是模块化的,您将会不在识别核心的功能,而转移到帮助类或帮助脚本上。

  使用模块化,应用程序的状态和数据共享会变成一个问题。如果一个模块失败了,对所有依赖它的模块意味着什么呢?如果一个订单从来没有被提交过,您如何检查订单状态?如果您从来没有执行过一个搜索,您如何将一个物品项添加到购物车中?共享数据和状态的复杂性会使脚本调试变得更困难,并且常常会花较长时间来识别,一个脚本失败是测试脚本还是被测应用程序的问题造成的。这些问题将造成可靠性的问题。

  下一步

  在您正在测试的应用程序中,花一些时间将最常用的功能抽象到脚本或者类中。您也可以考虑为应用程序的大多数动态部分进行这项工作。在您已有的脚本和任何您生成的新脚本中使用模块化。您不需要立刻转化所有的脚本。这是有关模块化的精彩内容的其中一个;您可以按照您的需求,使用或者不使用它们。您并没有被要求一定要使用他们。

  另外值得提到的是这样一个事实,即模块化可以扩展以用于高级的框架中,如基于模型的测试框架和用于海量自动化测试的框架。如果您对如何扩展已有的模块化框架感兴趣,可以看下面列表中的许多资源。在本系列的下一篇文章中,将会带您去了解如何在 Rational Functional Tester 中实现一个数据驱动的框架。最后,查看一些资源,以充分理解与一个模块化框架相关联的成本和收益,以及对于更加强大的测试自动化,您可以使用模块化的方式。

55/5<12345
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号