自动化测试对录制和编辑好的测试步骤进行回放,这种是线性的自动化测试方式,其缺点是明显的,就是其测试覆盖面比较低。测试回放的只是录制时做出的界面操作,以及输入的测试数据,或者是脚本编辑时指定的界面操作和测试数据。

如何让测试脚本执行时,不仅仅局限于测试录制或者编辑时的测试数据呢?数据驱动的测试方式是解决这个问题的最佳方案。数据驱动测试把测试脚本中的测试数据提取出来,存储到外部文件或数据库中,在测试过程中,从文件动态读入测试数据。

在QTP中,可以通过把测试脚本中固定的值替换成参数的方式来扩展测试脚本,这个过程也叫参数化测试。对于QTP可以使用多种方式来对测试脚本进行参数化,数据表参数化,环境变量参数化,随机数参数化等等。

一.数据驱动测试的一般步骤

1.参数化测试步骤的数据,绑定到数据表格中的某个字段;

2.编辑数据表格,在表格中编辑多行测试数据(取决于测试用例以及测试覆盖率的需要);

3.设置迭代次数,选择数据行,运行测试脚本每次迭代从中选择一行数据;

二.数据表参数化

比如,我录制了一段打开QTP自带的“Flight”程序的脚本,包含登陆步骤和查询航班信息步骤:

上面的脚本仅能检测特定的航班订票记录,现在我希望测试脚本对多个航班都进行查询,那么我们就需要进行参数化。

下面以“Fly From”的测试步骤的参数化过程为例,介绍如何在关键字视图中对测试脚本进行参数化。

(1)选择“Fly From:”所在的测试步骤行,单击“value”列所在的单元格,单击单元格旁边的“<#>”按钮,或者按快捷键“CTRL+F11”,则会出现下面的界面:

(2)选择第二个选项“Parameter”,默认是“Data Table”,“name”中输入参数化数据所在列的名字,最好自己编辑,不要使用默认值,方便在多个数据参数化后辨认。

在“Location in Data Table”中科院选择“Global sheet”,或者是“Current action sheet(local)”,区别仅仅是参数存储位置的不同。

点击OK按钮之后,在关键字视图中可看到,“value”值已经被参数化,替换成了“Data Table("<fly_from>")”。同时在Data Table(选择菜单“View|Data Table”打开)中可以看到刚刚“fly from”的默认值被自动写入表格中,继续编辑输入其他数据,得到如下图所示的界面:

(3)运行

由于刚刚的例子中还包含了登陆的操作,如果就这样执行遍历data table中的数据,登陆操作也会被重复执行3次的。所以我们要先把登陆操作删除掉,再来运行需要遍历的操作。

我尝试了点击查询操作,再选择“run from step”,但是这样就不能实现参数化的操作了,只能执行一遍。有没有其他不需要删除login操作的办法来实现参数化呢?请各位大神指教。

删除login操作之后,我们来正式运行。这个运行之前需要先设置2个地方:

1)点击菜单栏的“File”,再选择“settings....”,打开如下的界面,选择Run:

可以看到Data Table iterations下有三个设置,可以选择“Run on all rows”(data table里的数据全部执行),或者是选择“Run from row x

to row xx”(仅执行data table里的特定几行数据)。

选择好之后,点击 apply,再点击OK

2)选中action,点击右键,选择“Action Call Properties...”,打开设置界面,

  -----> 

如右上图,需要设置的内容跟刚刚的第一个设置是一样的,需要注意的是这里的设置要跟第一个设置完全一样。

最后,就可以执行运行操作遍历所有参数例子了。

最后可以看看这个文章里关于Globle Sheet和Local Sheet的区别:http://www.cnblogs.com/bangbangjiang/p/3830136.html

参数化测试--sheet表的应用的更多相关文章

  1. MSTest不支持参数化测试的解决方案

    之前的项目中做单元测试一直用的是NUnit,这次做新项目,负责人要求统一用MsTest,理由是MsTest是Visual Studio内置的.用就用吧,我没什么意见.不过用了两天,我就发现一个大问题: ...

  2. 计算某天的下一天:黑盒测试之等价类划分+JUnit参数化测试

    题目要求 测试以下程序:该程序有三个输入变量month.day.year(month.day和year均为整数值,并且满足:1≤month≤12.1≤day≤31和1900≤year≤2050),分别 ...

  3. Easypoi实现excel多sheet表导入导出功能

    Easypoi简化了开发中对文档的导入导出实现,并不像poi那样都要写大段工具类来搞定文档的读写. 第一步引入Easypoi依赖 <!-- 导出文件工具 EasyPoi实现Excel读写管理测试 ...

  4. JUnit5学习之六:参数化测试(Parameterized Tests)基础

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. Google C++单元测试框架GoogleTest---值参数化测试

    值参数化测试允许您使用不同的参数测试代码,而无需编写同一测试的多个副本. 假设您为代码编写测试,然后意识到您的代码受到布尔参数的影响. TEST(MyCodeTest, TestFoo) { // A ...

  6. JMeter学习-026-JMeter 分布式(远程)参数化测试实例

    以前文所述对文章详情的HTTP请求进行性能测试为例.日常实际场景中,不可能所有的人都在同时访问一篇文章,而是多人访问不同的文章,因而需要对文章编号进行参数化,以更好的模拟日常的性能测试场景.同时,因文 ...

  7. c# applibrary实现一个Sheet表中存放多张DataTable数据

    1.工具类(applibrary.dll) public class ExcelHelper { /// <summary> /// 文件名 /// </summary> pu ...

  8. Junit4参数化测试实现程序与用例数据分离

    http://touchfu.iteye.com/blog/732930 现状:你是不是还在为自己的TestCase代码杂乱无章而苦恼,咎其根本还在于针对不同的用例,输入参数和mock信息的组装全部作 ...

  9. 同时使用Junit4的@Parameterized参数化测试和Spring容器

    转载:http://www.jianshu.com/p/d191fe54915f 整合Spring容器 @SpringApplicationConfiguration(classes = Applic ...

随机推荐

  1. Python爬行动物(一):基本概念

    定义网络爬虫          网络爬虫(Web Spider,也被称为网络蜘蛛,网络机器人,也被称为网页追逐者).按照一定的规则,维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁,自己主动索引 ...

  2. ios block循环引用问题

    ios开发中,开了ARC模式,系统自动管理内存,如果程序中用到了block就要注意循环引用带来的内存泄露问题了 这几天遇到一个问题,正常页面dismiss的时候是要调用dealloc方法的,但是我的程 ...

  3. php中如何开启GD库

    php中开启GD库 在浏览器输入启用wamp下的GD库(否则验证码可能不能用) D:\lamp\php\php.ini 文件

  4. kill命令"-1"这个参数到底是杀进程还是reload?(转)

    kill-1:重新读取一次参数的配置文件 (类似 reload) 这句话给我的感觉是把进程杀掉后重启进程,即 reload.而我查了下 man kill,-1 对应的 signal 是 SIGHUP, ...

  5. Kendo UI开发教程(14): Kendo MVVM 数据绑定(三) Click

    Click绑定可以把由ViewModel定义的方法不绑定到目标DOM的click事件.当点击目标DOM元素时触发ViewModel的对应方法.例如: 使用Click绑定 1 <div id=&q ...

  6. 【大话QT之十七】Jenkins介绍及安装使用文档(与Git集成)

    文章文件夹结构例如以下: 1> Jenkins与Git相关介绍 2> Jenkins部署安装 3> Gitblit部署安装 4> Jenkins与Git集成使用 5> 项 ...

  7. 分享毕业学生“ERP实施project联赛”总结,是肺腑之言——知识是人的价值的体现,每门课程是有意义的学校纪律

    丁.这是我刚刚完成的实习报告,特别是给你一个.阿信,让你知道的真实想法研究生管,我希望你相信在教育管帮助.---雷管1102 刘弈福 以上是刚刚收到(20140427)生邮件,贻富不是我带的毕业设计学 ...

  8. JMX操作ActiveMQ(1)

    我们知道ActiveMQ broker的管理接口是通过JMX方式提供的. 一个简单的访问方式就是通过jconsole,输入 service:jmx:rmi:///jndi/rmi://localhos ...

  9. hdu1824(two-sat)

    传送门:Let's go home 题意:有n个队伍要回家,但是每队必须留下一人,而且m个限制,a留下,b必须回家,问能否在限制条件下每队留下一人. 分析:将每个队的队长和两个队员当成i和i':然后对 ...

  10. Android 调用谷歌语音识别

    調用谷歌语音识别其实很简单,直接利用 intent 跳转到手机里面的谷歌搜索 代码也很简单,直接调用方法 startVoiceRecognitionActivity() 如果大家手机里面没有谷歌搜索, ...