对于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. 如何从Microsoft web platform installer取得离线安装包

    有一架visual studio 2012的开发环境A由于某种原因无法链接internet, 于是乎安装officetoolsforvisual2012就有问题了. 从微软的官网上只可以下载 offi ...

  2. December 04th 2016 Week 50th Sunday

    Learn wisdom by the follies of others. 前车之鉴,后人之师. Maybe my personal state is that others can learn w ...

  3. libcurl同时下载多个文件

    #include <errno.h> #include <stdlib.h> #include <string.h> #ifndef WIN32 #include ...

  4. Django之模板配置(template)

    Django模板系统 官方文档 jinja2模块中文 jinja2模块官方 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 在Djan ...

  5. JNLP应用程序无法打开的解决办法

    JNLP应用程序无法打开: 1.控制面板-Java-Java 选项卡-查看.用户选项卡勾选对应版本JDK(没有就添加,路径填类似:D:\Program Files\Java\jre6\bin\java ...

  6. swift的类型系统及类型(内存)信息获取:接口、编译运行时、反射、内存布局

    swift是静态语言,没有在运行时保存类型的结构信息(isa.class). 一.self.Self.Type.typeof extension Collection where Self.Eleme ...

  7. Redis的Pub/Sub客户端实现

    前言   在学习T-io框架,从写一个Redis客户端开始一文中,已经简单介绍了Redis客户端的实现思路,并且基础架构已经搭建完成,只不过支持的命令不全,不过后期在加命令就会很简单了.本篇就要实现P ...

  8. C++——命名空间

    C++命名空间基本常识 所谓namespace,是指标识符的各种可见范围.C++标准程序库中的所有标识符都被定义于一个名为std的namespace中. 一 :<iostream>和< ...

  9. 命令行编译执行java

    命令行编译运行java程序 使用命令 javac进行编译 和 java进行执行. javac 后面跟着的是java文件的文件名,例如 HelloWorld.java. 该命令用于将 java 源文件编 ...

  10. 使用JS获取上一页的url地址

    一般来说每个页面上面都有一个返回按钮,用来返回上一页,代码如下: <a href="javascript:history.go(-1)" class="jsBack ...