Loadrunner:脚本编写通用模板(Http协议类型)
1. 背景
对于 Http协议,Loadrunner 脚本可以使用通用模板反复粘贴,只需要修改其中的 URL 和 传参,就可以完成一整个业务
2. Get 类型的接口
web_custom_request(
// 名称,最好用英文
"Hello",
// 接口的 URL,建议 appboss 地址设置成变量,方便切换环境
"URL={appboss}/app/shopBuy/detail?tokenId={tokenId}",
// 提交方式
"Method=GET",
"TargetFrame=",
"Resource=1",
// 返回内容定义的类型
"RecContentType=application/json",
"Referer=",
// 请求内容定义的类型
"EncType=application/x-www-form-urlencoded; charset=utf-8",
LAST);
3. POST 类型接口
web_submit_data(
// 名称,最好用英文
"Hello",
// 接口的 URL,建议 appboss 地址设置成变量,方便切换环境
"Action={appboss}/app/shopBuy/detail?tokenId={tokenId}",
// 提交方式
"Method=POST",
"TargetFrame=",
"Referer=1",
// 返回内容定义的类型
"RecContentType=application/json",
"Referer=",
"Mode=HTML",
ITEMDATA,
// 请求体内容
"Name=传参的键", "Value=传参的值", ENDITEM,
LAST);
4. 添加事务
事务是用来区分不同业务的,一个接口就可以用一个事务包含起来,方便统计
// 事务开始
lr_start_transaction("事务名称"); web_submit_data(
// 名称,最好用英文
"Hello",
// 接口的 URL,建议 appboss 地址设置成变量,方便切换环境
"Action={appboss}/app/shopBuy/detail?tokenId={tokenId}",
// 提交方式
"Method=POST",
"TargetFrame=",
"Referer=1",
// 返回内容定义的类型
"RecContentType=application/json",
"Referer=",
"Mode=HTML",
ITEMDATA,
// 请求体内容
"Name=传参的键", "Value=传参的值", ENDITEM,
LAST); // 事务结束
lr_end_transaction("事务名称", LR_AUTO);
5. 添加断言
上面的脚本还缺少测试中最重要的一环,就是断言,判断执行的结果是否符合预期
// 事务开始
lr_start_transaction("事务名称"); // 这个需要放到Http请求前面,从结果中查找预期匹配内容
web_reg_find(
"SaveCount=存储匹配次数的变量名",
// 想要匹配的内容
"Text=\"errorCode\" : \"200\",\n",
LAST); web_submit_data(
// 名称,最好用英文
"Hello",
// 接口的 URL,建议 appboss 地址设置成变量,方便切换环境
"Action={appboss}/app/shopBuy/detail?tokenId={tokenId}",
// 提交方式
"Method=POST",
"TargetFrame=",
"Referer=1",
// 返回内容定义的类型
"RecContentType=application/json",
"Referer=",
"Mode=HTML",
ITEMDATA,
// 请求体内容
"Name=传参的键", "Value=传参的值", ENDITEM,
LAST); // 事务结束
// 根据匹配的数量进行判断事务是否成功
if(atoi(lr_eval_string("{存储匹配次数的变量名}"))>)
{
// 事务成功
lr_end_transaction("事务名称", LR_PASS);
}
else
{
// 事务失败
lr_end_transaction("事务名称", LR_FAIL);
}
6. 添加集合点
既然是做性能,自然少不了并发用的集合点
// 集合点,需要放在事务之前
lr_rendezvous("集合点名称"); // 事务开始
lr_start_transaction("事务名称"); // 这个需要放到Http请求前面,从结果中查找预期匹配内容
web_reg_find(
"SaveCount=存储匹配次数的变量名",
// 想要匹配的内容
"Text=\"errorCode\" : \"200\",\n",
LAST); web_submit_data(
// 名称,最好用英文
"Hello",
// 接口的 URL,建议 appboss 地址设置成变量,方便切换环境
"Action={appboss}/app/shopBuy/detail?tokenId={tokenId}",
// 提交方式
"Method=POST",
"TargetFrame=",
"Referer=1",
// 返回内容定义的类型
"RecContentType=application/json",
"Referer=",
"Mode=HTML",
ITEMDATA,
// 请求体内容
"Name=传参的键", "Value=传参的值", ENDITEM,
LAST); // 事务结束
// 根据匹配的数量进行判断事务是否成功
if(atoi(lr_eval_string("{存储匹配次数的变量名}"))>)
{
// 事务成功
lr_end_transaction("事务名称", LR_PASS);
}
else
{
// 事务失败
lr_end_transaction("事务名称", LR_FAIL);
}
Loadrunner:脚本编写通用模板(Http协议类型)的更多相关文章
- LoadRunner脚本编写(转)
性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不多了.还有非计算机专业出身的测试员 ...
- LoadRunner脚本编写
性能測试project师要懂代码么?答案是必须的.好多測试员觉得在loadrunner中编写脚本非常难非常牛X ,主要是大多測试人员并未做过开发工作,大学的那点程序基础也忘记的几乎相同了. 还有非计算 ...
- LoadRunner脚本编写之二
LoadRunner脚本编写之二 编程基本语法必须要记牢.程序的思想也很重要. 下面来回顾一下嵌套循环例子. Action() { int i,j; //生命两个变量 for ( ...
- LoadRunner脚本编写(5)-- 检查点,关联等函数
LoadRunner脚本编写(5)-- 检查点,关联等函数 http://www.51testing.com/?34866/action_viewspace_itemid_70224.html来继续翻 ...
- LoadRunner脚本编写(6)— 数据类型转换和字符串操作
LoadRunner脚本编写(6)— 数据类型转换和字符串操作 一,数据类型转换 没有使用过C编程的LoadRunner脚本编写者会发现在数据类型转化方面比较困难.下面介绍这方面的知识. 1. 相似函 ...
- LoadRunner脚本编写之三(事务函数)
LoadRunner脚本编写之三(事务函数) 关于脚本的这块,前两篇都在讲C语言,其实,要整理点实用的东西挺难,在应用中多对录制的脚本分析,但对于新手学脚本确实无从下手. 先贴一个脚本: 完整代码: ...
- LoadRunner脚本编写之一
LoadRunner脚本编写之一 性能测试工程师要懂代码么?答案是必须的.好多测试员认为在loadrunner中编写脚本很难很牛X ,主要是大多测试人员并未做过开发工作,大学的那点程序基础也忘记的差不 ...
- loadrunner脚本编写经验
最近写了不少loadrunner脚本,记录一下心得:1 loadrunner脚本基本可以认为就是c语言代码(loadrunner支持不同语言的脚本,默认生成的是用c语言写的脚本)2 loadrunne ...
- loadrunner脚本编写http协议
随机推荐
- Git速成学习第三课:创建与合并分支
本来第三课想记录一下远程仓库的创建与克隆0.0但是想了想还是不写了. 这里写一下分支管理中的创建与合并. Git速成学习笔记整理于廖雪峰老师的官网网站:https://www.liaoxuefeng. ...
- 最新 小米java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.小米等10家互联网公司的校招Offer,因为某些自身原因最终选择了小米.6.7月主要是做系统复习.项目复盘.LeetCode ...
- JavaScript里的类和继承(转)
转自: http://www.h5cn.com/js/jishu/2016/0121/17634.html js与大部分客户端语言有几点明显的不同: JS是 动态解释性语言,没有编译过程,它在程序运行 ...
- 淘宝客类别id大全
汽车/用品/配件/改装 例 [ID:26] 家居饰品 例 [ID:50020808] 特色手工艺 例 [ID:50020857] 景点门票/度假线路/旅游服务 例 [ID:50025707] 男装 例 ...
- DS博客大作业--树(李天明组)
DS博客大作业--树 大作业博客要求 (10分) 1.树的存储结构说明 .树采用的是链式存储结构. .这段代码中定义了两个结构体.第一个是自定义为Name类型的结构体,里面的成员有字符串str和类型为 ...
- Beanutils.copyProperties( )用法及重写提高效率
参考地址:https://blog.csdn.net/w05980598/article/details/79134379 待研究中.....
- 【LOJ】#3097. 「SNOI2019」通信
LOJ#3097. 「SNOI2019」通信 费用流,有点玄妙 显然按照最小路径覆盖那题的建图思路,把一个点拆成两种点,一种是从这个点出去,标成\(x_{i}\),一种是输入到这个点,使得两条路径合成 ...
- Synchronized&Lock&AQS详解
加锁目的:由于线程执行的过程是不可控的,所以需要采用同步机制来协同对对象可变状态的访问. 加锁方式:java锁分为两种--显示锁和隐示锁,本质区别在于显示锁需要的是程序员自己手动的进行加锁与解锁如Re ...
- Django-djangorestframework-请求模块-获取请求参数
目录 请求模块 源码分析 正式使用 总结 请求模块 主要是分析 drf 二次封装后的 request 对象 以及怎么拿到请求传递过来的数据(url 拼接的数据,数据包传过来的数据) 源码分析 源码查看 ...
- configure,make和make install关系
linux编译安装中configure.make和make install各自的作用 ./configure是用来检测你的安装平台的目标特征的.configure根据给定的参数和系统环境会生成Make ...