技术开发 频道

QTP经验杂谈

  【IT168 评论】2009年的1月份由于项目需要,我开始接触上了qtp,由于以前别人也没有做过,我只有通过internet来学习qtp,刚开始接触的时候感觉很新奇,感觉这个东西就是记录动作的一个工具。

  很快第一个项目就来了,一边摸索着一边开始做上了第一个qtp项目。这个项目很简单,是测试一个java application程序,主要是测试的内容是,点击这个java程序的所有menu,然后确定对应的窗体是否正确打开。可以说做这个程序就是record-->简单的编辑-->run-->result 这么一个简单过程,纯线性的。上边说的简单的编辑也就是加一些等待时间,加了检查点(标准检查点),在resouce里边导入一个vbs文件,里边简单的写了一些vbs共通函数,关于共通action就有两个一个是login,一个是logout,还有就是对一些对象进行了简单的正则表示。就这样,第一个项目就这样做成了。

  第二个项目来了,但是这次我们首先考虑了共通action,尽可能的抽出共通,由于测试项目的不同,这次也加入了除了标准检查点以外的检查点,例如Bitmaip检查点。由于最大程度的抽出了共通方法,所以这次的作业很轻松。而且,当发生错误的时候,排错和修正错误也变得很方便。

  后来的一些项目,我们又上了Datatable来参数化对象,将脚本和数据实现分离。

  通过qtp项目的锻炼,我总结出了以下几个部分:

  (一)对Qtp项目的把握

  ① 理解式样,编写测试用例

  ② 让每个编写测试用例的担当尽量列出各自需要的共通方法,然后收集所有担当列出的共通,

  将这些共通中的共通提出来作为共通action。

  ③ 首先完成共通action。

  ④ 然后项目开始正常推进。如果在中途发现有共通可以抽出,在影响不太大的情况及时抽出。

  (二)Qtp程序编写流程

  ① 录制脚本

  ② 编辑脚本

  a 作成一个vbs文件,里边追加一些vbs共通方法(例:log出力处理),注意在每个函数结尾处

  将set过的对象都set成nothing,减少内存泄露。

  b 给【对象,输入值,输出值】通过【datatable,环境变数,外部文件读入】进行参数化。

  c 追加检查点。(注意应用正则表达式)

  i 映射到datatable

  ii 映射到环境变量

  iii 映射到随机数

  d 追加一些逻辑判断【if else】,循环判断。

  e 适当追加等待时间

  f 尽量全面的考虑异常情况,并追加异常处理

  ③ 运行以及结果查看

  (三)遇到过的一些问题以及解决方法

  1 对于windows程序中需要打开IE,测试IE画面的时候(例:help画面),如果有多次IE画面打开的话,

  有可能某次就打不开了。

  解决方法:打开IE画面前,需要杀一下IE的进程。

  2 对于IE7版本及以上版本的浏览器,有时候qtp不能识别。

  解决方法:将IE7版本或者以上版本的浏览器设置成单tab显示,因为qtp不能识别多tab浏览器。

  3 .Exist()方法,有的时候判断不是很准确。例如一个窗体或者dialog存在,但是Exist方法判断不存在。

  解决方法:利用别的方法进行判断。

  其实,这些都是些基本的东西,但是在一般的工作当中基本也就足够了,大不了再用点qtp的

  自带对象(例如剪贴板之类的)等。

  再有就是描述性编程,这种编写方式当然要比录制方式要灵活,但是需要考虑的是项目的成本和效率,如果要用描述性编程的话,基本每一步都是手敲的,那么效率会很差,但是,如果项目周期很空闲,那么用描述性编程当然好了。

  不知道大家用没用过TestPartner这个自动化测试工具,这个工具也有对象库和描述性编程,但是通过TestPartner录制的大部分代码都是以描述性语言表示的,所以说对于TestPartner来说用描述性语言会很方便,不用每一行都用手敲。

  如果想要提高qtp自动化脚本编写水平,只有多学学vbs,如果想要做好自动化测试,需要多动脑,不管程序怎么跑,正确的情况和出异常的情况都要考虑到,并且异常的情况也不是只有一种。

0
相关文章