jmeter壓力測試
1. jmeter 簡介
一個非常優秀的開源的性能測試工具。
優點:你用着用着就會發現它的重多優點,當然不足點也會呈現出來。
從性能工具的原理劃分:
jmeter工具和其他性能工具在原理上完全一緻,工具包含4個部分:
(1)負載發生器:用于産生負載,通常以多線程或是多程序的方式模拟使用者行為。
(2)使用者運作器:通常是一個腳本運作引擎,使用者運作器附加線上程或程序上,根據腳本要求模拟指定的使用者行為。
(3)資源生成器:用于生成測試過程中伺服器、負載機的資源資料。
(4)報表生成器:根據測試中霍地的資料生成報表,提供可視化的資料顯示方式。
2. 安裝jmeter
jmeter 是java程式,在linux windows mac系統都可以安裝,配置好jdk環境就好
https://jmeter.apache.org/download_jmeter.cgi
輕按兩下啟動
支援中文,不需要漢化。選項中直接選擇中文簡體。
3. 測試步驟
1. 寫腳本 或者錄制腳本
2. 使用使用者自定義參數
3. 場景設計
4. 使用控制器,來控制 模拟多少使用者。
5. 使用監聽器, 檢視測試結果
3.1. 測試腳本
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
3.3. 檢視結果
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
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&#39;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&#39;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中了