7.Jmeter 快速入门教程--录制复杂web测试脚本
Jmeter的功能简单,不需要有脚本语言的编写经验,纯图形界面添加测试场景, 用起来上手很快。但是如果手动添加每一个web(http/https)请求,费时又费力。而且有可能最后手动编写的和实际发的请求有出入。
1。web性能测试以及web http请求基本原理。
再介绍录制jmeter脚本之前,我们先谈一下web性能测试。web就是调用http/https接口, 其实没有是什么复杂度可言。只是我们必须清楚,对于一个网站说,一个页面并通常不是只有一个http请求。如果需要测试一个rich web page,必须了解到这一点(测试http接口则简单的许多,只是单一的http接口请求)。
例如这样一个页面(下面是html代码)

如果向服务器请求上面的一个页面,则除了本身页面的请求本身,还有一个css和img的资源。这样打开这样一个页面,本需要有三个http请求。
1. http1 -> get the web page (首先获取你要访问的页面的html代码)
2. the web page contain two resources (假设该页面,有一个css资源和一个图片)
3. then request http2 and http3 to get the css file and image respecitively. (则会继续发起获取css和图片的请求)
所以这样就是发起了3个http请求,才完整的打开了一个页面。浏览器实际是这么做的,但浏览器作了很多优化。 (比如多线程[一般2-6个http connection,不同浏览器内核不同], http keep-alive,缓存图片,css等资源)。说道这里,不得不佩服loadrunner的强大。他可以尽量模拟浏览器的这些行为,来保证测试的结果准确性。但这些参数都可以动态调整的。(通常我们录制的富web页面, 也就是rich webpage, 通常需要使用事务控制器来辅助我们进行度量数据, 关于事务控制器请访问"jmeter如何使用事务控制器")
注意: 最新的jmeter-plugins 已经支持了webdriver sampler, 已经可以模拟浏览器的行为,更真实的模拟用户访问web的行为, 可以得到更真实的性能数据. 具体是否使用,还需要根据自己的测试场景进行判断. (作者目前并不建议盲目的使用, 需要慎重考虑. 原因: 用户体验方面的性能测试可以由其他工具完成, 而性能测试则专注于特定的问题 )
具体资料信息,请访问 http://jmeter-plugins.org/wiki/WebDriverSet/
2。实际录制脚本
好,那么我们现在就来实际录制脚本吧,并且体验一下真正一个页面的实际http请求过程。这里我们只谈http,https不在本文所讲范围内。
录制脚本目前有2种方法,我们先介绍jmeter proxy方法。另一个是badboy录制的脚本转化为jmeter脚本,直接想了解badboy,请直接访问
http://www.badboysoftware.biz/docs/jmeter.htm
jmeterproxy 来了。
1)启动jmeter,这个不多说了。
2)选择测试计划,右键添加线程组(thread group)
3)选择这个线程组,右键添加config element -〉 http默认请求

4)在http默认请求单元,填入server name 为jakarta.apache.org. 这个是我们要录制的页面。其他地方不填
5)然后选择刚才那个县城组,右键加入一个录制控制器。位于Add>Logic Controllers -> Recording Controller
6) 选择WorkBench,右键加入 Non-Test Elements -> Http proxy server
7)在http proxy server里, 的patterns to include 里,写入.*\.html 这个是正则表达式,意思是录制所有的html为后缀名的页面。 那么如果你要录制后缀名为jsp或者do的,则写入.*\.jsp 和 .*\.do 分别。
8)对于url patterns to excllude的地方,是写入不想被录制的一些资源文件url(往往我们根据后缀名来进行区分)。比如不想录制http发起获取图片的请求,就需要写上*\.jpg 或者 *\.png 。 这些是否配置,视测试的具体场景而定。比如是否要测试静态图片等。
9)为了调试录制的情况,我们选择http proxy server ,添加一个察看结果树监听器。这个以前我们曾经用过。

10)回到http proxy server然后,选择开始启动。这样proxy server 就启动了。
11)这样我们打开一个浏览器,将浏览器的代理设置为jmeter proxy server 的ip和端口号。 因为proxy server 就在本地,所以就写localhost 和端口即可。
12)设置好代理后,用浏览器访问http://jakarta.apache.org/jmeter/index.html
13)随便点击一些连接,然后回到jmeter 的窗口,你查看结果树就看到了录制的http请求了。

14)这样的脚本,我们稍做修改,就可以使用了。
7.Jmeter 快速入门教程--录制复杂web测试脚本的更多相关文章
- Jmeter 快速入门教程(二)--创建简单web测试
[版权所有: whoistester.com & jmeter.cf] http://wenku.baidu.com/linkurl=9zc4VHe6vUUeMdDZPpNsRehkazZFw ...
- 2.Jmeter 快速入门教程(二)--创建简单web测试 打印 E-mail
今天我们就来实际用Jmeter创建一个测试场景,并进行性能测试. 注:由于本人使用中文版本,使用英文版本的请注意具体的菜单及参数名称. 1. 添加线程组(相当于lr里的scenario 设置) 打开j ...
- Jmeter 快速入门教程(三-3) -- 使用参数化
参数化:简单的来理解一下,我们录制了一个脚本,这个脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进 ...
- Jmeter 快速入门教程(三-1) --添加响应断言(即loadrunner中所指的检查点)
[版权所有: whoistester.com & jmeter.cf] 上一节课,我们创建了一个测试场景,并进行了少量vuser的负载测试. 有时候我们执行了测试,但是发现并不是所有事务都执行 ...
- 1.Jmeter 快速入门教程(一) - 认识jmeter和google插件
Jmeter是免费开源的性能测试工具( 同时也可以用作功能测试,http协议debug工具 ). 在如今越来越注重知识产权的今天, 公司越来越不愿意冒着巨大的风险去使用盗版的商业性能测试工具. 但如 ...
- 8.Jmeter 快速入门教程 -- 如何使测试脚本更强大
添加基本的elements例如Sampler 或者一些监听器,就可以完成基本的测试.但有时需要更复杂的测试场景,所以还有更多其他的元素.清看下表,了解各种单元组的用途. 可添加的单元组 用途 Sa ...
- 11.Jmeter 快速入门教程 -- jmeter事务控制器
你肯定知道, jmeter是一个跨系统平台的性能测试工具, 比如他可以在linux,freebsd,windows,solaris 等等各种系统上可以运行. 我可以说, 事务 transaction ...
- 12.Jmeter 快速入门教程 -- 监控被测资源
写在前面的话, 作者认为jmeter的监控被测服务器资源只是基本可用, 还好习惯了linux的各种命令和工具,所以也基本不用担心什么了.但是有了图形化的监控, 也方便给领导出报告. 怎么说也是不错的. ...
- 10.Jmeter 快速入门教程 -- 用Jmeter测试你的EJB
有时候,需要对EJB进行性能基准测试,这对开发非常有帮助. 有很多种方法可以这么做, 当然我们这里介绍Apache's Jmeter 来进行实验测试. 非常不幸的是, Jmeter没有提供一个现成的测 ...
随机推荐
- USACO 5.4 章节
Canada Tour 题目大意 双向连通图,点从左向右排列, 你需要先从最左的点到最右的点,(过程中只能从左向右走) 然后再从最右的点返回最左的点,(过程中只能从右向左走) 过程中除了最左的点,其它 ...
- 正则表达式中(?:pattern)、(?=pattern)、(?!pattern)、(?<=pattern)和(?<!pattern)
(?:pattern) ()表示捕获分组,()会把每个分组里的匹配的值保存起来,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推 (?:)表示非捕获分组,和捕获分组唯一 ...
- 洛谷 P1197 [JSOI2008]星球大战——并查集
先上一波题目 https://www.luogu.org/problem/P1197 很明显删除的操作并不好处理 那么我们可以考虑把删边变成加边 只需要一波时间倒流就可以解决拉 储存删边顺序倒过来加边 ...
- [JSOI2016]无界单词
题目 题意:求\(\rm border\)长度为\(0\)的\(n\)位\(0,1\)字符串个数,并求字典序第\(k\)小的那一个. 首先是计数,正向不是很好算,考虑正难则反:设\(f_i\)表示长度 ...
- BZOJ 1779. [Usaco2010 Hol]Cowwar 奶牛战争
传送门 考虑构建网络流模型 把一个流量看成一只奶牛的攻击过程,那么答案就是最大流 因为每只奶牛只能操作一波,所以构造分层图,一层相当于一步 第一层就是初始状态,从 $S$ 向所有 $J$ 奶牛连一条流 ...
- 50.Maximal Square(最大正方形)
Level Medium 题目描述: Given a 2D binary matrix filled with 0's and 1's, find the largest square conta ...
- Spring学习笔记(13)——aop原理及拦截器
原理 AOP(Aspect Oriented Programming),也就是面向方面编程的技术.AOP基于IoC基础,是对OOP的有益补充. AOP将应用系统分为两部分,核心业务逻辑(Core bu ...
- 【学习总结】Python-3-逻辑运算符
参考:菜鸟教程-Python3运算符 逻辑运算符的计算规则划重点: 并不是只返回布尔型,有时会返回变量的数值 (优先级:not>and>or) 总结: '与或非'三件套中,not与数学逻辑 ...
- windows下如何使用Git上传代码
首先,在使用Git的同时,我们需要拥有码云账号,在官网注册即可(官网:https://gitee.com/). 注册结束后创建一个代码仓库,最好和要上传的文件夹名字一样: 1.首先在电脑上安装wind ...
- day01 html介绍 文档声明头 head标签 body标签
day01 html 初识html <!--文档的声明--> <!doctype html> <html lang="en"> # ...