51Testing丛书连载:(二十九)精通QTP——自动化测试技术领航

发表于:2012-1-13 12:03

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:余杰 赵旭斌    来源:51Testing软件测试网

  单从表面上看,的确是!但是,同样面临一个问题,那就是在用同一个测试数据“QTP自动化测试技术领航”在做测试。所以,执行1次和执行上百次是没有什么实质性的区别的,特别像这种搜索框之类的功能点,这样的自动化测试也算是一种浪费时间的无效测试(特殊情况除外,如可靠性测试)。怎么才算有效?从手工测试的角度上来说,就是输入完全不同的测试数据,然后查看测试结果。那QTP该怎么做呢?很简单,只要把关键字输入框中Set的数据改掉就可以了,如下面这个脚本:

'启动浏览器并进入百度首页

SystemUtil.Run "www.baidu.com"

'第一次

Browser("百度一下,你就知道").Page("百度一下,你就知道")._

WebEdit("关键字输入框").Set "QTP自动化测试技术领航"

Browser("百度一下,你就知道").Page("百度一下,你就知道")._

WebButton("百度一下").Click

Browser("百度一下,你就知道").Page("百度搜索_搜索结果页面")._

Image("到百度首页").Click

'N

Browser("百度一下,你就知道").Page("百度一下,你就知道")._

WebEdit("关键字输入框").Set "谷歌"

Browser("百度一下,你就知道").Page("百度一下,你就知道")._

WebButton("百度一下").Click

Browser("百度一下,你就知道").Page("百度搜索_搜索结果页面")._

Image("到百度首页").Click

'第十次

Browser("百度一下,你就知道").Page("百度一下,你就知道")._

WebEdit("关键字输入框").Set "最后一次了,相同的代码一共使用了10"

Browser("百度一下,你就知道").Page("百度一下,你就知道")._

WebButton("百度一下").Click

Browser("百度一下,你就知道").Page("百度搜索_搜索结果页面")._

Image("到百度首页").Click

  上面这段代码最后完全实现了想要的效果,但是,缺点大家都已经看到了,有太多的重复内容,假设是要输入100个测试数据呢?复制、粘贴100次吗?显然不需这样,完全可以将Set的值进行参数化。先给出第一个解决方案,使用前面第一段代码相同的循环,但又每次输入不同的关键字,代码如下所示:

SystemUtil.Run "www.baidu.com"

For i = 0 to 9

  '1:代码唯一有改变的一句

   Browser("百度一下,你就知道").Page("百度一下,你就知道")._

   WebEdit("关键字输入框").Set DataTable.Value("关键字输入","Action1")&i

   Browser("百度一下,你就知道").Page("百度一下,你就知道")._ 

   WebButton("百度一下").Click

   Browser("百度一下,你就知道").Page("百度搜索_搜索结果页面")._

   Image("到百度首页").Click

Next

  我们来分析一下这个脚本,其实这段代码几乎和先前的那段代码没有两样,作者只改动了一句而已(代码里用注释标注的句1)。解决方案其实也不难,就是把每次循环的计数和测试输入组合,这样每个测试数据就都不一样了。不过,读者应该发现了吧,在这里并没有直接将测试数据明确写出来,取而代之的是DataTable.Value("关键字输入","Action1")这句话。这个就是本章节介绍的参数化,通过DataTable参数化。

  作者把测试数据封装到了DataTable.Value("关键字输入","Action1")里,如图1-196所示。

图1-196

  如图1-196所示,这个就是QTP内置的Data Talbe界面,可以在这里输入一些数据。把测试数据“QTP自动化测试技术领航”输入到了A1这个单元格里。这样做有什么好处?首先,一定知道现在所做的事情的意义和意图。其实从某种角度上讲,虽然操作很简便,但是,我们是在做封装的动作,将测试数据独立出来,并封装到一个容器里,以后可以供脚本调用。为什么要封装并且要把测试数据独立出来存放到一个储存的地方?试想一下,如果不进行测试数据封装会有什么后果。比如脚本里有100处地方需要输入这个测试数据,如果突然有一天测试需求变化了,不再需要输入这个关键字,需要换另一种测试数据进行输入,因为需要修改100处地方!如果此时测试数据和脚本是分离的,那我们只需要在A1这个单元格修改1次就可以了!1:100哪个划算,相信读者和本人一样清楚!到此,也引出了自动化测试的一个重要理念:测试数据和脚本业务的抽离。当然,将测试数据剥离出脚本的方法有很多种,在这里只介绍如何利用QTP的Data Table进行测试数据分离。

42/4<1234>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号