任务层
任务层按照被测程序的功能,将可以重复使用的测试步骤定义在一个个类里面。类中的每个方法,都可以完成某个特定的步骤。以 Lotus Notes 为例,它有拼写检查这一功区域,相关的测试用例需要测试人员执行替换错误单词和添加自定义单词等功能。针对这一需求,我们可以写一个 SpellTask 类,包含这 2 个方法:replaceMisspelledWord 和 addWordToDictionary,如例 2 所示。
例 2. 定义任务层的方法
public class SpellTask{ // 将错误单词替换成正确的 public boolean replaceMisspelledWord (String sWrongWord, String sCorrectWord){ DlgSpellCheck spell = new DlgSpellCheck(); if(!sWrongWord.equals(Spell.getSpellEdit().getText()){ // 如果对话框上显示的错误单词与预期不符,报错 Logger.logError(“Wrong word is not marked”); }else{ // 从列表选择正确单词,并确定 spell.getSpellList().select(sCorrectWord); spell.getOK().click(); } } // 略去其余方法 ... } |
例 2 中的 createMemo 方法用到了两个类 MailActionBar 和 Memo,它们分别对应于被测程序中的任务栏和邮件编辑界面。该函数通过调用 get 方法得到控件对应的类,然后对控件进行操作。
任务层方法的特点包括:
1、需要操作一个以上的应用对象
2、提供多个参数来支持尽可能多的测试用例
3、不包含测试用例验证点的验证
4、返回 boolean 值表示成功与否
通过任务层,我们把一些常用的执行步骤剥离了出来,方便这些步骤的共享和维护。
小结
IBM 框架的这一分层方式并不局限于某个测试工具和被测应用程序,它是自动测试通用的一个架构,因此在 IBM 内部广泛使用。此框架的优点有:
● 分离实现和应用。将对象的定义以面向对象的方式封装到了应用对象层中,同时也隐藏了 RFT 的测试对象与 API。编写测试脚本的人员并不需学习 RFT 的接口,测试对象和对象映射,也能开始工作。
● 因为每个界面对象只有唯一的定义,维护代码的工作量被大大减少。
● 测试脚本结构清晰。
扩展——编写测试用例的技巧
有了应用对象层和任务层,我们可以开始编写测试用例。实际上,大部分的脚本开发人员日常所工作的范围集中在测试用例层,而应用对象层和任务层通常由更富经验的核心团队负责定义和维护。一般来讲,编写测试用例并不复杂,主要就是根据用例要求和执行步骤调用任务层和应用对象层的代码,验证测试结果并收集必要的测试日志。不过,我们在编写测试用例的实际工作中也总结出一些容易被忽略的问题,在这里我们就这些需要特别注意的方面做个简单的介绍。