天天看点

Jmeter压力测试

jmeter压力测试

1.     jmeter 简介

一个非常优秀的开源的性能测试工具。

  优点:你用着用着就会发现它的重多优点,当然不足点也会呈现出来。

从性能工具的原理划分:

jmeter工具和其他性能工具在原理上完全一致,工具包含4个部分:

  (1)负载发生器:用于产生负载,通常以多线程或是多进程的方式模拟用户行为。

  (2)用户运行器:通常是一个脚本运行引擎,用户运行器附加在线程或进程上,根据脚本要求模拟指定的用户行为。

  (3)资源生成器:用于生成测试过程中服务器、负载机的资源数据。

  (4)报表生成器:根据测试中霍地的数据生成报表,提供可视化的数据显示方式。

2.     安装jmeter

jmeter 是java程序,在linux windows mac系统都可以安装,配置好jdk环境就好

https://jmeter.apache.org/download_jmeter.cgi

Jmeter压力测试

双击启动

Jmeter压力测试

支持中文,不需要汉化。选项中直接选择中文简体。

Jmeter压力测试

3.     测试步骤

1. 写脚本 或者录制脚本

2. 使用用户自定义参数

3. 场景设计

4. 使用控制器,来控制 模拟多少用户。

5. 使用监听器, 查看测试结果

3.1.     测试脚本

Jmeter压力测试

3.2.     配置

接口:

http://api.erp.zhaonongzi.com/apicenter/login.wn?loginform=%7b%22device_code%22%3a%22863952037843214%22%2c%22mobile%22%3a%2215991608593%22%2c%22password%22%3a%2204dcf2e8981bf2ba0f35fb8ea4a18396%22%2c%22rs%22%3a1524037195%7d

Jmeter压力测试
Jmeter压力测试
Jmeter压力测试

3.3.     查看结果

Jmeter压力测试
Jmeter压力测试
Jmeter压力测试
Jmeter压力测试

3.4.    参数和结果说明

number of threads(users):     一个用户占一个线程,  200个线程就是模拟200个用户

ramp-up period(in seconds):   设置线程需要多长时间全部启动。如果线程数为200 ,准备时长为10 ,那么需要1秒钟启动20个线程。也就是每秒钟启动20个线程。

loop count: 每个线程发送请求的次数。如果线程数为200 ,循环次数为10 ,那么每个线程发送10次请求。总请求数为200*10=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。

ramp-up period(in seconds)

【1】决定多长时间启动所有线程。如果使用10个线程,ramp-up period是100秒,那么jmeter用100秒使所有10个线程启动并运行。每个线程会在上一个线程启动后10秒(100/10)启动。ramp-up需要要充足长以避免在启动测试时有一个太大的工作负载,并且要充足小以至于最后一个线程在第一个完成前启动。  一般设置ramp-up=线程数启动,并上下调整到所需的。

【2】用于告知jmeter 要在多长时间内建立全部的线程。默认值是0。如果未指定ramp-up period ,也就是说ramp-up period 为零, jmeter 将立即建立所有线程。假设ramp-up period 设置成t 秒, 全部线程数设置成n个, jmeter 将每隔t/n秒建立一个线程。

【3】ramp-up period(in-seconds)代表隔多长时间执行,0代表同时并发

samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100

average:平均响应时间——默认情况下是单个 request 的平均响应时间,当使用了 transaction controller 时,也可以以transaction 为单位显示平均响应时间

median:中位数,也就是 50% 用户的响应时间

90% line:90% 用户的响应时间

note:关于 50% 和 90% 并发用户数的含义,

min:最小响应时间

max:最大响应时间

error%:本次测试中出现错误的请求的数量/请求的总数

throughput:吞吐量——默认情况下表示每秒完成的请求数(request per second),当使用了 transaction controller 时,也可以表示类似 loadrunner 的 transaction per second 数

kb/sec:每秒从服务器端接收到的数据量,相当于loadrunner中的throughput/sec

Jmeter压力测试

4.     压力测试样例

http://api.erp.zhaonongzi.com/apicenter/login.wn?loginform={%22device_code%22%3a%22863952037843214%22%2c%22mobile%22%3a%2215991608593%22%2c%22password%22%3a%2204dcf2e8981bf2ba0f35fb8ea4a18396%22%2c%22rs%22%3a1524037195}

100 10 10

server cpu 170%

db cpu 40%

100 10 50

150 10 10

200 10 10

server cpu 200%

500 10 10

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="x-ua-compatible" content="ie=edge"><title>oops, you've found a dead link. - jira</title><script type="text/javascript">contextpath = "";</script><link type='text/css' rel='stylesheet' href='/static-assets/metal-all.css' media='all'><script src='/static-assets/metal-all.js'></script><!--[if lt ie 9]><link type='text/css' rel='stylesheet' href='/static-assets/metal-all-ie.css' media='all'><script src='/static-assets/metal-all-ie.js'></script><![endif]--><!--[if ie 9]><link type='text/css' rel='stylesheet' href='/static-assets/metal-all-ie9.css' media='all'><![endif]--><meta name="decorator" content="none" /></head><body class=" error-page error404"><script type="text/javascript">document.body.classname += " js-enabled";</script><div id="page"><header id="header" role="banner"></header><!-- #header --><section id="content" role="main"><div class="aui-page-panel"><div class="aui-page-panel-inner"><section class="aui-page-panel-content lowercontent"><div id="error-state"><span class="error-type"></span><h1>oops, you've found a dead link.</h1><ul><li>返回 <a href="javascript:window.history.back()">上一页</a></li><li>跳转到 <a href="/secure/myjirahome.jspa">主页</a></li></ul></div></section><!-- .aui-page-panel-content --></div><!-- .aui-page-panel-inner --></div><!-- .aui-page-panel --></section><!-- #content --><footer id="footer" role="contentinfo"><section class="footer-body">

5.    参数接口测试

我所测试的就是带参数的接口,只不过拼接到url中了