51Testing软件测试论坛

标题: 如何使用Jmeter对HTTP接口进行压力测试? [打印本页]

作者: lsekfe    时间: 2022-2-23 10:27
标题: 如何使用Jmeter对HTTP接口进行压力测试?
我们不应该仅仅局限于某一种工具,性能测试能使用的工具非常多,选择适合的就是最好的。笔者已经使用Loadrunner进行多年的项目性能测试实战经验,也算略有小成,任何性能测试(如压力测试、负载测试、疲劳强度测试等)都可以使用该工具。但我并不鼓励这样做,我们应该根据当前所处的情况,基于被测对象、时间及成本考虑,采用最合适的工具。闲话少谈,今天笔者要给大家分享的是用Jemeter来进行HTTP接口的压力测试。实际接口测试还可以使用Tsung、SoapUI等工具,但基于各方面考虑,最终采用了Jemeter。
  Jemeter相对于Loadrunner来说,更轻,易于安装,如果对过程数据收集不多、测试场景不复杂的情况下,可以优先考虑。笔者的使用的工具版本为Apache JMeter3.0,如果你们使用的是其它版本,可以与该版本界面有一定出入。
  下面就说说使用Jemeter进行HTTP接口压力测试的具体使用步骤:
  1、首先添加一线程组(即用户组:一个线程模拟一个用户行为,如果要模拟多个用户,则通过设置多线程来实现)
[attach]136558[/attach]
2、因为是对HTTP接口进行压力测试,所以需要在线程组下添加一HTTP请求(通过鼠标右键->添加->Sampler->HTTP请求 完成)
[attach]136559[/attach]
3、紧接着就是对HTTP请求进行设置了,主要设置服务器名称或IP,端口号,连接、响应时间,所采用的协议,请求类型,内容编码,路径,最后设置请求内容。
  注意,路径为URL除去如http://XXX.XX.X后的内容,如URL为http://www.51ste.com/share/index.php,则服务器名称或IP应该填写http://www.51ste.com,端口默认80,路径应该填写“/share/index.php”
[attach]136560[/attach]
4、因为这里的请求内容使用的是json字符串,所以需要在头部进行声明,否则请求就要报错。所以需要给HTTP请求添加一信息头(通过鼠标右键->添加->配置元件->HTTP信息头管理器 完成)
[attach]136561[/attach]
5、配置HTTP头信息,添加对应名称和值,这里添加“Content-Type”,值为“application/json;charset=utf-8”;如果头还需要添加其它信息,如id、token等,也应如此进行配置
[attach]136562[/attach]
6、到这一步看起来就可以了,但是我们执行时并不能看到执行结果。所以还应该为该请求添加一结果监听器“查看结果树”(通过鼠标右键->添加->监听器->查看结果树完成)
[attach]136563[/attach]
按照上面步骤,可以依次添加“聚合报告”(总体线程执行结果统计),图形结果(总体线程执行结果统计图),“用表格察看结果”(每个线程执行的表格统计情况)等。
  PS(如果在进行非接口测试,如页面测试过程中发现错误,可能是少了COOKIE信息,所以可以为线程组添加一个Cookie头,可以通过鼠标右键->配置元件->HTTP Cookie管理器 完成)
  7、如果HTTP请求没有问题,那么我们要进行性能测试,那就需要设置一个断言(即Loadrunner中的检查点),即只要检查到指定的返回值(如返回结果包含字符“success”)则说明执行成功。添加断言通过右键请求->添加->断言->响应断言 完成。
[attach]136564[/attach]
设置响应断言:
[attach]136565[/attach]
 OK,到了这里,我们的脚本工作完成的八九不离十了,但是我们做性能测试,为了使测试结果更加准确,同时避免单点限制等原因,还应该对请求的值进行参数化。
  8、参数化,这里主要将通过CSV文件进行的参数化。
  1)首先我们新建一个CSV文件,然后录入我们要参数化的信息。
  我们也可以新建一个记事本,然后输入参数化的内容信息,多个参数值间以英文逗号隔开,回车换行如:
  Username1,password1
  Username2,password2
  点击保存,然后把记事本的文件名改为test.csv,注意这里的csv是文件扩展名。
  2)在HTTP请求新建一个CSV Data Set Config元件(通过鼠标右键->添加->配置元件->CSV Data Set Config 完成)
  3)配置CSV Data Set Config元件,这里主要需要指明参数化取值文件路径(即前面我们新建的CSV文件),参数名(如上面CSV文件中主要有两个参数值,我们可以分别用username和passwd作为参数名,参数名类似程序中定义的变量名)
[attach]136566[/attach]
 4)对要参数化的值进行参数化。即用${参数名}来替换要参数化的值。
[attach]136567[/attach]
 9、通过上面步骤,就完成了参数化脚本的设置。现在要执行,那么首先来配置线程组,主要包括线程数,启用时间,循环次数。我们可以尝试设置不同的线程数,重复次数,来进行接口的压力测试了。
[attach]136568[/attach]
10、最后我们就可以点击上面的绿色执行按钮来执行测试了。当然在执行过程中,为了后面更好的分析测试,可以借助其它工具(linux如nmon)对服务器的资源使用情况、网络情况,以及程序运行情况进行结果收集,最后对压力瓶颈进行准确的定位。
[attach]136569[/attach]




作者: 565853625    时间: 2022-8-10 11:47
感谢分享
作者: 风潇潇兮    时间: 2022-8-20 23:28
写的好详细 好多;




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2