互聯(lián)網(wǎng)壓力性能Badboy.Jmeter

互聯(lián)網(wǎng)壓力性能Badboy.Jmeter
http://itopic.org/jmeter-http-tcp.html

使用JMeter錄制手機App腳本

1、 添加線程組? 選中“測試計劃”梦鉴,右鍵依次添加【線程組】聂喇,用于保存錄制的腳本。2、 添加HTTP代理服務(wù)器? 選中“工作臺”,右鍵依次添加【HTTP代理服務(wù)器】。? 配置HTTP代理服務(wù)器茅信,端口可以使用默認(rèn)8080,目標(biāo)控制器選擇“測試計劃>線程組”险胰。? 啟動HTTP代理服務(wù)器汹押,彈出“Root CA……”的提示框矿筝,點擊“確定”表示HTTP代理服務(wù)器開始工作起便。3、 配置手機網(wǎng)絡(luò)代理? 進入手機WIFI設(shè)置窖维,選擇一個WIFI榆综,長按WIFI名稱,在彈出的提示框中铸史,選擇“修改網(wǎng)絡(luò)”? 在修改網(wǎng)絡(luò)頁鼻疮,勾選【顯示高級選項】,填寫代理服務(wù)器主機名(JMeter軟件所在的主機IP地址)和代理服務(wù)器端口(添加HTTP代理服務(wù)器配置的端口琳轿,默認(rèn)8080)判沟,保存配置4、 查看JMeter錄制的手機App腳本[

](https://testerhome.com/uploads/photo/2017/2a131cd8-a9ac-4103-aa0b-932f26d71e19.png!large)
備注:本人不太喜歡用Jmeter的錄制功能崭篡,因為會錄制很多無效的網(wǎng)絡(luò)請求挪哄,但若不知道接口參數(shù)的情況下,可以采用錄制方式琉闪,然后刪除修改迹炼。
線程組的設(shè)置
普通線程組1、 線程數(shù):設(shè)置并發(fā)用戶線程數(shù)量,即通常意義的并發(fā)用戶數(shù)2斯入、 Ramp-Up Period (in seconds):設(shè)置并發(fā)用戶加載時間砂碉,假設(shè)并發(fā)用戶數(shù)設(shè)置為100,此處設(shè)置為10刻两,則認(rèn)為jmeter會在10s內(nèi)加載完成100并發(fā)用戶數(shù)增蹭,也就是說每隔10秒加載一個3、 循環(huán)次數(shù):輸入框與復(fù)選框只能選擇一種磅摹,不能同時被選擇為場景循環(huán)方式沪铭;輸入框輸入數(shù)字則被認(rèn)為是當(dāng)前線程組所控制的腳本區(qū)域的執(zhí)行次數(shù);【永遠】復(fù)選框選擇后偏瓤,輸入框內(nèi)的數(shù)字將失效杀怠,啟動后腳本將一直執(zhí)行下去。4厅克、 調(diào)度器:對于調(diào)度而言赔退,顧名思義就是我們想在什么時間開始運行,運行多長時間自動停止諸如此類的場景需求均可以在此設(shè)置证舟∷镀欤  ? 啟動時間:在設(shè)置時間點開始運行場景,比如你想在下班后開始運行女责,如果時間小于當(dāng)前時間漆枚,啟動后立即執(zhí)行,大于當(dāng)前時間抵知,啟動后等待本地時間到了自動運行  ? 結(jié)束時間:在設(shè)置時間點結(jié)束運行場景墙基,比如上班前結(jié)束運行,結(jié)束時間如果小于開始時間或者當(dāng)前時間刷喜,自動運行后立即終止  ? 持續(xù)時間:設(shè)置當(dāng)前場景持續(xù)運行的時間  ? 啟動延遲:設(shè)置場景啟動后多長時間再開始真正運行残制,比如你想在下班后5分鐘開始運行場景其中持續(xù)時間和啟動延遲的優(yōu)先級高于啟動時間和結(jié)束時間,也就是說當(dāng)你設(shè)置了持續(xù)時間或者啟動延遲掖疮,那么你的啟動時間或者結(jié)束時間將失效初茶,5、 幾種設(shè)置場景組合:  ? 不勾選【永遠】浊闪,選擇【調(diào)度器】恼布,設(shè)置完成后,啟動運行也只會運行當(dāng)前并發(fā)用戶數(shù)循環(huán)次數(shù)搁宾,運行完成即會結(jié)束折汞。所以此中選擇可用于希望未來某時間點開始運行完成并發(fā)用戶數(shù)循環(huán)次數(shù)的場景  ? 勾選【永遠】,設(shè)置啟動時間及結(jié)束時間猛铅,持續(xù)時間和啟動延遲均為空字支,可用于希望未來某時間點自動運行并且到未來某時間點自動結(jié)束的場景  ? 勾選【永遠】, 設(shè)置 持續(xù)時間和啟動延遲, 可用于希望在啟動多久后自動運行并持續(xù)多長時間的場景
另外介紹一個調(diào)試工具Debug Sampler堕伪,會把我們自定義的變量輸出在response data中揖庄,方便我們調(diào)試的時候使用,但在正式執(zhí)行腳本時需要刪除Debug Sample[

](https://testerhome.com/uploads/photo/2017/e1e8d832-6d0e-466b-9c3d-1eead591b061.png!large)
jp@gc - Stepping Thread Group
[

](https://testerhome.com/uploads/photo/2017/a59940a0-c7da-4bfd-8c76-8a4b72b9cb35.png!large)類似loadrunner的場景設(shè)置欠雌,解釋:? This Group will start 100 threads:這次的測試總共會起100個線程蹄梢。? First , wait for 0 seconds:等待0s后開始起線程,也就是不等待直接起線程富俄。? Then start 10 threads every 30 seconds:每起10個線程后會運行30s禁炒,再起余下的10個線程,再運行30s霍比,以此類推幕袱。? Using ramp-up 5 seconds:前面每起多少個線程的時候花5s,與上面結(jié)合起來即5s內(nèi)起10個線程悠瞬,運行30s们豌,然后再再5s內(nèi)再起10個線程,再運行30s浅妆,以此類推望迎。? Then hold load for 60 seconds. :全部的線程起來后,運行60s 后開始停止(跟loadrunner類似凌外,從jmeter聚合報告里面可以看出來辩尊,這里的hold load 的意思,其實是這些線程康辑,一直在請求摄欲,相當(dāng)于jmeter普通線程組里面的循環(huán)運行)。? Finally , stop 5 threads every 1 seconds:最后停止線程晾捏,5個線程停一次蒿涎,等1s再停5個線程(當(dāng)然哀托,第一次是hold時間一過就先停5個線程惦辛,然后等1s再停余下的5個線程)。
介紹幾個常用的邏輯控制器
JMeter中的Logic Controller分為兩類:a) 控制測試計劃執(zhí)行過程中節(jié)點的邏輯執(zhí)行順序仓手,如:循環(huán)控制器(Loop Controller)胖齐、if控制器(If Controller)等;b) 對測試計劃中的腳本進行分組嗽冒、方便JMeter統(tǒng)計執(zhí)行結(jié)果以及進行腳本的運行時控制等呀伙,如:吞吐量控制器(Throughput Controller)、事務(wù)控制器(Transaction Controller)添坊。一剿另、ForEach控制器(ForEach Controller)  作用:ForEach控制器一般和用戶自定義變量一起使用,其在用戶自定義變量中讀取一系列相關(guān)的變量。該控制器下的采樣器或控制器都會被執(zhí)行一次或多次雨女,每次讀取不同的變量值谚攒。二、包含控制器(Include Controller)  作用:用于引用外部的Jmx文件氛堕;從而控制多個測試計劃組合三馏臭、事務(wù)控制器(Transaction Controller)  作用: 事務(wù)控制器會生產(chǎn)一個額外的采樣器,用來統(tǒng)計該控制器子結(jié)點的所有時間讼稚。四括儒、僅一次控制器(Once Only Controller)  作用:在測試計劃執(zhí)行期間,該控制器下的子結(jié)點對每個線程只執(zhí)行一次锐想,登錄場景經(jīng)常會使用到這個控制器帮寻。五、吞吐量控制器(Throughput Controller)  作用:控制其下的子節(jié)點的執(zhí)行次數(shù)與負載比例分配赠摇,也有兩種方式:  Total Executions:設(shè)置運行次數(shù)  Percent Executions:設(shè)置運行比例(1~100之間规婆,不用寫%)  如:設(shè)置線程組循環(huán)5次,吞吐量控制器1:百分比40蝉稳,吞吐量控制器2:百分比60[

](https://testerhome.com/uploads/photo/2017/2345227d-9435-47c0-9680-efe544dae85b.png!large)
六抒蚜、If 控制器(If Controller)  作用:根據(jù)給定表達式的值決定是否執(zhí)行該節(jié)點下的子節(jié)點,默認(rèn)使用javascript的語法進行判斷[

](https://testerhome.com/uploads/photo/2017/88ecd8db-f685-4e9a-a7af-3c4d7b6fb711.png!large)
腳本參數(shù)化的幾種方式
一耘戚、使用Jmeter自帶函數(shù)獲取參數(shù)值  Jmeter中可以產(chǎn)生值的函數(shù)有:Random( , , )嗡髓,threadNum,CSVRead( , )收津,StringFromFile( , , , ) 。函數(shù)調(diào)用方法就不細說了撞秋,因為Jmeter中有函數(shù)助手[

](https://testerhome.com/uploads/photo/2017/74059e48-7c1e-4bf0-8920-3246b46bb669.png!large)  然后將函數(shù)復(fù)制到需要用到隨機數(shù)的地方,當(dāng)我們設(shè)置的線程數(shù)超過隨機數(shù)范圍時串结,隨機數(shù)將會重復(fù)生成舅列。
不過需要重點介紹下正則表達式的使用,后續(xù)有需要用到關(guān)聯(lián)測試把敞,因為在測試過程過有些數(shù)據(jù)是經(jīng)常發(fā)生變化的榨惠,要獲取并使用這些數(shù)據(jù)奋早,就要使用關(guān)聯(lián)盛霎。[

](https://testerhome.com/uploads/photo/2017/92824be3-63ec-488c-859a-7be8aabb4c7e.png!large)
1、 第一個參數(shù):用于解析服務(wù)器響應(yīng)數(shù)據(jù)的正則表達式耽装。它會找到所有的匹配項摩渺。如果測試人員希望將表達式中的某部分應(yīng)用在模板字符串中,記得加上圓括號剂邮。2摇幻、 第二個參數(shù):這是一個模板字符串,函數(shù)會動態(tài)填寫字符串的部分內(nèi)容挥萌。要在字符串中引用正則表達式捕獲的匹配組合绰姻,請使用語法:$[group_number]$。例如$1$或者 $2$引瀑。測試人員的模板可以是任何字符串3狂芋、 第三個參數(shù):第3個參數(shù)告訴JMeter使用第幾次匹配。測試人員的正則表達式可能會找到多個匹配項憨栽。對此帜矾,測試人員有4種選擇:? 整數(shù)屑柔,直接告訴JMeter使用第幾個匹配項掸宛。 “1”對應(yīng)第一個匹配唧瘾,“2”對應(yīng)第二個匹配饰序,以此類推? RAND求豫,告訴JMeter隨機選擇一個匹配項? ALL,告訴JMeter使用所有匹配項猾蒂,為每一個匹配項創(chuàng)建一個模板字符串,并將它們連接在一起? 浮點值0到1之間罩缴,根據(jù)公式(找到的總匹配數(shù)目*指定浮點值)計算使用第幾個匹配項,計算值向最近的整數(shù)取整4烙荷、 第四個參數(shù):如果在上一個參數(shù)中選擇了“ALL”终抽,那么這第4個參數(shù)會被插入到重復(fù)的模板值之間5昼伴、 第五個參數(shù):如果沒有找到匹配項返回的默認(rèn)值6圃郊、 第六個參數(shù):重用函數(shù)解析值的引用名持舆,參見上面內(nèi)容7逸寓、 第七個參數(shù):輸入變量名稱覆山。如果指定了這一參數(shù)汹买,那么該變量的值就會作為函數(shù)的輸入晦毙,而不再使用前面的采樣結(jié)果作為搜索對象
二见妒、使用CSV Data Set Config獲取參數(shù)值[

](https://testerhome.com/uploads/photo/2017/07956f7f-1acf-4e80-a6d7-aa20b674f7ea.png!large)
三须揣、使用用戶定義的變量獲取參數(shù)值[

](https://testerhome.com/uploads/photo/2017/d3747148-55e5-4ac2-8928-98fab49cef51.png!large)  一般配合ForEach控制器一起使用
參數(shù)值的傳遞
一耻卡、利用Cookie進行值的傳遞  用JMeter進行接口調(diào)試時卵酪,有時候會遇到需要登錄的情況,如請求wetest的DataSearchAjax接口:[

](https://testerhome.com/uploads/photo/2017/040fc1fd-a17e-411f-b566-493ac6d14e19.png!large)  出現(xiàn)這種情況的原因很明顯是未登錄引起的蜒简。一個較好的解決方法就是將登錄后的cookies保存下來搓茬,在訪問DataSearchAjax接口的時候卷仑,帶上用戶登錄后的cookies信息進行查看漱挎】牧拢  在JMeter中膊夹,我們可以通過如下途徑進行cookies的傳遞放刨,如下圖添加HTPP Cookie管理器:[

](https://testerhome.com/uploads/photo/2017/9133cdb9-ea5b-4d9a-b6cf-d14f14060e84.png!large)  再給登錄的接口添加前置處理器Bean Shell PreProcessor进统,用來保存登錄的cookies:[

](https://testerhome.com/uploads/photo/2017/29b96836-e878-4d5f-aed1-0741b168fdc3.png!large)  我們要在Bean Shell PreProcessor里面添加我們的cookies值了螟碎。二掉分、利用正則匹配提取上一個接口的返回數(shù)據(jù)作為下個請求的輸入  用JMeter進行接口調(diào)試時酥郭,經(jīng)常會遇到上一接口的返回值中的某個字段不从,要作為下一接口的輸入,這種情況下载弄,我們需要利用正則匹配來提取我們需要的值撵颊〕拢  例如妻熊,若要提取相應(yīng)數(shù)據(jù)中的userid字段作為下個接口的輸入的話扔役,可以在該接口請求后面添加正則表達式提取器:[

](https://testerhome.com/uploads/photo/2017/8af43d26-d2bb-418d-977a-cc7b1a819b98.png!large)  我們給正則表達式提取器命名為get_userid亿胸,并填寫引用名稱侈玄、正則表達式序仙、模板、匹配數(shù)值律秃、缺省值棒动,填寫后的如如下:[

](https://testerhome.com/uploads/photo/2017/c2055827-ae22-4656-a658-dbc979696876.png!large)
  填寫完成后迁客,在添加新的HTTP請求掷漱,來測試提取到的user_id字段:[

](https://testerhome.com/uploads/photo/2017/3be56d03-2e7e-4401-ba62-8bbf4339b314.png!large)
介紹幾個定時器的用法卜范,類于loadrunner中的thinktime海雪,集合點的設(shè)置
一、固定定時器(Constant Timer)[

](https://testerhome.com/uploads/photo/2017/2c8b307a-1aef-4566-8eec-a9cb009606c4.png!large)  這是一個很重要的定時器险掀,如果你需要讓每個線程在請求之前按相同的指定時間停頓樟氢,那么可以使用這個定時器埠啃;需要注意的是碴开,固定定時器的延時不會計入單個sampler的響應(yīng)時間潦牛,但會計入事務(wù)控制器的時間罢绽【仓眩  對于“java請求”這個sampler來說蒿叠,定時器相當(dāng)于loadrunner中的pacing(兩次迭代之間的間隔時間)市咽;  對于“事務(wù)控制器”來說,定時器相當(dāng)于loadrunner中的think time(思考時間:實際操作中溯革,模擬真實用戶在操作過程中的等待時間)致稀。二抖单、高斯隨機定時器(Gaussian Random Timer)[

](https://testerhome.com/uploads/photo/2017/0752d6c0-0ba5-4bed-a6c1-d98db575508e.png!large)  如果需要讓每個線程在請求之前按隨機的時間停頓耍休,那么可以使用這個定時器货矮,上圖表示暫停時間會分布在100到400之間三次屠、同步定時器(Synchronizing Timer)[

](https://testerhome.com/uploads/photo/2017/94dcf155-b39f-4ca8-8639-f5ab2673d5c3.png!large)  這個定時器和loadrunner當(dāng)中的集合點(rendezvous point)作用相似劫灶,其作用是:阻塞線程本昏,直到指定的線程數(shù)量到達后涌穆,再一起釋放雀久,可以瞬間產(chǎn)生很大的壓力(1)Number of Simulated Users to Group by:模擬用戶的數(shù)量赖捌,即指定同時釋放的線程數(shù)數(shù)量(2)Timeout in milliseconds:超時時間越庇,即超時多少毫秒后同時釋放指定的線程數(shù)
監(jiān)聽器配置
  將下載的JMeterPlugins.jar包復(fù)制到Jmeter的lib目錄下面的ext目錄下面,重新啟動Jmeter卤唉,我們點擊添加就可以看到出現(xiàn)了很多的jp@gc-開頭的文件。這里監(jiān)控內(nèi)存我們使用的是:jp@gc - PerfMon Metrics Collectot  在使用之前竭恬,我們需要下載ServerAgent-2.2.1痊硕,然后運行/serverAgent/startAgent.bat這個文件寿桨,我們需要將serverAgent目錄及下面的文件復(fù)制到我們測試的服務(wù)器上亭螟,然后點擊打開,它的默認(rèn)端口為4444墨微∏滔兀  常用的監(jiān)聽器還有如下jp@gc - Active Threads Over Time锈麸,jp@gc - Transactions per Second忘伞,jp@gc - Response Times Over Time氓奈,jp@gc - Composite Graph鼎天,保存響應(yīng)到文件斋射,聚合報告绩鸣,察看結(jié)果樹[

](https://testerhome.com/uploads/photo/2017/fcb834f1-6257-4c54-9992-95ac55cfd73a.png!large)其中jp@gc - Composite Graph可以將多個監(jiān)聽視圖進行合并分析
最后測試報告的生成
  使用jmeter進行性能測試呀闻,運行完畢后生成html格式的測試報告捡多,需要進行如下操作(3.0含及以上的版本):一、在jmeter.properties或者user.properties確認(rèn)如下配置項
? jmeter.save.saveservice.bytes = true? jmeter.save.saveservice.label = true? jmeter.save.saveservice.latency = true? jmeter.save.saveservice.response_code = true? jmeter.save.saveservice.response_message = true? jmeter.save.saveservice.successful = true? jmeter.save.saveservice.thread_counts = true? jmeter.save.saveservice.thread_name = true? jmeter.save.saveservice.time = true? jmeter.save.saveservice.timestamp_format = ms? jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss

o 如果希望在Errors報告中展示更詳細數(shù)據(jù)蒜焊,需要確保如下配置: jmeter.save.saveservice.assertion_results_failure_message = trueo 如果使用了事務(wù)控制器(Transaction Controller)泳梆,確認(rèn)Generate parent sample為未勾選狀態(tài)
運行jmeter程序优妙,在命令行輸入如下信息1)Windows系統(tǒng)輸入格式如下:jmeter.bat -n -t -l -e -o 實際輸入:C:\apache-jmeter-3.0\bin\jmeter.bat -n -t Movie.jmx -l movie.jtl -e -o test
2)Linux系統(tǒng)輸入格式如下:jmeter -n -t -l -e -o 實際輸入:/opt/apache-jmeter-3.0/bin/jmeter -n -t final-result.jmx -l final-result.jtl -e -o /opt/apache-jmeter-3.0/test
[

安裝必要插件jmeter-plugins(windows下)
下載插件管理器
http://www.jmeter-plugins.org/get/ 將下載所得的jar包放在{jmeter}/bin/lib/ext目錄下
打開GUI模式下的jmeter下載所需插件
選擇菜單欄中的“選項”套硼,選擇“Plugings Manager”邪意,如圖

這里寫圖片描述

選擇所需插件安裝
打開插件管理器后選擇Available Plugings雾鬼,勾選3 Basic Graph 以及Custom Thread Groups,點擊Apply Changes and Restart JMeter嚷兔,等待下載完成重啟JMeter即可。
這里寫圖片描述

安裝必要插件jmeter-plugins(Linux下)
查找并復(fù)制jar包
在windows的界面下竟块,安裝好插件后浪秘,根據(jù)上圖的Review Changes中的信息埠况,在{jmeter}/bin/lib/ext中找到新增jar包辕翰,復(fù)制到linux上喜命。
使用JMeter測試
GUI模式下測試接口
添加線程組
在GUI模式,打開JMeter矛紫。右鍵點擊“測試計劃”颊咬,選擇“添加”→“Threads(Users)”→“線程組”喳篇,如圖所示:
這里寫圖片描述

添加HTTP請求
線程組屬性不做修改杭隙,右鍵點擊新添加的“線程組”痰憎,選擇“添加”→“Sampler”→“HTTP請求”,如圖所示:
這里寫圖片描述

完成HTTP請求
根據(jù)請求信息洽沟,完成“HTTP請求”:修改名稱裆操;注意IP和端口號踪区,在路徑欄補齊除ip端口號的剩余路徑缎岗;Implementation使用httpClient4传泊;使用https的協(xié)議需要在協(xié)議欄填寫https鸭巴;選擇請求的方法鹃祖,多數(shù)為POST或這GET惯豆;若請求體中含有中文,最好在content encoding中填寫utf-8地熄;請求參數(shù)可以選擇Parameters或者Body Data端考,Parameters的參數(shù)更加直觀,Body Data的更加方便參數(shù)修改且參數(shù)以parameter1=value1&mmeter2=value2形式扶供。
添加查看結(jié)果數(shù)
右鍵點擊“HTTP請求”椿浓,選擇“添加”→“監(jiān)聽器”→“查看結(jié)果樹”扳碍,如圖所示:
這里寫圖片描述

添加證書文件
協(xié)議為Https的請求還需要加載證書笋敞,如果為https協(xié)議君旦,在沒有加載證書的情況下哀墓,進行了測試麸祷,最好保存測試計劃阶牍,然后重啟JMeter走孽,重啟后先加載證書磕瓷,再進行測試困食,否則翎承,報錯叨咖。選擇“選項”→“SSL管理器”啊胶,如圖所示:
這里寫圖片描述

選擇pkcs12的證書文件
使用pkcs12的證書文件,jks直接用是不行的聘惦,需要java打包下
啟動測試
點擊“啟動”按鈕,啟動測試黔漂,如圖所示
這里寫圖片描述

輸入pcks12的密碼
啟動測試后瘟仿,彈出“KeyStore Password”劳较,輸入pcks12生成時用的密碼观蜗。
這里寫圖片描述

測試后查看結(jié)果樹
測試結(jié)束后墓捻,點擊“查看結(jié)果樹”砖第,可以看到當(dāng)前測試運行了一個實例环凿,選中該結(jié)果智听,點擊“響應(yīng)數(shù)據(jù)”查看響應(yīng)的文本,檢查文本是否為正確的響應(yīng)數(shù)據(jù)考赛,JMeter會把所有響應(yīng)碼200的回復(fù)都當(dāng)成成功颜骤,一些服務(wù)例如查詢等复哆,可能會設(shè)置查詢失敗下返回提示語句但響應(yīng)碼依舊是200。此時需要查看響應(yīng)文本中正確響應(yīng)的關(guān)鍵詞唆阿,方便壓測時設(shè)置響應(yīng)斷言驯鳖。
GUI模式下創(chuàng)建壓力測試計劃
添加Concurrency Thread Group
可以新建一個測試計劃久免,也可以在原先接口測試的測試計劃上修改阎姥。本例直接修改原先的接口測試,右鍵“測試計劃”泽腮,選擇擇“添加”→“Threads(Users)”→“Concurrency Thread Group”诊赊,如圖所示:
這里寫圖片描述

設(shè)置Concurrency Thread Group
根據(jù)需求完成線程組的設(shè)置碧磅,需要填寫“Target Concurrency”鲸郊,為壓力測試預(yù)期的并發(fā)壓力(注意Jmeter采用線程模擬并發(fā)的策略货邓,大并發(fā)意味著大量線程逻恐,測試機性能會大量消耗复隆,甚至影響測試結(jié)果挽拂,所以需要大并發(fā)的情況下亏栈,建議采用分布式部署Jmeter進行測試);“Ramp Up Time”黎侈,為測試并發(fā)數(shù)啟動所需時間(注意測試并不是所有并發(fā)啟動后才運行闷游,在啟動過程中脐往,先啟動的線程會先運行請求);“Ramp Up Steps Counts”瘤礁,為是否將啟動線程分階段的啟動柜思,例如10即為分10次階段性的啟動一部分線程酝蜒,可以為空矾湃;“Hold Target Rate Time”邀跃,為并發(fā)達到要求后再運行多久時間拍屑;“Time Unit”,時間單位喷斋,非常重要星爪,有分和秒顽腾,不要選擇錯誤诺核。
這里寫圖片描述

添加Http請求
直接復(fù)制之前接口測試時的http請求,刪去查看結(jié)果樹即可裙士。
添加聚合報告
右鍵http請求幌甘,選擇“添加”→“監(jiān)聽器”→“聚合報告”锅风。如圖所示
這里寫圖片描述

聚合報告中保存測試數(shù)據(jù)
在聚合報告的“文件名”欄皱埠,填入./*****-${__time(yyyyMMdd-HHmmss,)}.jtl,表示在當(dāng)前目錄生成jtl(jmeter的數(shù)據(jù)文件格式)训枢,${__time(yyyyMMdd-HHmmss,)}為jmeter的時間函數(shù)恒界,生成測試的年月日分鐘秒十酣,方便后期管理測試數(shù)據(jù)际长。
這里寫圖片描述

添加響應(yīng)斷言
右鍵http請求工育,選擇“添加”→“斷言”→“響應(yīng)斷言”如绸,如圖所示:
這里寫圖片描述

配置響應(yīng)斷言
不同請求配置不同的斷言怔接。根據(jù)之前的接口測試,點擊添加,輸入判斷文本谎势,不同模式匹配規(guī)則,自行百度
這里寫圖片描述

保存測試計劃
刪除接口測試的線程組猖毫,點擊“文件”吁断,選擇“保存測試計劃為”仔役,保存測試計劃是己。壓測計劃創(chuàng)建完成卒废。注意3.1版本“保存測試計劃為”下面是“選中部分保存為”,舊版就是“保存為”逆皮,會保存選中的部分电谣,然后實際測試的時候因為測試計劃不完整是沒法跑測試的辰企,會報Error in NonGUIDriver java.lang.RuntimeException: Could not find the TestPlan class!况鸣,這雷舊版很容易踩上镐捧。
這里寫圖片描述

NO-GUI模式下啟動壓力測試
Windows下
打開cmd,目錄切換到測試計劃(jmx)所在的目錄懂酱,證書放在同一目錄下,輸入{jmeter}/bin/jmeter -Djavax.net.ssl.keyStore=****.pkcs12 -Djavax.net.ssl.keyStorePassword=**** -n -t *.jmx {jmeter}為jmeter的安裝目錄 -Djavax.net.ssl.keyStore=****.pkcs12 是證書文件 -Djavax.net.ssl.keyStorePassword=**** 是證書文件生成時的密碼 -n 為nogui模式 -t 后面為測試計劃文件(jmx)
linux下(推薦)
目錄切換到測試計劃(jmx)所在的目錄整陌,證書放在同一目錄下泌辫,輸入{jmeter}/bin/jmeter -Djavax.net.ssl.keyStore=****.pkcs12 -Djavax.net.ssl.keyStorePassword=**** -n -t *.jmx |tee -a *.out {jmeter}為jmeter的安裝目錄 -Djavax.net.ssl.keyStore=****.pkcs12 是證書文件 -Djavax.net.ssl.keyStorePassword=**** 是證書文件生成時的密碼 -n 為nogui模式 -t 后面為測試計劃文件(jmx) tee -a 參數(shù)后為文本文件震放,用于保存測試時輸出summarize數(shù)據(jù) 若是為http的殿遂,Djavax.net.ssl.keyStore=****.pkcs12 -Djavax.net.ssl.keyStorePassword=**** 直接省去
使用JMeter查看數(shù)據(jù)
在GUI模式下
選擇報表
打開Jmeter,右擊測試計劃幢竹,選擇“添加”→“監(jiān)聽器”→“聚合報告”妨退;“添加”→“監(jiān)聽器”→“Response Times Over Time”咬荷;“添加”→“監(jiān)聽器”→“Transactions per Second”(有其他圖表需要可以自行下載插件安裝)轻掩,如圖所示:
這里寫圖片描述

加載數(shù)據(jù)
選擇聚合報告唇牧,點擊文件名欄后的瀏覽丐重,選擇jtl文件,加載數(shù)據(jù)(其余監(jiān)聽器類似)臀蛛,如圖所示:
這里寫圖片描述

其他:
http會產(chǎn)生cookie的浊仆,需要刪除或者其他操作的抡柿,需要添加cookie管理器等恐。 默認(rèn)jtl數(shù)據(jù)不保存響應(yīng)文本,需要保存錯誤文件的信息闪檬,可以添加監(jiān)聽器中的保存響應(yīng)到文件粗悯,勾選Save Failed Responses only(不推薦有較多錯誤的情況去保存文本样傍,容易卡咨栏纭)襟锐。 Bin目錄下有個templates文件夾粮坞,里面有些JMeter用法的例子,可以看看互例。 NOGUI模式下可以使用jmeter -g result.jtl -o ./ResultReport生成一個html的報表(3.0版本以上)
[jmeter進行分布式測試]
一媳叨、背景:
之前在Jmeter插件監(jiān)控服務(wù)器性能一篇中說到糊秆,在非GUI環(huán)境中監(jiān)控時為了保存監(jiān)控數(shù)據(jù)需要修改jmeter腳本,并且每次通過施壓機(遠程服務(wù)器痘番,非GUI環(huán)境)來壓測時都要將jmeter腳本上傳然后在服務(wù)器上通過命令行啟動夫偶,測試完成后再把結(jié)果數(shù)據(jù)下載到本地GUI環(huán)境中查看觉增,總是有很多不方便。
本次壓測需求需要很大的并發(fā)量说铃,例如3000,但是單臺施壓機難以實現(xiàn)腻扇,因此希望多臺施壓機并行幼苛,并且我能同步控制它們。
在這樣的需求下經(jīng)過了解墙杯,jmeter工具本身有一個很強大的遠程啟動功能高镐,于是嘗試了一下嫉髓。

二邑闲、jmeter分布式原理

這個遠程啟動监憎,網(wǎng)上說的高大上一點,就是jmeter的分布式控制~ 具體控制如下圖:

客戶端機器作為一個控制器controller偷霉,控制多臺slave機器的操作类少。
controller通過GUI界面啟動slave機器硫狞,將jmeter壓測發(fā)送給每臺啟動的slave残吩,slave獲得腳本后開始執(zhí)行倘核。slave本地不需預(yù)先存儲腳本紧唱;
各臺slave執(zhí)行完成后隶校,將結(jié)果傳回給controller深胳,controller收集整合顯示舞终。

三权埠、jmeter遠程啟動配置
服務(wù)器(slave)配置
服務(wù)器(slave)需安裝jmeter煎谍,最好與客戶端(controller)保持同版本呐粘,jdk最好也保持同版本作岖,無法滿足時至少保證服務(wù)器上的jmeter能正常運行(如jmeter3.0以后需要jdk1.7及以上版本)痘儡。

在slave的%JMETER_HOME%bin目錄下執(zhí)行./jmeter-server命令啟動jmeter服務(wù)就可以枢步,啟動成功如下圖:

注意:上圖紅框中的ip為服務(wù)器的ip地址醉途,當(dāng)服務(wù)器有多網(wǎng)卡時它會隨機挑選一個網(wǎng)卡使用殴穴,紅框中的端口號port為啟動jmeter服務(wù)監(jiān)聽的port货葬,一般會有個默認(rèn)端口號1099震桶,但最好自定義,確保端口號不沖突尊残。修改方法在下文介紹。

客戶端(controller)配置
在客戶端上要保證執(zhí)行命令能發(fā)送到服務(wù)器顷扩,因此需配置客戶端遠程的ip地址和port隘截。在客戶端安裝目錄的bin文件夾下汹胃,找到j(luò)meter.properties着饥,修改配置如下圖,其中ip和port即為上一步slave的ip和port,如上圖中jmeter-server啟動時紅框中顯示的內(nèi)容呵哨。多個slave機器的配置可通過逗號分隔孟害。
remote_hosts=10.165.124.6:1029

配置完成后打開客戶端jmeter的GUI界面挪拟,在運行-遠程啟動中即可看到自己配置的slave機器玉组。

添加一個腳本,點擊遠程啟動即可啟動運行slave機器吨凑,此時在服務(wù)器上可看到控制臺信息,在客戶端通過監(jiān)聽器-聚合報告或察看結(jié)果數(shù)可看到執(zhí)行結(jié)果恩商。

四名眉、問題
slave機器的自定義端口號配置
在slave機器的%JMETER_HOME%bin目錄下找到j(luò)meter.properties,修改如下兩項配置福压,即可自定義端口號:
server_port=1029server.rmi.localport=1029

修改后執(zhí)行服務(wù)端的jmeter-server即可看到控制臺消息中修改是否生效荆姆;修改生效后需在客戶端修改相應(yīng)的jmeter.properties下的remote_hosts胆筒。

slave機器和客服端多網(wǎng)卡的問題
我在執(zhí)行過程中slave機器的jmeter-server.log和客戶端的jmeter.log中均報錯提示connect refused诈豌。經(jīng)過檢查后發(fā)現(xiàn)服務(wù)器上有2個網(wǎng)卡队询,客戶端有兩個網(wǎng)卡蚌斩,兩臺機器通過vpn在內(nèi)網(wǎng)環(huán)境通信送膳。而jmeter在遠程通信的時候是隨機選擇一個網(wǎng)卡的ip丑蛤,這樣很容易導(dǎo)致連接不成功受裹。
可通過如下配置指定服務(wù)器和客戶端的網(wǎng)卡,在服務(wù)器端的jmeter-server文件中厦章,修改配置指定服務(wù)器端的網(wǎng)卡ip
RMI_HOST_DEF=-Djava.rmi.server.hostname=10.165.124.6

在客戶端的jmeter.bat中修改配置指定客戶端的網(wǎng)卡ip
增加配置項:set rmi_host=-Djava.rmi.server.hostname=10.165.120.4修改配置項:set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %CLASS_UNLOAD% %DDRAW% %rmi_host%

在修改配置后嘗試遠程啟動袜啃,發(fā)現(xiàn)還是不成功群发,打開客戶端jmeter.log,發(fā)現(xiàn)客戶端發(fā)送成功熟妓;打開服務(wù)器端的jmeter-server.log顯示服務(wù)器連接客戶端不成功滑蚯,嘗試ping了一下也確實ping不通,然后網(wǎng)上搜了一下說是因為客戶端的防火墻阻止了坤次,關(guān)閉客戶端所有防火墻缰猴,再次執(zhí)行疤剑,測試成功隘膘。

依賴文件報錯的問題
當(dāng)jmeter腳本中需要依賴csv等數(shù)據(jù)文件時纵势,該文件需上傳至服務(wù)器牛曹,并需要設(shè)置正確的路徑鸳玩。
處理利用jmeter實施監(jiān)控壓測時受壓機的各項性能
操作步驟:
施壓機上的jmeter/lib/ext中放入下載的插件包 jmeter-plugins-perfmon-2.1.jar

受壓機上放入ServerAgent-2.2.1

運行受壓機上的ServerAgent

施壓機上:添加監(jiān)控:

添加參數(shù):
參數(shù)可自定義:
可設(shè)置:

運行case,可查看曲線結(jié)果

非GUI圖像操作:
由于非GUI圖像需要先存儲數(shù)據(jù)米诉,然后放到GUI圖形界面中查看或處理魏身,而在非GUI中運行jmeter的命令時未提供如何保存性能數(shù)據(jù)的方法家制,在此可通過shell腳本修改保存性能數(shù)據(jù)的路徑。腳本如下:其中filename為保存jemter壓測結(jié)果數(shù)據(jù)的文件名哪亿,serverFilename為保存jmeter壓測時相應(yīng)服務(wù)器性能數(shù)據(jù)的文件名。

!/bin/basharg1=$1arg2=$2arg3="Click"filename="result_"$arg3"$1$2.jtl"serverFilename="serverInfo_"$arg3"$1$2.jtl"echo $arg1 echo $arg2echo $serverFilenamesed -i -e 's|<stringProp name="ThreadGroup.num_threads">.|<stringProp name="ThreadGroup.num_threads">'"$arg1"'</stringProp>|' captchaClick.jmxsed -i -e 's|<stringProp name="filename">.|<stringProp name="filename">'"$serverFilename"'</stringProp>|' captchaClick.jmx../../bin/jmeter -n -t ./captchaClick.jmx -l ./$filename

問題:
受壓機上的ServerAgent的執(zhí)行腳本直接關(guān)閉時無法正常關(guān)閉埋涧,需通過kill -9命令殺掉進程醇坝。
##################################################################
http://www.s-uu.com/index.php/2017/05/23/230/
https://www.iyunv.com/thread-385799-1-1.html

##########################################################
1、求和
cat data|awk '{sum+=$1} END {print "Sum = ", sum}'

2、求平均
cat data|awk '{sum+=$1} END {print "Average = ", sum/NR}'

3淫僻、求最大值
cat data|awk 'BEGIN {max = 0} {if ($1>max) max=$1 fi} END {print "Max=", max}'

4细办、求最小值(min的初始值設(shè)置一個超大數(shù)即可)
awk 'BEGIN {min = 1999999} {if ($1<min) min=$1 fi} END {print "Min=", min}'

5钓觉、求訪問次數(shù)的Top 10 Resource,可以根據(jù)此進行優(yōu)化
cat output/logs/cookie_logs/date +%u/cookie_log|grep -v '172.16'|grep -v '127.0.0.1' |awk -F' ' '{ if(index($1,"219.141.246")!=0) print $2; else print $1 } '|sort|uniq -c|sort -n |tail -n 10
QPS:每秒查詢率(Query Per Second) ,每秒的響應(yīng)請求數(shù)荧缘,也即是最大吞吐能力。QPS = req/sec = 請求數(shù)/秒QPS統(tǒng)計方式 [一般使用 http_load 進行統(tǒng)計]QPS = 總請求數(shù) / ( 進程總數(shù) * 請求時間 )QPS: 單個進程每秒請求服務(wù)器的成功次數(shù)
峰值QPS:原理:每天80%的訪問集中在20%的時間里意推,這20%時間叫做峰值時間公式:( 總PV數(shù) * 80% ) / ( 每天秒數(shù) * 20% ) = 峰值時間每秒請求數(shù)(QPS)
PV:訪問量即Page View, 即頁面瀏覽量或點擊量俊性,用戶每次刷新即被計算一次單臺服務(wù)器每天PV計算公式1:每天總PV = QPS * 3600 * 6公式2:每天總PV = QPS * 3600 * 8
UV:獨立訪客即Unique Visitor,訪問您網(wǎng)站的一臺電腦客戶端為一個訪客。00:00-24:00內(nèi)相同的客戶端只被計算一次服務(wù)器數(shù)量:機器:峰值時間每秒QPS / 單臺機器的QPS = 需要的機器機器:ceil( 每天總PV / 單臺服務(wù)器每天總PV )
并發(fā)數(shù):并發(fā)用戶數(shù)是指系統(tǒng)可以同時承載的正常使用系統(tǒng)功能的用戶的數(shù)量
吐吞量:吞吐量是指系統(tǒng)在單位時間內(nèi)處理請求的數(shù)量
響應(yīng)時間(RT):響應(yīng)時間是指系統(tǒng)對請求作出響應(yīng)的時間
例子:每天300w PV 的在單臺機器上,這臺機器需要多少Q(mào)PS?答:( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)如果一臺機器的QPS是58,需要幾臺機器來支持?答:139 / 58 = 3


  這篇文章將關(guān)注測試金字塔里的單元測試層附井,并探討如何高效地為分布式系統(tǒng)(如微服務(wù))構(gòu)建單元測試。
  定義測試邊界
  定義測試邊界是實現(xiàn)高效測試的第一步着逐。測試的目的是為了驗證邊界里“黑盒”的行為是否符合預(yù)期,我們向黑盒輸入數(shù)據(jù)魁蒜,然后驗證輸出的正確性细移。
  在單元測試?yán)铮诤兄傅氖呛瘮?shù)或者類的方法速缨,目的是單獨測試特定代碼塊的行為搁吓。為了更好地理解這個概念,我們以簡單的注冊功能為例:

  我們可以看到這個函數(shù)包含了一些輸入和輸出。這個函數(shù)接受基本的用戶注冊信息作為輸入?yún)?shù),并返回新創(chuàng)建的用戶ID。
  不過這里也有一些不是很明顯的輸入數(shù)據(jù)绘搞。這個函數(shù)調(diào)用了另個外部函數(shù):一個向數(shù)據(jù)庫插入數(shù)據(jù)董饰,一個對密碼進行散列和持久化娄帖。在某些情況下桂肌,數(shù)據(jù)庫可能會返回錯誤。比如干厚,因為用戶名唯一性問題導(dǎo)致數(shù)據(jù)庫插入失敗谆扎,又或者需要通過調(diào)用外部的微服務(wù)進行密碼散列,如果網(wǎng)絡(luò)連接出現(xiàn)問題或密碼散列服務(wù)因發(fā)生過載導(dǎo)致服務(wù)超時伺糠,那么密碼散列函數(shù)就會返回錯誤舵揭。
  為了全面測試用戶注冊功能,單元測試所要做的不僅僅是簡單地傳進去不同的輸入?yún)?shù),它還要能夠讓外部依賴項能夠使用這些輸入來驗證函數(shù)的行為是否符合預(yù)期耕漱。在測試函數(shù)的錯誤處理邏輯時妓笙,這點很重要的拉鹃。
  Stub和Mock
  為了制造各種輸入數(shù)據(jù),需要使用stub,也叫作mock竭业。這個可以使用依賴注入或方法攪拌(swizzle)來實現(xiàn)击纬。測試框架在運行被測試的函數(shù)時可以確保對底層依賴項的調(diào)用會被重定向到stub上:

  我們可以使用stub來達到各種目的:
  stub可以什么事也不做肯腕。這樣可以加快個別單元測試的速度涉瘾,如果后續(xù)有其他單元測試可用于測試邊界情況的話就可以這樣做。
  stub可返回任意的值,用于模擬外部函數(shù)的輸出赁还。這在測試罕見的邊界情況時會非常有用柬焕,比如有些錯誤場景很少會發(fā)生或者難以重現(xiàn)病涨。
  stub也可以用于捕捉被測試函數(shù)欲傳給外部函數(shù)的參數(shù)幻工,或者把這些參數(shù)記錄下來当悔。這樣就可以驗證被測試函數(shù)需要調(diào)用哪些外部函數(shù)以及需要傳給外部函數(shù)哪些參數(shù)饼疙。
  測試分布式系統(tǒng)需要有一套很好的stub,有了這些stub,單元測試才能夠在沒有外部服務(wù)的情況下運行。下面列出了一些工具括眠,用于創(chuàng)建各種stub。
  Node.js/JavaScript
  sinon.js (提供了stub和間諜功能)
  testdouble.js (主要用于面向?qū)ο驛PI的stub生成器)
  nock (主要用于模擬HTTP請求行為)
  Python****
  mock
  Go
  gomock
  Java
  mockito
  easymock
  單元測試流程
  單元測試的目的是為了給開發(fā)人員提供快速驗證他們所寫代碼的行為。因為對外部依賴的調(diào)用使用了stub,所以通常可以在幾秒鐘內(nèi)就可以執(zhí)行數(shù)千個單元測試盖喷。所以,開發(fā)人員可以把單元測試加入到他們的開發(fā)工作流當(dāng)中咙冗,要么直接集成到他們的IDE里挫望,要么通過終端命令行來運行蛉幸。開發(fā)人員在編寫代碼的同時頻繁地運行單元測試可以幫助他們及早地發(fā)現(xiàn)代碼中的問題烫沙。
  一旦開發(fā)人員養(yǎng)成了這樣的習(xí)慣,那么就可以進行測試驅(qū)動開發(fā)了。開發(fā)人員在開發(fā)新特性之前會先準(zhǔn)備好單元測試,在新特性被加進來之前,測試總是失敗。在經(jīng)過不斷的測試和代碼修改之后,一個完整的功能被開發(fā)出來了,最后再運行測試就能通過。
  單元測試的作用不應(yīng)局限于代碼開發(fā)只怎,它們也應(yīng)該被集成到代碼合并流程里。GitHub支持一些主流持續(xù)集成服務(wù)器的狀態(tài)檢查季稳。一般的流程是這樣的:保護好“master”分支,不允許開發(fā)人員向該分支提交代碼,而是讓他們把代碼提交到其他分支上一忱。在將代碼合并到master分支的時候帘营,GitHub要求先通過狀態(tài)檢查。
  Jenkins问顷、CircleCI和TravisCI都提供了狀態(tài)檢查鉤子(hook)杜窄,它們會從分支上獲取代碼并運行單元測試塞耕。如果通過了驾讲,就允許合并代碼,否則就不允許胧奔。

  總結(jié)
  單元測試是測試工具箱里的一個非常重要的工具。為了對分布式系統(tǒng)代碼進行全面的單元測試笔诵,有必要利用一些支持stub的測試框架岳服,用于模擬各種錯誤場景或外部依賴的各種響應(yīng)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末香璃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌笆檀,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異匆篓,居然都是意外死亡,警方通過查閱死者的電腦和手機媒役,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門炬藤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來就珠,“玉大人晰赞,你說我怎么就攤上這事。” “怎么了空繁?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵舰罚,是天一觀的道長勤晚。 經(jīng)常有香客問我夕膀,道長炮赦,這世上最難降的妖魔是什么汽煮? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上蚤氏,老公的妹妹穿的比我還像新娘。我一直安慰自己蓬网,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布吵取。 她就那樣靜靜地躺著锯厢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪臣疑。 梳的紋絲不亂的頭發(fā)上讯沈,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天婿奔,我揣著相機與錄音萍摊,去河邊找鬼。 笑死穷劈,一個胖子當(dāng)著我的面吹牛踊沸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播评凝,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼奕短,長吁一口氣:“原來是場噩夢啊……” “哼匀钧!你這毒婦竟也來了之斯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤翰蠢,失蹤者是張志新(化名)和其女友劉穎啰劲,沒想到半個月后檀何,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡栓辜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年藕甩,在試婚紗的時候發(fā)現(xiàn)自己被綠了狭莱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片概作。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡讯榕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出济竹,到底是詐尸還是另有隱情霎槐,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布罕袋,位于F島的核電站浴讯,受9級特大地震影響蔼啦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奈籽,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一衣屏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧膨疏,春花似錦钻弄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽均芽。三九已至,卻和暖如春深纲,著一層夾襖步出監(jiān)牢的瞬間劲妙,已是汗流浹背镣奋。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留余赢,地道東北人哈垢。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓耘分,卻偏偏與公主長得像绑警,于是被迫代替她去往敵國和親计盒。 傳聞我的和親對象是個殘疾皇子芽丹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 在使用Jmeter進行接口的性能測試時志衍,由于Jmeter 是JAVA應(yīng)用聊替,對于CPU和內(nèi)存的消耗比較大,所以春叫,當(dāng)需...
    燕京博士閱讀 4,166評論 0 16
  • 1 Jmeter安裝配置 使用Jmeter前首先要安裝JDK暂殖,配置JDK環(huán)境變量当纱。Jmeter不需要安裝,下載后...
    茶小汐閱讀 2,929評論 0 8
  • 上一節(jié)中晨横,我們了解了jmeter的一此主要元件手形,那么這些元件如何使用到性能測試中呢悯恍。這一節(jié)創(chuàng)建一個簡單的測試計劃來...
    邵瓊閱讀 806評論 0 0
  • 原文地址: JMeter best-practices 保持使用最新版本 JMeter被經(jīng)常推薦用來測試性能,鼓勵...
    Yuan_Jie閱讀 5,482評論 4 28
  • 1. MECE法則:匯報工作時借助這個工具分析問題瞬欧,確保每一項不重疊艘虎,不遺漏篙梢,這樣員工才能理解到位美旧,執(zhí)行到位榴嗅。 2...
    耿婷婷GTT閱讀 174評論 0 0