文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/正则表达式
所谓压力测试是指,经过肯定一个系统的瓶颈或者不能接收的性能点,来得到系统能提供的最大的服务级别的测试。通俗地讲,压力测试是为了发如今什么条件下您的应用程序的性能会变得不可接受。一般进行压力测试均是测试人员的工做,可是研发人员或多或少也须要对压力测试有个基本的了解。这里我跟你们一块儿学习如何使用两个经常使用工具进行压力测试,即badboy和Jmeter。数据库
Badboy是用C++开发的,被用于测试和开发复杂的动态应用。它提供了强大的屏幕录制和回放功能,同时也提供了丰富的图形结果分析功能。只要不用于商业目的就能够无偿使用。所以这两工具的结合,就成为了绝配。咱们能够用Badboy录制脚本,而后将录制的脚本导出为JMeter格式的脚本,最后将该脚本导入到JMeter,借助于JMeter强大的测试功能模拟大量的虚拟用户,进行复杂的性能测试。apache
其下载地址为:http://www.badboy.com.au。下载完后须要进行安装,安装过程同通常的Windows 应用程序没有什么区别,安装完成后你能够在桌面和Windows开始菜单中看到相应的快捷方式。若是找不到,能够找一下Badboy安装目录下的Badboy.exe文件,直接双击启动Badboy。最后开到的启动界面以下:浏览器
a.在地址栏(图中红色方框标注的部分)中输入你须要录制的Web应用的URL,这里咱们以http://www.baidu.com为例。服务器
b.点击“开始录制”按钮(图中蓝色圆圈标注的部分)开始录制 。微信
c.开始录制后,你能够直接在Badboy内嵌的浏览器(主界面的右侧)中对被测应用进行操做,全部的操做都会被记录在主界面左侧的编辑窗口中(图中黄色方框标注的部分)。在这个试验中,咱们在baidu的搜索引擎中输入 JMeter 进行搜索。不过录制下来的脚本并非一行行的代码,而是一个个Web对象——这有点像LoadRunner的VuGen中的Tree View视图。网络
d.录制完成后,点击工具栏中的“中止录制”按钮(图中紫色方框标注的部分),完成脚本的录制。并发
e.选择“File -> Export to JMeter”菜单,填写文件名“baidu.jmx”,将录制好脚本导出为JMeter脚本格式。也能够选择“File -> Save”菜单保存为Badboy脚本。工具
f.启动JMeter并打开刚刚生成的测试脚本,就能够用JMeter进行测试了。性能
Apache JMeter,是Apache组织开发的基于Java的针对功能和性能的测试工具。最初JMeter是为Web/HTTP测试而设计的,可是后来它已经扩展到支持各类各样的测试模块。JMeter能够用于测试静态或者动态资源的性能(如静态文件、Java服务程序、Servlet、CGI脚本、Perl脚本、Java对象、数据库和查询、FTP服务器或者其余资源)。JMeter能够用于模拟对服务器、网络或对象加以巨大的负载,在不一样压力类别下测试它们的强度,分析总体性能。另外,JMeter可以对应用程序作功能/回归测试,经过建立带有断言的脚原本验证你的程序返回了你指望的结果。为了最大限度的灵活性,JMeter容许使用正则表达式建立断言。同时它也提供了一个可替换的界面用来定制数据显示,测试的同步及测试的建立和执行。
其下载地址为: http://jakarta.apache.org。双击D:/JMeter/bin下的jmeter.bat或ApacheJMeter.jar便可开启运行。
a.测试计划(Test Plan)
是使用JMeter进行测试的起点,它是其它JMeter测试元件的容器。
b.线程组(Thread Group)
表明必定数量的并发用户,它能够用来模拟并发用户发送请求。
c.取样器(sampler)
定义实际的请求内容,被线程组包含,咱们主要用HTTP请求。
d.监听器(Listener)
负责收集测试结果,同时也被告知告终果显示的方式。咱们经常使用的包括:聚合报告、察看结果树、用表格查看结果,都支持将结果数据写入文件。其余的添加上去看看就行。
e.逻辑控制器(Logic Controller)
能够自定义JMeter发送请求的行为逻辑,它与Sampler结合使用能够模拟复杂的请求序列。
其分为循环控制器和事务控制器。
f.断言(Assertions)
能够用来判断请求响应的结果是否如用户所指望的。它能够用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是很是有用的。
g.配置元件(Config Element)
维护Sampler须要的配置信息,并根据实际的须要会修改请求的内容。咱们主要在参数化中用到CSV Data Set Config。
h.前置处理器(Pre Processors)和后置处理器(Post Processors)
负责在生成请求以前和以后完成工做。前置处理器经常用来修改请求的设置,后置处理器则经常用来处理响应的数据。咱们主要在动态关联中用到后置处理器的正则表达式提取器。
i.定时器(Timer)
负责定义请求之间的延迟间隔。
在前面咱们使用badboy进行了脚本录制,这里能够直接将其导入到Jmeter中。具体补步骤以下:
a.打开JMeter会有一个默认的测试计划,点击文件-打开,选中录制的脚本文件如:WebXSample_addUser.jmx,打开脚本进行测试。
b.在线程组上添加监听器-聚合报告(用于分析测试结果)后,点击运行-启动,开始测试,测试完毕后在聚合报告中就能够看到测试结果。一个简单的测试计划就完成了。
a.在测试计划中先添加一个线程组,而后在该线程组中加入http请求模块。能够在sampler中看到,Jmeter还能测试数据库链接查询压力,FTP链接压力等。
b.编写测试请求。
c.添加监听等。
d.设置线程并发量。
f.点击运行,查看运行结果,进行分析。
即300个并发量中,平均时间是17074毫秒,中间段发出的的请求耗时18891毫秒,末尾百分之90处发出的请求耗时25575毫秒。整个测试过程当中,最小耗时为2616毫秒,最大耗时为26911毫秒。
-----欢迎转载,但保留版权,请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/
若是您以为本文确实帮助了您,能够微信扫一扫,进行小额的打赏和鼓励,谢谢 ^_^