实战 GUI 产品的自动化测试,第 2 部分:构建利于维护的自动化测试系统

发表于:2011-7-01 10:57

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

 作者:孙沛 陈晓鹏 陈海泉    来源:51Testing软件测试网采编

分享:

图 3. Notes 的联系人自动补全功能

  对于这个测试用例,我们需要验证不同的用户名称输入,包括:

  ● Notes ID(包括标准格式和精简格式)
  ● Internet 邮件地址
  ● 昵称
  ● 包括特殊字符(&,¥,#...)的名称
  ● 超长的名称
  ● 包含多国语言字符的名称
  ● …

  显然,我们可以把这些名称作为数据提供给同一个脚本来进行操作,脚本负责在 UI 上找到“收件人”文本框,输入预设的名称,并验证预设的收件人显示名称。通过数据驱动,我们可以快速的扩展脚本的覆盖范围。

  RFT 对数据驱动方法提供了良好的支持,其核心就是数据池技术。数据池就像一张电子表格,我们可以自由定义表格中的字段并把预设的测试数据和测试结果保存到数据池中。RFT 可以为脚本自动分配独占的数据池,也支持在多个脚本间共享公用的数据池。

图 4. RFT 的数据池

  在数据池的使用方面,RFT 的脚本录制工具直接提供了对数据池的支持,我们可以通过简单的拖拽和配置在脚本中自动插入数据池的访问代码。自然的,我们可以直接通过 com.rational.test.ft.datapool 包中提供的 API 更灵活的访问数据池中的数据。RFT 提供了对数据池中条目的顺序访问(SequentialIterator)和随机访问遍历器(RandomIterator),如果有必要,我们还可以通过实现 IDatapoolIterator 接口来自定义数据池的遍历方式。

  使用了数据池技术之后,我们的联系人名称自动补全测试脚本可以表现为:

  例 5. 使用顺序迭代器实现数据驱动测试

public class NameAutoComplete extends NameAutoCompleteHelper
{
 public void testMain(Object[] args)
{

// 创建空邮件
Memo memo = MailTask.createEmptyMail();

// 获得收件人控件
NTextField field = mail.getMailToField();
 
// 为数据池中每一条记录运行测试
while (!dpDone())
 {
 // 读取测试用名称
 String inputName = dpString("Test Name");
 // 读取期待结果
 String expectedResult = dpString ("Expected Result");
 // 输入并自动补全
 AutoCompleteTask.input(field, inputName);

 // 获取并验证结果
 String result = field.getText();
 Logger.logCompare(expectedResult, result, “VP: verify the result is correct.”);

 // 清空收件人控件
 field.setText(“”);

 // 处理下一个测试用例
 dpNext();
 }
 }
}

  通过数据池,我们可以方便的对测试数据进行组织和使用。如果您希望更深入的理解数据池,可以参考 RFT 的帮助文档和本文附录中的推荐文章。

重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号