天天看點

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中了