一提到自动化测试工具,给人印象最深的就是录制和回放了。录制测试人员的操作过程,再回放出来并多次运行,达到使用机器代替人来执行测试的效果。
QTP采用的关键字驱动与专家视图的设计思想,不但可以自动生成代码,使初学者快速入门,更为高级测试人员提供了便利的编程界面,使其可以高效的完成自动化测试脚本,不用完全依赖于录制和回放过程。
下面就我个人的使用经验,简单谈谈如何不依赖于录制和回放来完成QTP脚本的。
操作步骤很简点,主要分为三步:
第一步,维护对象库,添加必需的对象以及配置对象的属性。
第二步,在专家视图中,编写测试代码。
第三步,运行并调试代码。
举个简单的例子。
以在51testing的网站上搜索关键字QTP为例。
首先,打开QTP,点击工具栏上的Object Repository按钮,打开对象库维护界面。如图一(图片暂时上传不了)
点击Add Objects按钮,添加站内搜索的文本框以及后面的查询按钮对象,如图二
然后,在专家视图中,手动输入如下代码:
Browser("软件测试专业网站:51Testing软件测试网").Page("软件测试专业网站:51Testing软件测试网").WebEdit("keyword").Set "QTP"
Browser("软件测试专业网站:51Testing软件测试网").Page("软件测试专业网站:51Testing软件测试网").Image("GO").Click
由于录制的过程中,待测试的页面是已经打开的,所以为了保证这个测试的前提条件,在前面添加打开IE的语句。
SystemUtil.Run "iexplore.exe",""
这样,使用QTP的自动化测试脚本就完成了,运行看看是否通过?结果是一次性通过,而且没有其他需要修改的地方了。
还可以在此基础上增加关闭所有IE的函数,增加验证点等等使脚本更加健壮和完整,这里就不赘述了。
如果使用录制和回放的方法来开发脚本,可能存在以下几个问题:
一个是自动生成的代码有一些是没有用的,有时候反而会影响代码的质量;
一个是通过录制生成的代码,健壮性都不好,如果要使脚本在无人值守的情况下顺畅地运行,还是需要手动修改的。比如在对象找不到的地方增加判断对象是否存在,再继续下一步操作等等;
再有,就是录制的过程中,会使你的对象库中多出来一些脚本正常运行以外的多余的对象,给维护对象库也增加了工作量。
比较这两种方法,总体感觉直接添加对象并编写代码的方式,可以弥补录制回放过程的不足,节省了脚本的开发时间,减少了对象库的维护工作量,大大提高了自动化测试脚本的开发效率。
当然,能够这样做是有前提的。
第一,必须对待测试的系统非常熟悉。即开始写自动化脚本之前就能从大脑中反映出每一个步骤中需要的对象及操作。
第二,对QTP的工作原理以及工具本身非常熟悉。能够有办法解决脚本运行时出现的任何问题。
第三,有良好的编程基础尤其是针对VBscrīpt语言的。如果对于代码的结构、可维护性都把握很好的话,那么效果就会更加明显了。
补充一点,使用这种方法,你的对象库的设计一定要到位,保证在写代码的时候,很容易的找到你要操作的对象,否则就得不偿失了