LoadRunner脚本编写之三(事务函数)
LoadRunner脚本编写之三(事务函数)
关于脚本的这块,前两篇都在讲C语言,其实,要整理点实用的东西挺难,在应用中多对录制的脚本分析,但对于新手学脚本确实无从下手。
先贴一个脚本:
完整代码:
重点代码部分:
Action()
{
web_url("webhp",
"URL=http://www.google.com.hk/webhp?hl=zh-CN&sourceid=cnhp",
"Resource=0",
.....
lr_start_transaction("登陆"); //设置事务开始
web_submit_data("ServiceLoginAuth",
"Action=https://accounts.google.com/ServiceLoginAuth",
"Method=POST",
........
web_file("web_find","defnngj@gmail.com",LAST); //设置检查点
lr_end_transaction("登陆",LR_AUTO); //设置事务结束
return 0;
}
上面的一段代码是我录制的一个google登录的过程,详细过程描述:
1、进入google首页
2、点击右上角的登录链接,跳转到登录页面
3、设置登录事务开始,输入用户名密码,点击登录
4、登录成功后跳转后google 首页,右上角出现登录的用户名,设置事务结束。
检查点
在上面的操作中,我设置了一个检查点,web_fiind ,判断后我是否登录成功一个重点的标志是在google首页右上角是否出现我的用户名。所以,我根据这个特点设置检查点,来检查登录是否成功。设置检查点的函数有三个,
web_find()函数: 在页面中查找相应内容
web_reg_find()函数: 在缓存中查打相应的内容
web_image_check()函数:在页面中查找具体图片。
他们的具体用法,你们可以在脚本的编写中,光标定位在函数中,按F1 查看帮助文档或参考其它文档。
关于脚本中的事务
我们在一个脚本中可能要做很多操作,我们为了分清脚本中某一段代码具体是做什么,所以,在执行某个操作的前后需要添加事务,用来标志事务的开始与结束,这样可以使脚本更清晰。当然,对于不同的事务需要分开录制。比如,某电子商务网站的浏览商品与交易。他们的比例是不同的,对于比较复杂的场景,是多个事务按不同的比例并行的。设置80%的用户浏览商品,20%的用户进行交易。
当然,事务与事务之间是会有依赖关系的。如果我们把访问首页定为一个事务,登录定为一个事务,浏览商品定为一个事务,交易定为一个事务。那么我们要想录制(编写)交易的事务,那么前面三个事务是先觉条件。所以,我们知道录制一个脚本的目的是哪个操作,然后在其前后添加事务标识。
对80%的用户浏览商品,20%用户交易,交易的前提是先浏览一个商品,也就是所有用户(100%)都浏览了商品,只有20%的用户去交易。这样是合乎逻辑的。
事务函数
在上面的脚本中我们用到了lr_start_transaction()函数和 lr_end_transaction()函数来标识一个事务的开始与结束,除些之外,loadrunner还提供了许多与事务相关的函数,这里介绍几个常用的。
1、lr_set_transaction_instance_status 用于设置事务的状态,事务的状态包括:LR_PASS、 LR_FAIL 、 LR_AUTO 、 LR_STOP 。可以在脚本中根据条件设置事务的状态,例如,根据检查点返回的结果来设置事务为通过还是失败。
if(event == GENERAL_ERROR)
lr_set_transaction_instance_status(LR_FAIL);
lr_end_transaction("登陆",LR_AUTO);
2、 lr_fail_trans_with_error与lr_set_transaction_instance_status 类似,都可以用于设置事务的状态,区别在于lr_fail_trans_with_error除了可以设置的状态,还可以输出错误日志信息。
if(status != SUCCESS)
lr_fail_trans_with_error("an
error has occurred:%s",my_get_error_string(status));
lr_end_transaction("登陆成功",LR_AUTO);
3、lr_get_transaction_status与前两个函数的作用相反,用于获取事务的状态。
if (lr_get_transaction_status() == LR_FAIL)
{
//由于web_url请求失败了,所以没有必要继续执行下去,因些设置事务状态为FAIL
lr_end_transaction("登陆失败",LR_FAIL);
return;
}
4、lr_get_transaction_duration 用于获取事务所消耗的时间。这个就比较有意思了。
我们登录百度首页,插入一个事务,然后访问百度注册页面。下面计算访问注册页面的时间。
完整脚本:
重点代码部分:
Action()
{
double trans_time; //定义变量
web_url("www.baidu.com",
"URL=http://www.baidu.com/",
.....
lr_start_transaction("访问注册页"); //定义事务开始
web_link("???",
"Text=???",
"Ordinal=2",
"Snapshot=t15.inf",
......
trans_time=lr_get_transaction_wasted_time("访问注册页"); //获得消耗时间
if (trans_time) {
lr_output_message("The
duration up to the submit is %f seconds",trans_time); //打印数输出消耗实时间
}else{
lr_output_message("the duration
cannot be determined. ");
}
lr_end_transaction("访问注册页",LR_AUTO); //事务结束
return 0;
}
运行结果:
.......
Action.c(39): The duration up to the submit is 0.029588 seconds
Action.c(45): Notify: Transaction "访问注册页" ended with
"Pass" status (Duration: 5.0300 Wasted Time: 0.0296).
Ending action Action.
Ending iteration 1.
39行:持续时间长达0.029588秒的提交
45行:通知:交易”访问注册页”结束,“通过”状态(持续时间:5.0300 浪费时间:0.0296)。
从上面的结果中发现,我们设置lr_get_transaction_wasted_time函数的时间0.029588 与事务结束浪费的时间 0.0296 非常接近。 这是因为我把 lr_get_transaction_wasted_time函数插入在了事务结果的前面,其实,我们可以将lr_get_transaction_wasted_time插入在事务执行过程的任意位置来计算消耗时间。
LoadRunner脚本编写之三(事务函数)的更多相关文章
- LoadRunner脚本编写(5)-- 检查点,关联等函数
LoadRunner脚本编写(5)-- 检查点,关联等函数 http://www.51testing.com/?34866/action_viewspace_itemid_70224.html来继续翻 ...
- LoadRunner脚本编写(转)
性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了.还有非计算机专业出身的测试员 ...
- LoadRunner脚本编写
性能測试project师要懂代码么?答案是必须的.好多測试员觉得在loadrunner中编写脚本非常难非常牛X ,主要是大多測试人员并未做过开发工作,大学的那点程序基础也忘记的几乎相同了. 还有非计算 ...
- LoadRunner脚本编写之二
LoadRunner脚本编写之二 编程基本语法必须要记牢.程序的思想也很重要. 下面来回顾一下嵌套循环例子. Action() { int i,j; //生命两个变量 for ( ...
- LoadRunner脚本编写之一
LoadRunner脚本编写之一 性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不 ...
- LoadRunner脚本编写(6)— 数据类型转换和字符串操作
LoadRunner脚本编写(6)— 数据类型转换和字符串操作 一,数据类型转换 没有使用过C编程的LoadRunner脚本编写者会发现在数据类型转化方面比较困难.下面介绍这方面的知识. 1. 相似函 ...
- loadrunner脚本编写经验
最近写了不少loadrunner脚本,记录一下心得:1 loadrunner脚本基本可以认为就是c语言代码(loadrunner支持不同语言的脚本,默认生成的是用c语言写的脚本)2 loadrunne ...
- LoadRunner 脚本开发和常用函数
开发性能测试脚本原则.简单 正确 高效 在lr中,脚本运行是解释执行的.所以在运行时,需要先编译. 局部变量和全局变量 1.在init.action.end中定义的变量就是局部变量 2.在global ...
- Loadrunner 脚本开发-利用web_submit_data函数实现POST请求
脚本开发-利用web_submit_data函数实现POST请求 by:授客 QQ:1033553122 概述 web_link()和web_url()函数都是页面访问型函数,实现HTTP请求中的 ...
随机推荐
- Acwing 197. 阶乘分解
给定整数 N ,试把阶乘 N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pipi 和 cici 即可. 输入格式 一个整数N. 输出格式 N! 分解质因数后的结果,共若干行,每行一对pi, ...
- Optimization Algorithms
1. Stochastic Gradient Descent 2. SGD With Momentum Stochastic gradient descent with momentum rememb ...
- slplunk原始数据和索引数据大小比较
DB目录总大小:2468MB 所有buckets的meta信息在.bucketManifest文件里: id,path,"raw_size","event_count&q ...
- CSS——字体大小最常用的单位
px (像素): 将像素的值赋予给你的文本.这是一个绝对单位, 它导致了在任何情况下,页面上的文本所计算出来的像素值都是一样的. ems: 1em 等于我们设计的当前元素的父元素上设置的字体大小 (更 ...
- iptables防火墙入门
一.iptables基本管理 iptables运行前提:关闭firewalld防火墙再开启iptables,不然造成冲突. 基本指令: 1.部署iptables服务 yum –y install ip ...
- 关于Http协议,一片就够了
转载:http://www.jianshu.com/p/80e25cb1d81a HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从 ...
- Ubuntu系统没声音
问题: http://www.linuxdiyf.com/linux/22936.html $aplay -l 得到下面的信息ubuntu aplay: device_list:268: no so ...
- PHP类知识----静态属性和方法
<?php class mycoach { public $name="陈培昌"; CONST hisage =; ; private $favorite = "喜 ...
- django环境配置(基于命令行安装)
一.django简介 Python服务端开发框架,Django是一个开放源代码的Web应用框架,由Python写成,Django采用了MVC的软件设计模式,即模型M,视图V和控制器C 二.安装配置dj ...
- input框输入手机号码分隔显示
在input框输入手机号码时,自动加入空格按照3,4,4位显示,如: 实现方法如下: <label>手机号码</label><input type="text& ...