本次主要介绍下qtp的各种参数化方法和很多人在参数化时候容易犯的几个错误。
很多人最初接触参数化的时候都是从利用datatable的Global表参数化开始的。因为那是操作实现起来最简单的参数化,但同时也是误导和制约大部分新手的一个枷锁。
qtp利用global表参数化的操作在此就省略了,网上随便搜都能找一大堆,就在此提供一个百度的链接吧:http://hi.baidu.com/ruanjianceshi/item/f6283dc3361a912c47d5c031
顺带说一个很多新手因为这个参数化产生的问题吧:
参数化之后,重新录制一个Test,回放时候会运行多次(上次参数化的次数)。
原因:参数化之后datatable的global表中的数据行没有删除干净,表现为Global表中某行的下边框为黑色线条。
解决:选中Global表中的行,右键选择Edit—Delete,删除改行即可。
扩展:Global表中第一行的黑线是无法通过delete删除掉的,因为qtp脚本的迭代次数首先是根据global表和Local表来控制的,并且因为脚本至少迭代一次,所以global表中至少要有一行数据(global表中无数据的时候,是默认有一行为空的数据的);至于Global表和Local表的作用和优劣会在后面测试参数规划部分介绍的。
参数化是自动化测试中的一个非常重要的部分,也是学好自动化测试一个重中之重。下面来简单介绍几种qtp常用的参数化方法,并简略对比分析他们的优劣性,至于具体使用下一篇会详细介绍:
1. datatable参数化:datatable是qtp封装的一个小型数据表,对于它的介绍可以参看qtp帮助文档的介绍。
优点:访问速度快,操作简单且快速上手。
缺点:需要在录制或编写测试脚本的时候把数据一起填充进去;即使有qtp脚本中有单独的parameter.mtr文件可以单独编辑处理测试数据,但毕竟这种类型的文件是qtp专有的数据文件,从维护角度上来说总是很费事。
适用情况:参数为固定参数时使用
2. 外部数据文件excel、database+datatable参数化:使用外部文件导入数据以弥补parameter.mtr文件不利用编辑维护的缺陷。
优点:datatable文件访问速度快,操作简单。外部excel、database文件编辑方便,并且与脚本分离,易于扩展。
缺点:因为需要在测试执行初期或开始调用测试数据前导入测试数据,在执行结束后将测试数据导出并销毁datatable的使用痕迹,所以初始化Test和执行Test时比较浪费时间,并且对资源的占用也较大(需要两次大数据量转储)。
适用情况:参数较多却需要频繁读取的情况下
3. 外部文件excel、database参数化:直接使用外部文件作为数据源进行参数化。
优点:数据易于组织管理,不需要中转备份。
缺点:访问速度比较慢,如果参数需要频繁读取的时候,响应速度和资源占用情况都不乐观
适用情况:参数较多不需要频繁读取
4. txt、xml文件参数化:文本文件读取资源占用小,访问快,且易于编辑修改
优点:访问速度较excel、db文件快
缺点:不易于组织管理。
适用情况:参数较少的情况下
5. xml、txt、ini + qtp环境变量:利用环境变量,加强文本参数文件的组织结果
优点:访问速度快速,只需要管理txt文件的目录结构即可实现参数的组织管理
缺点:不能很好的响应参数值动态变化
适用情况:参数分类较细,且每个参数文件中的参数条目较少
以上是对我目前接触到的参数化文件类型和使用过程中的对比,数据量比较大的时候建议用excel或db来组织;数据量较小的时候txt组织会更快速有效一点。当然,在实际项目中决定参数化的方式并不能只靠这些来决定,还需要根据很多因素,如:个人能力、使用习惯、公司期望等。这些仅为个人观点,如果谁有不同观点,欢迎一起讨论。