对于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协议脚本的小技巧的更多相关文章

  1. Loadrunner的Socket脚本关联小技巧

    Socket脚本关联小技巧 我们在socket脚本调试的时候经常会遇到很多问题,比如:socket包中繁杂的二进制编码,socket数据如何进行截取,如何对socket数据包进行参数化等等,以下几点内 ...

  2. loadrunner java协议脚本要点

    常见问题 1. Error: Thread Context: Call to service of the driver failed, reason - thread context wasn't ...

  3. 远程执行shell脚本的小技巧

    很多时候需要批量跑脚本执行任务,但又不想分发再执行,而是直接一条命令下去就跑脚本,该怎么玩比较嗨? 例如以下脚本: #!/bin/bash echo "$@" echo " ...

  4. Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本

    脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...

  5. loadrunner之WebServices协议脚本编写(三种请求模式)

    以天气预报网站为例:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 一.web_service_call模式 步骤如下 ...

  6. Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写

    测试场景: 模拟并发100个user,在TesterHome 站内搜索VV00CC 添加线程组 添加HTTP信息头管理器 添加HTTP Sampler 填写HTTP Sampler中的信息 添加监听器 ...

  7. LoadRunner录制HTTPS协议脚本

    学习LoadRunner录制HTTPS协议脚本,其实是一个意外的收获.当我拿到要测试的URL时,我像以前的步骤一样录制脚本,但是录制结束后,发现并没有生成脚本,开始以为是LoadRunner的原因,我 ...

  8. 【LoadRunner】LR编写Dubbo协议脚本

    一.Dubbo服务简介 Dubbo是一个分布式服务架构,把核心业务抽取出来作为独立的服务,使前端应用能更快速和稳定的响应. Dubbo服务工作原理:服务提供方提供接口,并提供接口的实现,提供方注册服务 ...

  9. LoadRunner下载文件脚本

    LoadRunner下载文件脚本  在看普泽关于pezybase的测试报告的时候,发现里面有用到jmeter(http协议)并发测试下载文件,考虑到后面可能需要在公司pezybase的并发下载,把之前 ...

随机推荐

  1. CI 2.2 + smarty 3.1.18 完美整合配置成功

    CI 2.2 + smarty 3.1.18 配置成功 一.准备文档下载  (CI 框架和smarty) 二.将Smarty-3.1.18 源码包里面的libs文件夹copy到ci的项目目录appli ...

  2. 用python解析word文件(三):style

    太长了,我决定还是拆开三篇写.   (一)段落篇(paragraph) (二)表格篇(table) (三)样式篇(style)(本篇) 选你所需即可.下面开始正文. 在前两篇中,我们已经解析出了par ...

  3. 2.1 The Python Interpreter(python解释器)

    2.1 The Python Interpreter(Python解释器) Python是一门解释性语言.Python的解释器一次只能运行一个命令.标准的Python解释器环境可以用通过输入pytho ...

  4. yii在哪些情况下可以加载yiilite.php?

    yii权威指南上说,在开启apc缓存的情况下,可以加载yiilite.php提升性能.我有以下几点疑问: 1.开启apc缓存的情况下,引入yiilite.php能提升性能的原因是因为缓存了opcode ...

  5. HBase学习之路 (十)HBase表的设计原则

    建表高级属性 下面几个 shell 命令在 hbase 操作中可以起到很大的作用,且主要体现在建表的过程中,看 下面几个 create 属性 1. BLOOMFILTER 默认是 NONE 是否使用布 ...

  6. 多启动引导工具——AIO Boot

    该软件功能十分强大 官网介绍的也十分详尽 这里仅仅简单标记一下用来以后查找 https://www.aioboot.com/en/ 效果图: 支持多语言: 简单运用:

  7. ethers.js-1

    https://docs.ethers.io/ethers.js/html/ What is ethers.js The ethers.js library aims to be a complete ...

  8. 论mysql主从复制里面的那些坑

    1.找好配置文件,修改对的配置文件,有的时候会有多个配置文件,要搞清楚加载的哪个配置文件. 2.主库备份钱的操作除了设置 只读状态外,还要设置全局只读=1. 3.mysqldump备份sql很方便,恢 ...

  9. c++中内存拷贝函数(C++ memcpy)详解

    原型:void*memcpy(void*dest, const void*src,unsigned int count); 功能:由src所指内存区域复制count个字节到dest所指内存区域. 说明 ...

  10. JVM(一)Java内存模型

    前言 对于从事C.C++程序开发的开发人员来说,在开始使用对象之前,他们都需要使用new关键字为对象申请内存空间,在使用完对象之后,也需要使用delete关键字来释放对象占用的内存空间.对于Java程 ...