压力测试工具Apache JMeter:5:使用HTTP请求进行Web应用测试

编程入门 行业动态 更新时间:2024-10-25 02:23:38

压力<a href=https://www.elefans.com/category/jswz/34/1767317.html style=测试工具Apache JMeter:5:使用HTTP请求进行Web应用测试"/>

压力测试工具Apache JMeter:5:使用HTTP请求进行Web应用测试


Apache JMeter是一个纯Java开发的用于负载测试或者性能测试的开源软件。JMeter起初就是被设计用来进行Web应用的压力测试,这篇文章通过使用Docker拉起一个Nginx容器,然后对其进行压测这样一个即为简单的例子来介绍一下使用JMeter进行压力测试的流程和方法。

环境准备

关于Apache JMeter的概要介绍与安装的方法,可参看如下内容:

压力测试应用准备

在本地机器的8088端口使用Docker启动一个Nginx应用(使用其他方式也可),示例如下所示:

liumiaocn:~ liumiao$ docker images |grep nginx |grep latest
nginx                                           latest                          e445ab08b2be        2 months ago        126MB
liumiaocn:~ liumiao$ docker run -p 8088:80 -d --name=nginx-test nginx:latest
a80fb1a4fc20627891a6bd7394fd79ae9aefb7dc8cf72c12967bc2673a815308
liumiaocn:~ liumiao$ 

使用curl命令或者直接使用浏览器确认nginx已正常运行

liumiaocn:~ liumiao$ curl http://localhost:8088/
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="/">nginx</a>.<br/>
Commercial support is available at
<a href="/">nginx</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
liumiaocn:~ liumiao$

使用如下步骤准备测试验证的前提准备:

  • 步骤1: 在测试计划下添加一个线程组,选择菜单信息如下图所示:

  • 步骤2: 在刚刚创建的线程组上添加一个HTTP请求的取样器,选择菜单信息如下图所示:

  • 步骤3: 添加一个聚合报告,选择菜单信息如下图所示:

  • 步骤4: 保存测试计划
    点击保存测试计划按钮将结果保存为/tmp/nginx-test.jmx

  • 步骤5: 在聚合报告页面设定jtl文件
    在聚合报告页面设定写入和jtl文件路径为:/tmp/nginx-test.jtl

HTTP测试

进行一次HTTP GET的成功测试,通过JMeter的HTTP取样器执行一次GET http://localhost:8088/

测试设定

HTTP请求设定如下信息,建立与nginx服务之间的关联,在本例中设定内容如下所示

设定项设定内容
协议http
服务器名称或者iplocalhost
端口号8088
HTT请求/方法GET
HTTP请求/路径/

详细设定如下图所示:

线程组设定

保持线程组信息为缺省设定即可,设定内容如下所示:

设定项设定值
线程数1
循环次数1

执行&聚合报告

点击绿色的启动按钮开始执行,然后点击聚合报告可以看聚合报告如下所示:

从nginx-test.jtl文件中也可以看到结果的详细信息,可以看到返回的结果200码,以及success字段的true的结果信息,说明这是一次成功的执行,另外在聚合报告中的异常%的结果是0也可以看出这一点。

liumiaocn:tmp liumiao$ cat nginx-test.jtl
timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect
1569663931702,5,HTTP请求,200,OK,线程组 1-1,text,true,,850,118,1,1,http://localhost:8088/,5,0,3
liumiaocn:tmp liumiao$

接下来故意修改一下HTTP请求的端口号,改成错误的本地没有HTTP服务的端口号,比如8089,设定示例如下所示:

点击绿色的启动按钮开始执行,会提示一个Warning,因为在测试中修改设定,是否还是一个压力测试是需要使用者自己判断的,这里为了演示选择“添加到现有文件”

然后点击聚合报告可以看聚合报告如下所示:

从nginx-test.jtl文件中也可以看到结果的详细信息,Connection refused的错误信息,以及success字段的false的结果信息,说明这是一次失败的执行,另外在聚合报告中的异常%的结果也变成了50%(共计两次取样测试,上一次执行的结果成功,所以异常为50%)也可以看出这一点。

liumiaocn:tmp liumiao$ cat nginx-test.jtl
timeStamp,elapsed,label,responseCode,responseMessage,threadName,dataType,success,failureMessage,bytes,sentBytes,grpThreads,allThreads,URL,Latency,IdleTime,Connect
1569663931702,5,HTTP请求,200,OK,线程组 1-1,text,true,,850,118,1,1,http://localhost:8088/,5,0,3
1569664469242,2,HTTP请求,Non HTTP response code: org.apache.http.conn.HttpHostConnectException,"Non HTTP response message: Connect to localhost:8089 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused)",线程组 1-1,text,false,,2673,0,1,1,http://localhost:8089/,0,0,2
liumiaocn:tmp liumiao$ 

测试报告

  • 使用如下命令生成测试报告

执行命令:bin/jmeter -g /tmp/nginx-test.jtl -e -o /tmp/nginx-test-rpt-1 -j /tmp/nginx-rpt.log

  • 测试报告的概要信息如下所示:

重新将端口号修正为8080,保证HTTP测试能正确执行的基础之上,进行如下压力测试:并发用户数100、循环360次、持续时间180秒的内置HTTP请求验证

设定信息如下:

设定项设定值
线程数100
循环次数360
持续时间180s

点击绿色的启动按钮开始执行,会提示一个Warning,这里为了演示仍然选择“添加到现有文件”

然后点击聚合报告可以看聚合报告如下所示:

可以看到样本数量为36002,因为100线程组*360次循环 + 既存的两次测试结果,所以总计36002次压力测试样本,相较于前文中使用内置的Java请求,使用缺省的nginx设定的情况下,异常率已经上升至9.17%了。

测试报告

  • 使用如下命令生成测试报告

执行命令:bin/jmeter -g /tmp/nginx-test.jtl -e -o /tmp/nginx-test-rpt-2 -j /tmp/nginx-rpt.log

  • 测试报告的概要信息如下所示:

更多推荐

压力测试工具Apache JMeter:5:使用HTTP请求进行Web应用测试

本文发布于:2024-03-15 04:39:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1738120.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:测试工具   压力   测试   Web   JMeter

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!