图 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 // 获得收件人控件 // 获取并验证结果 // 清空收件人控件 // 处理下一个测试用例 |
通过数据池,我们可以方便的对测试数据进行组织和使用。如果您希望更深入的理解数据池,可以参考 RFT 的帮助文档和本文附录中的推荐文章。