上午实习任务:
- lr在哪里观察、如何观察发出的请求和响应的信息
- lr有哪些种类的检查点,分别起什么作用
- 可以在那些地方设置检查点
- 要让检查点生效必须在哪做什么设置
- 对比qtp的检查点分析lr检查点的特点
- 对录制的脚本分别实验几种检查点,测试检查通过和不通过的现象
- lr有几种方式进行参数化
- 如何让脚本按照实际的参数化数据量来运行测试
- 在代码中用图形化界面帮助进行参数化
- 自行创建一个符合格式要求的参数化文件,在脚本中选择该文件进行参数化
- 对比qtp的参数化分析lr参数化的不同
下午实习任务:
- 将参数化的变量值在日志中打印输出
- 什么是关联,什么情况下要用关联
- 尝试用b/s订票系统录制脚本、回放之后实现自动关联
- 验证自动关联的脚本能否解决问题
LoadRunner使用
Generater基本页面:
1、录制
新建录制:
选择相应的协议,点击“create”:
Application type :选择录制的程序类型,分为web页面和客户端:
Program to record :选择打开web程序使用的浏览器,这里因为是window2003所以还是默认选择ie浏览器
URL Address :填入要打开的web程序的URL地址
Working directory :工作目录
Record Action :选择所在的Action
如有更多详细设置可以点击左下角的“Options”:
录制完成后点击“stop”结束录制:
录制完成后的脚本:
如不保存,可选择“file”-->“close”关闭:
2、检查点
(1)插入检查点的方法
a.在菜单栏选择“insert”--> “new step”:
选择检查点,有图片和文本检查点两种:
b.在菜单栏选择“tree”:
在Action页面选择对应位置右键,插入检查点:
c.在“html view”页面选中需要检查的文字,右键:
(2)图片检查点
例:在“WebTours”中检查其logo
查看想检查的图片页面的源代码:
可以看到此页面的分栏,因为logo在头部,我们注意到“header.html”:
在“http view”页面,找到“header.html”中的图片路径“images/hp_logo.png”:
插入图片检查点,勾选SRC,填入刚刚找到的地址:
可以发现“tree”页面多了一行图片检查:
“script”页面也多了相应的代码:
选择菜单栏“vuser”-->“run-time settings”:
在“perferences”页面勾选检查点:
运行完后可以在日志页面看到检查点的结果:
或者在菜单栏打开运行结果:
可以看到相应检查点结果显示:
3、参数化
(1)选中要参数化的部分,右键:
可以定义参数名,选择参数的类型:
参数化完成后的结果如图所示:
如果在后面还有代码需要使用同一个参数,可以右键选择:
(2)选中已参数化的部分,右键,对其属性进行设置:
可以添加行,以进行多组数据的执行:
如果想把密码和用户一一对应放在一起参数化,可以添加列:
这里是指当前按第x列执行,因为该属性是用户名打开的,因此我们要选择第一列:
同样的,对密码进行参数化,选择“属性”:
在“file”中选择刚刚用户名的file,选择第2列:
关闭后点击“保存”:
选择菜单栏“vuser”-->“run-time settings”:
把运行次数改为“2”:
选择菜单栏的“常规设置”:
勾选该选项:
可以在运行时显示操作
在菜单栏的“参数列表”中可以查看已有参数:
运行后,可以从日志中看出确实运行了2次:
(3)除了添加行和列进行参数化,我们还可以直接导入文档来参数化。
进入项目的保存目录,可以发现有我们刚刚参数化的“user.dat”文件:
用“写字板”打开:
仿照其格式,新建一个文本文档,编辑好内容后保存为“test.dat”:
进入“参数列表”,把文件更改为刚刚编辑好的内容:
可以看到列表显示了文本文档中的信息
其中,右下角的“file format”中表示其分隔符:
分别为,逗号、tab符,空格
把运行次数改为4,再次运行:
(4)如果参数化后只有2组数据,运行4次会有什么结果呢?
从结果报告中可以发现为循环运行:
我们打开参数化列表:
“Select next row”表示选用下一条数据的方法:
Sequential | 按列表顺序使用 |
Random | 随机使用列表中的数据 |
Unique | 只用某一条固定的数据 |
“Updata value on”表示如果一次迭代中有多次出现该变量,使用的方法:
Each iteration | 每次迭代都按照上一条选用的方法来 |
Each occurrence | 每次遇到该变量,就按照上一条选用的方法来 |
Once | 只使用一次上一条选用的方法 |
我们在登录的后面加入一行代码:
lr_output_message("调试信息:%s",lr_eval_string("{user}"));
可在每次执行完毕后在日志页面打印出当前登录所用的用户名。
需要提到的一点是,当我们加入代码后,可以先编译验证其正确性再来运行,当代码行很多时这是必要的:
日志页面显示:
再说回来,比如,我们选择每次迭代都随机选择:
运行后可以看到:
Starting iteration 1.
Action.c(21): 调试信息:lakuite
Starting iteration 2.
Action.c(21): 调试信息:aaa
Starting iteration 3.
Action.c(21): 调试信息:abc
Starting iteration 2.
Action.c(21): 调试信息:abc
若换成每次遇到都随机选择:
运行后可以看到:
Starting iteration 1.
Action.c(21): 调试信息:lakuite
Starting iteration 2.
Action.c(21): 调试信息:test
Starting iteration 3.
Action.c(21): 调试信息:aaa
Starting iteration 2.
Action.c(21): 调试信息:aaa
因为该脚本中每次迭代都只用过“user”变量一次,所以在此例中这两种方法是相同的。
若选择只随机执行一次:
运行后可以看到:
Starting iteration 1.
Action.c(21): 调试信息:abc
Starting iteration 2.
Action.c(21): 调试信息:abc
Starting iteration 3.
Action.c(21): 调试信息:abc
Starting iteration 2.
Action.c(21): 调试信息:abc
因为只执行一次,所以每次的用户名都是第一次选择的那一个。
4、关联
我们打开订票网页,进入管理员页面:
勾选第3条:
点击底部的“更新”:
重新录制一次脚本,并运行。
可以发现日志行有如下的错误:
这是因为录制时的session和运行时已经不是同一个。
我们使用一下LR的自动比对功能:
需要注意的是,该功能比较严苛,一定要是刚录制好的初始状态的脚本,并运行一次才能实现成功。
在结果页面中可以发现有2处不同:
这2处其实都是session的内容部分:
除了这种比对方式还有另一种比对,但是只能比对代码行:
选择要与之比对的脚本:
图中黄色标记处即为不同:
我们回到自动比对页面,选择不同处的任意一行,点击“关联”:
看到代码页面,可以发现以下行有改变:
把以“p”开头“D”结尾的一段字符串做成参数化,命名为“CorrelationParameter_1”。
把参数化的该变量放到对应的位置。
但是事实上,其实整个“session value”的部分都应该做成参数化,而不是其中的一小段。
回到http视图,如果想要把整段变成参数化,且不会与其他行产生歧义,可以选择以“userSession value=”为开头,以“>”为结尾:
更改一下代码页面,变量名比较长,顺便也更改为一个更短的变量名:
运行一下,对比修改前和修改后的日志报告,之前报的红色错误消失了: