JMeter转制LoadRunner HTTP协议脚本的小技巧
对于Http协议的请求,除了手工编写脚本外,JMeter还提供了录制浏览器操作的功能,甚是方便。那如果手头有一堆HTTP协议的LoadRunner脚本,能不能比较快速的转制成JMeter脚本呢?其实也是可以的,只要借助JMeter的录制功能就可以。
首先LoadRunner脚本要能正常运行。以如下的一个简单的两次交互的脚本为例。
如上脚本包含三个请求,分为两个事务。
下面我们就开始利用JMeter的HTTP(S) Test Script Recorder组件进行LoadRunner脚本的转制。
1 JMeter准备工作
首先在TestPlan上右键Add->Non-Test Elements->HTTP(S) Test Script Recorder,增加测试脚本记录器。
在HTTP(S) Test Script Recorder上右键Add->Listener->View Results Tree,以便在录制的时候查看结果。
在TestPlan上右键Add->Threads(Users)->ThreadGroup,用来保存录制的脚本。
在ThreadGroup上右键Add->Logic Controller->Recording Controller,用来从Test Script Recorder处接收脚本。
这四项添加完后,JMeter的左侧树状结构如下
修改HTTP(S)
Test Script Recorder组件的属性,Port端口选择一个本机没有被占用的端口,启动JMeter的代理服务器使用;Target
Controller选择我们添加的Test Plan -> Thread Group -> Recording
Controller,JMeter抓取到的脚本将存放在这个位置;Grouping选择Put each group in a new
transaction controller,这个选项可以使JMeter将我们在录制时设定的Transaction
name作为父节点,每个http请求会自动挂到我们设定的父节点下,使脚本的结构更加清晰;HTTP Sampler
settings处选择Transaction
name,则录制到的每一个http请求的name会使用$自增编号+TransactionName的方式进行命名。
如上设置好之后,点击Start,首先会出现CA证书的相关信息。
点击OK后,就会出现录制的事务控制界面(Recorder: Transactions Control),实际录制时,我们可以在这个界面填入事务名称,是脚本的结构更加清晰明确。
至此,JMeter的准备工作已经完成,下面开始LR的相关配置。
2 LoadRunner准备工作
首先确定LoadRunner脚本只执行一次,不要运行多次迭代,以免录制的时候录制太多次。F4键打开LoadRunner的Run-time Settings,选择Run Logic,确保Number of Iterations是1。
再修改Proxy属性,将代理设置为本机127.0.0.1,端口设置为我们上一步在JMeter中配置的端口。
在脚本中设置合适的断点,一般在每个事务开始的地方设置断点,这样LoadRunner运行停止到断点暂停后,我们可以在JMeter的事务控制界面处更换新的事务名称。如下图,我们在“学校简介”这个事务处设置了断点。
3 开始实际录制
经过如上两个步骤,我们已经把准备工作都做完了。下面开始实际的录制工作。
首先在JMeter的Transactions Control上填入我们的第一个事务的名称。
然后开始运行LoadRunner(F5快捷键),当LoadRunner运行到断点暂停后
修改JMeter的事务名称,之后点击LoadRunner继续运行。
本次我们转制的LoadRunner脚本只有两个事务,如果脚本步骤比较多,那就如初循环,直到将所有的脚本操作录制完成。最后点击JMeter事务控制界面的Stop按钮,完成录制工作。
如果大家录制成功,那应该会看到类似如下的界面,Recording Controller下存放录制下的脚本,而View Results Tree中则记录录制请求时每一笔请求的明细信息。
4 JMeter脚本的收尾工作
经过前3步操作,我们已经完成了LoadRunner脚本到JMeter脚本的转制工作,得到了一个基本的JMeter脚本。最后还需要对脚本做一些收尾工作。
首先第一步把脚本从Recording Controller中移到Thread Group下。
录制出来的Transaction Controller下默认并没有勾选Generate parent sample,根据需要进行勾选。
接着把HTTP Test Script Recorder和Recording Controller组件移除或者禁用,清爽一下界面。
到目前为止录制的脚本中并没有HTTP Cookie Manager和HTTP Cache Manager,也没有参数化,大家根据脚本的实际需要,将Cookie和HTTP Manager添加上,将LoadRunner的参数化数据搬过来。
经过如上修改之后,一个典型的JMeter脚本就成型了。此方法特别适合批量LoadRunner http协议脚本转换。
在这欢迎大家关注我的个人微信号,测试杂货铺,微信公众号搜索"测试杂货铺"就可以,哈哈。
JMeter转制LoadRunner HTTP协议脚本的小技巧的更多相关文章
- Loadrunner的Socket脚本关联小技巧
Socket脚本关联小技巧 我们在socket脚本调试的时候经常会遇到很多问题,比如:socket包中繁杂的二进制编码,socket数据如何进行截取,如何对socket数据包进行参数化等等,以下几点内 ...
- loadrunner java协议脚本要点
常见问题 1. Error: Thread Context: Call to service of the driver failed, reason - thread context wasn't ...
- 远程执行shell脚本的小技巧
很多时候需要批量跑脚本执行任务,但又不想分发再执行,而是直接一条命令下去就跑脚本,该怎么玩比较嗨? 例如以下脚本: #!/bin/bash echo "$@" echo " ...
- Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本
脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...
- loadrunner之WebServices协议脚本编写(三种请求模式)
以天气预报网站为例:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 一.web_service_call模式 步骤如下 ...
- Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写
测试场景: 模拟并发100个user,在TesterHome 站内搜索VV00CC 添加线程组 添加HTTP信息头管理器 添加HTTP Sampler 填写HTTP Sampler中的信息 添加监听器 ...
- LoadRunner录制HTTPS协议脚本
学习LoadRunner录制HTTPS协议脚本,其实是一个意外的收获.当我拿到要测试的URL时,我像以前的步骤一样录制脚本,但是录制结束后,发现并没有生成脚本,开始以为是LoadRunner的原因,我 ...
- 【LoadRunner】LR编写Dubbo协议脚本
一.Dubbo服务简介 Dubbo是一个分布式服务架构,把核心业务抽取出来作为独立的服务,使前端应用能更快速和稳定的响应. Dubbo服务工作原理:服务提供方提供接口,并提供接口的实现,提供方注册服务 ...
- LoadRunner下载文件脚本
LoadRunner下载文件脚本 在看普泽关于pezybase的测试报告的时候,发现里面有用到jmeter(http协议)并发测试下载文件,考虑到后面可能需要在公司pezybase的并发下载,把之前 ...
随机推荐
- 实践和感悟 - scala向下转型和减少穷举
工作中的问题总结: 问题一:scala 之向下转型 引言:假如在复杂的业务逻辑中,变量的类型不能确认,只能给个接口类型,这样数据类型推导不会错误,但是后面要使用实现类的类型时,你却发现转不过来了? 对 ...
- Visual Studio 2013 Web开发新特性
微软正式发布Visual Studio 2013 RTM版,微软还发布了Visual Studio 2013的最终版本..NET 4.5.1以及Team Foundation Server 2013. ...
- django中session的存储位置
django-session 存放位置 设置session的保存位置,有三种方法: 保存在关系数据库(db) 保存在缓存数据库(cache) 或者 关系+缓存数据库(cache_db) 保存在文件系统 ...
- spring-boot默认的application.properties属性
# =================================================================== # COMMON SPRING BOOT PROPERTIE ...
- EclEmma安装与使用
安装 EclEmma 插件的过程和大部分 Eclipse 插件相同,我们既可以通过 Eclipse 标准的 Update 机制来远程安装 EclEmma 插件(图 1),也可以从站点(参阅参考资源)下 ...
- 谷歌希望让 Swift 成为安卓的优先选择,以取代由 Oracle 开发的 Java 程序语言。
http://news.coolban.com/Web/Index/land/app/2/id/405239
- UVa 11440 - Help Tomisu(欧拉函数 + 问题转换)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- shell基础--变量的数值计算
变量的数值计算 1.$((表达式)) (1).实验1 [root@~_~ day4]# cat test.sh #!/bin/bash a=6 b=2 echo "a-b=$(($a-$b) ...
- 【转】 java中Class对象详解和类名.class, class.forName(), getClass()区别
Class对象的生成方式如下: 1.类名.class 说明: JVM将使用类装载器, 将类装入内存(前提是:类还没有装入内存),不做类的初始化工作.返回Class的对象 2.Cla ...
- leetcode 39. Combination Sum 、40. Combination Sum II 、216. Combination Sum III
39. Combination Sum 依旧与subsets问题相似,每次选择这个数是否参加到求和中 因为是可以重复的,所以每次递归还是在i上,如果不能重复,就可以变成i+1 class Soluti ...