用JMeter可以对Http请求进行Performance Test,来分析哪些方法花费的时间多,哪些方法花费的时间少,有了这样的分析结果后,我们就可以集中力量来改进费时的方法。

官方文档请参考如下链接:

http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf

关于Jmeter的更多问题与解决方案,依然可以参考如下链接:

http://www.technix.in/jmeter-problems-and-solutions/

安装和运行JMeter需要配置Java环境,这里省略具体步骤~~

1):双击jmeter.bat来运行此程序后,如下图创建一个WorkBench

2):保持基本的设置不变,可以看到我们采用8080这个端口来监听HTTP的请求,在截图的最下方有个Start按钮,开启之后可以监听由此代理的HTTP请求

3):接上一步骤可以将我们的FireFox浏览器设置由本地的8080端口进行代理,那么当上图Start之后,由FireFox所发出HTTP请求将会被JMeter录制下来

4):根据下面的截图添加一个Thread Group

5):可以对Thread Group的属性进行设置,模拟多个用户进行HTTP请求

6):如下图所示,添加View Results in Table 和 View Results Tree 可以对运行结果进行分析,当然了还可以添加其他的控件进行更加直观的比较结果

7):点击第2步骤中的Start按钮,用浏览器对指定的web站点进行访问操作来录制整个过程中所有的HTTP请求,最终的结果如下所示(当然了我们删除了一些不必要的css,js等文件的加载过程),并且对所有post请求做以标识(在名字的后面添加-post),整个过程录制完毕后,WorkBench下的HTTP(s) Test Script Recorder就没有用了,我们可以直接删除掉,并且我们可以把FireFox中的代理设置回复默认状态,因为我们之后的HTTP请求的发送都是由JMeter所录制好的脚本来完成的,这也就是完全模拟了用户的操作过程,并且用多个线程去模拟多个用户。

8):在下面的截图中我们发现有些步骤(GET)是灰掉的,原因我们的POST请求中选择了'Follow Redirects'这个选项,那么JMeter会将后续的GET请求步骤合并到前面的POST请求中;这样的话会引出另外一个问题,就是此POST请求所记录的时间包含了POST请求本省以及接下来的GET请求所花费的时间之和,所以我们可以讲POST请求中的‘Follow Redirects’选项去掉,Enable对应的GET请求来更加准确的记录所有请求所花费的时间

9):上面的步骤操作完毕后,我们直接运行所录制好的脚本会发现,POST请求都失败,如下图所示

10):上图中出现错误的具体原因是在每一个POST请求中都有__RequestVerificationToken这个参数,这个参数的值在每次请求的时候都是不同的,实质上这就是一个Cookie

11):因此我们要像下图所示的样子添加一个HTTP Cookie Manager

12):在像下图所示的样子添加一个Regular Expression Extractor

13):填写对应的设置(<input name="__RequestVerificationToken" type="hidden" value="(.*?)" />)

14):然后将所有用到的地方都换成这个变量

15):在运行一遍,就可以发现测试都通过了

16):接下来我么继续完善,如下图所示添加User Define Variables组件

17):将我们所用到的可以共用的数据,以全局变量的形式添加到User Define Variables组件中,这样管理起来更加的方便规范

18):用变量替换所有的值

19):用.csv文件可以实现跟全局变量相同的功能,如下图所示.csv文件的具体内容,其中的第一行Header值表示的就是此变量的名字,可以用{!LPN}这种方式去访问

20):参考如下截图添加CSV Data Set Config组件

21):将.csv的文件名填写到filename中(当然了这里我们是把.csv与当前的.jmx放到了同一个目录下)

22):然后替换所有变量

23):最终的运行结果的解析

由于JMeter完全模拟了用户操作的流程,和用户在浏览器中操作的过程是一样的,所以可以用VS去attach对应的w3wp.exe进行去进行调试,去确定具体的问题。

。。。

用JMeter进行Performance Test的更多相关文章

  1. Jmeter API Performance Test

    笔者最近了解 Apache组织开发了基于Java的压力测试工具Apache JMeter.如有兴趣可自行搜索它的相关信息.笔者记录了一些使用方法,如有错误或遗漏,欢迎联系改正. 官方下载地址:http ...

  2. jmeter Best Practices

    性能测试最佳实践之JMeter 16. Best Practices 16.1 Always use latest version of JMeter The performance of JMete ...

  3. JSR223 PostProcessor VS BeanShell PostProcessor in JMeter

    I would recommend using JSR223 PostProcessor About performance: In JMeter's official user manual, Ab ...

  4. 3. Elements of a Test Plan

    https://jmeter.apache.org/usermanual/test_plan.html This section describes the different parts of a ...

  5. Jmeter Web 性能测试入门 (七):Performance 测试中踩过 Jmeter 的坑

    脚本运行的过程中,大量request抛error,但没有地方能够查看request是因为什么error的. 原因:Jmeter默认禁掉了运行过程中每个request的具体response信息收集,只保 ...

  6. JMeter学习-040-JMeter图形化 HTML 报表概要说明

    JMeter 3.0开始支持动态生成图形化 HTML dashboard报告,当前生成报告有一下两种方式: 1.脚本测试执行结束后,即生成HTML测试报告 2.通过之前生成的测试结果,生成HTML测试 ...

  7. Jenkins+Jmeter+Ant接口持续集成

    修改时间 修改内容 修改人 2016.5.22 创建 刘永志 2016.6.15 完成 刘永志 前言: 为什么要用Jmeter做接口测试: 当选择这套方案的时候,很多人会问,为什么选择Jmeter做C ...

  8. 我的套路(windows):Jenkins+Jmeter+Ant持续集成

    前期准备: 1.Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html 命令行输入:java -ver ...

  9. Jenkins+Jmeter+Ant 接口持续集成(转)

    来源:https://testerhome.com/topics/5186 为什么要用Jmeter做接口测试 当选择这套方案的时候,很多人会问,为什么选择Jmeter做Case管理?为什么不自己写框架 ...

随机推荐

  1. 【bzoj1059】 ZJOI2007—矩阵游戏

    http://www.lydsy.com/JudgeOnline/problem.php?id=1059 (题目链接) 题意 一个01矩阵,可以任意交换两行或两列,问能否经过若干次交换后使主对角线全为 ...

  2. node 常用命令

    nvm nvm list  列出安装的node npm install -g cnpm --registry=https://registry.npm.taobao.org  安装cnpm npm i ...

  3. 菜鸟的Python学习之路(流水账)

    揭开Python的面纱 开始是因为别人说Python简单才开始学的,然后那段时间刚考完研,也没什么事,就多少瞅了瞅,然后发现语法的确简单很多,或者说简洁更合适. 当时看的是简明Python教程,没用多 ...

  4. C#把DataTable中数据一次插入数据库的方法

    现在实际的情况是这样的: 客户有一台打卡机,员工打卡的信息全部储存在打卡机的Access数据库里面,现在客户引入了一种新的管理系统,需要将Access数据库中的打卡数据同步到SQL Server数据库 ...

  5. Linux 下EXT2文件系统 —— 如何将蚂蚁和大象优雅的装进冰箱里

    这一阵子真是偷懒,无时无刻不和自己身体中的懒癌做斗争.最终我还是被打败了,星期天两天几乎都是荒废过去的,在空闲的时候实际上我内心也是有点焦虑的,不知道去怎么度过这时间.学习吧又不想学习,看电视娱乐吧也 ...

  6. js字符串方法

    字符串方法根据下标返回字符:str.charAt()//传入一个下标返回字符str.charCodeAt();// 传入一个下标获取编码String.formCharCode();//接受编码,编码转 ...

  7. Git 学习笔记参考

    1.参考学习资料 网上资料: http://www.cnblogs.com/aoguren/p/4189086.html http://www.liaoxuefeng.com/wiki/0013739 ...

  8. 去掉你代码里的 document.write("<script...

    在传统的浏览器中,同步的 script 标签是会阻塞 HTML 解析器的,无论是内联的还是外链的,比如: <script src="a.js"></script& ...

  9. 代理模式及jdk动态代理原理

    代理模式 :为其它对象提供代理,以控制对这个对象的访问. 代理模式的特征:代理类(proxyClass)与委托类(realClass)有同样的接口,代理类主要负责为委托类预处理消息.过滤消息.把消息转 ...

  10. PropertiesFactoryBean PropertyPlaceholderConfigurer 区别

    正如 stackoverflow上说的,PropertiesFactoryBean 是PropertiesLoaderSupport 直接的实现类, 专门用来管理properties文件的工厂bean ...