MSN: luxuabc@hotmail.com

Rational Functional Tester经验总结(2)

上一篇 / 下一篇  2011-01-18 13:48:57 / 个人分类:测试工具

接着上一篇继续说说:)

4. 使用Public Object Map还是Private Object Map?在RFT中,录制的对象都保存在Object Map中,分为公有的和私有的,对于每个单独的测试脚本我建议都使用Private Object Map,这样各个脚本比较独立,不易出错。但公有的也有好处就是共享,统一管理。不过在通常的测试中,每一个独立的测试用例都是测试界面的某一部分功能,某一个UI对象的调用只是在相应的测试脚本中,因此很少有在多个测试脚本里调用同一个对象。除非对于某些系统,可能有些对象被很多脚本调用,这时候可以考虑用Public Object Map,这样就可以在对象出现变化的时候统一的改动而不必对每个脚本调整,但是这又多了要维护这个公用 Object Map的工作。而且要保证Public Object Map不要冗余和不断将对象merge进去不是件简单的事。大家要根据实际情况衡量利弊。



5. 是用Record/Play的方式开发吗?
大部分的测试自动化工具都是Record/Play的方式,并且给的例子也是采用这种方式。但实际开发中,我想没有人会使用这种方式,采用这种方式生成的脚本和被测软件和环境有着太多的关联,测试用例是会不断细化和改变的,当用例变化时需要重新录制,而且很难debug,维护成本太高。除非只是给用户做个demo可以用这种方式。所以我建议自己来写不要录制,采取的做法如下(以购物系统为例):
第一,生成Object Map,将需要调用的对象识别出来并存入Object Map。如:登录按钮,注册按钮各种输入框,导航键等等。
第二,写一些通用的task,这些task组成testcase,比如登录过程是一个task,注册也是,挑选一件商品,结算等等。
第三,写testcase,testcase就调用不同的task,如:用户登录--挑选一件商品--去结算。这就是个完整的测试用例,可以调用实现准备好的task来完成。

6. 能不能不用Object Map,在运行过程中动态识别对象?
这是可以的,有些时候对象是运行时动态生成并且每次可能都不同,这样你就无法事先识别它,或者应用程序不是很稳定变动很频繁,这样生成Object Map就很不划算,因为我们要不断的去修改它。这时候我们选择动态识别对象采用find()方法如下,但是性能是要牺牲的动态识别的速度要比事先录制在识别慢:
Test Object [] bj = find(atDescendant(".class", "Html.BUTTON",
".text", "OK"));
这样在运行时会找到类型为Html.BUTTON,文本为"OK"的对象。使用完一定要释放,否则当有大量对象的时候会有内存问题。
obj.unregister();

7. 灵活运用正则表达式,在录制对象的时候,对象的属性被记录下来,你可以将属性值转换成正则表达式,这样当属性稍有变化时依然可以匹配,又或者可以同时匹配多个对象,对于运行时才按照某种格式生成的某些属性值,采用正则表达式可以很好的解决。右键点击对象属性值,选择转换为正则表达式。



8.在RFT的log中插入信息,RFT支持多种日志格式,txt, html, TPTP, xml等等,前面说了,开发过程主要是采用自己编程的方法,但我们如何把程序的信息,警告或者错误也写到RFT的log中呢?很简单RFT提供了接口,
static void logTestResult(java.lang.String headline, boolean passed, java.lang.String additionalInfo) 

就先总结这么多吧,以后有了继续更新,希望对您有帮助。





TAG: RFT rft 自动化测试

alice的个人空间 引用 删除 alice2003yf   /   2011-08-16 17:05:26
LZ讲的 太好了, LZ用RFT做过大机的测试吗?如有, 讨教讨教
引用 删除 i信来   /   2011-08-14 11:59:40
太感谢了,继续关注中。。。
 

评分:0

我来说两句

Open Toolbar