標籤:術語 intel sdn 狀態 參數設定 誤差 bsp jdk1.8 ide
1. 安裝jdk並配置環境變數
以1.8為例:
(1)安裝jdk1.8;
(2)在系統變數裡點擊建立,變數名填寫JAVA_HOME,變數值填寫JDK的安裝路徑“C:\Program Files\Java\jdk1.8.0_40”,環境變數位置1
圖1
(3)在系統變數裡點擊建立變數名填寫CLASSPATH,變數值填寫“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”。注意不要忘記前面的點和中間的分號。
(4)在系統變數裡找到Path變數,這是系統內建的,不用建立。雙擊Path,由於原來的變數值已經存在,故應在已有的變數後追加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”。注意前面的分號。
(5) 在系統的CMD命令提示字元下輸入"java -version",能看到相應協助資訊,說明jdk安裝成功。
2. 安裝jmeter並配置環境變數
(1) 安裝Jmeter,解壓“apache-jmeter-2.11.rar”到c盤根目錄下:“C:\apache-jmeter-2.11”。
(2)在使用者變數中,建立變數名“JMETER_HOME”,變數值為:“C:\apache-jmeter-2.11;”。
(3)修改“CLASSPATH”,添加: “;%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/logkit-2.0.jar;”若”CLASSPATH”之前為空白,則添加“.;%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/logkit-2.0.jar;”
3. 運行jmeter
直接開啟 C:\apache-jmeter-2.11/bin/jmeter.bat 即可
4. 測試步驟
(1)添加線程組,2
圖2
添加完頁面3:
圖3
圖中資料含義:每1秒鐘跑10個線程,迴圈10次;即每隔1/10秒鐘發送一個請求,共請求100次。
(2)添加HTTP請求
圖4
將測試內容正確填寫後:
(3)添加頭資訊管理器,6、圖7
圖6
圖7
(4)添加監聽器
圖8
5.結果分析
(1)彙總報告:
註:這裡的Error是指超過30秒的請求數。
圖9
圖10
彙總報告可通過Save Table Data按鈕匯出為Excel表格:
圖11
(2)查看結果樹:
註:運行過程中,“查看結果樹”顯示對號的返回結果也可能是錯誤的,統計結果時需要注意;為確保運行結果的正確性,同時需要關注“請求”資料和“響應資料”是否符合預期值。
(3)用表格查看結果:
圖14
參數含義:
Sample:每個請求的序號
Start Time:每個請求開始時間
Thread Name:每個線程的名稱
Label:Http請求名稱
Sample Time:每個請求所花時間,單位毫秒
Status:請求狀態,如果為勾則表示成功,如果為叉表示失敗。
Bytes:請求的位元組數
註:
開測按鈕為綠色的右向箭頭
在每組開測前,需點擊清除按鈕將上一組的測試資料清空。
圖15
6、隨機參數
為避免使用固定參數造成的測試誤差,需要將用到的參數隨機讀取,步驟如下:
右鍵添加--配置元件--CVS data set config:
圖16
然後點擊添加的cvs data,做如下配置:
圖17
filename 為params.csv檔案存放的位置,params.csv可先建一個文字檔,然後更改尾碼名即可,裡面的資料為一行一個“empId,socialId,sn”,中間用英文逗號隔開,各值不需要加引號,18:
圖18
http請求的參數設定處改為如下設定:
圖19
此時清空上次測試資料,點擊“啟動”按鈕後參數即為params.csv檔案裡的隨機讀取值,可從“查看結果樹”的“請求”裡查看每次發送資料是否是隨機的。
7.錄製指令碼
7.1 通過JMeter自身設定錄製指令碼
1、建立一個httpProxy 伺服器(右鍵點擊“工作台”--->“添加”--->“非測試元件”--->“httpProxy 伺服器”)
圖20
作如下設定:
圖21
2、設定IE瀏覽器
“internet選項”--->“串連”--->“區域網路設定”
圖22
圖23
3、點擊jmeter上的“啟動”按鈕,開啟瀏覽器輸入需要錄製web項目地址,jmeter會自動記錄IE所訪問的一系列頁面,訪問結束後點擊“停止”結束錄製,指令碼自動出現在jmeter項目下。
圖24
7.2通過badboy錄製指令碼
1、安裝並開啟人badboy工具,點擊工欄目上的紅色圓形按鈕,在地址欄目中輸入被測試專案的地址。
開始訪問地址,badboy會記錄訪問過程,形成指令碼。
2、錄製完成後,點擊工具列旁邊黑色按鈕,結束錄製;選擇“檔案”-”Export to Jmeter” 儲存檔案。
3、開啟Jmeter工具,選擇“檔案”-->“開啟”選擇剛才儲存的檔案(.jmx類型),將檔案匯入進來就可以執行了。
8、jmeter編寫自訂Java測試代碼進行並發測試
舉一個簡單的Java自訂測試代碼例子,使用Java編譯器編寫測試代碼,實現功能為:在測試前輸入任意一個字串,判斷該字串的長度是否大於5,如果大於則測試結果成功,否則測試結果失敗,然後再放到Jmeter中類比10個使用者測試,同時運行這段代碼,具體實現如下:
1)開啟Java編譯器,建立一個項目"TestLength",然後建立包"com.jmeter".
2) 從Jmeter的安裝目錄lib/ext中拷貝兩個檔案"ApacheJMeter_core.jar"和"ApacheJMeter_java.jar"到"TestLength"的項目中,然後引入這兩個JAR檔案.
3) 在"com.jmeter"包中建立類,名字叫"TestLength",不過這個類要繼承"AbstractJavaSamplerClient"類,如果項目引入步驟二中的兩個檔案,就可以找到"AbstractJavaSamplerClient"類了.
4) "TestLength"類在繼承"AbstractJavaSamplerClient"類的同時也會繼承四個方法,分別是"getDefaultParameters","setupTest","runTest"和"teardownTest"方法.
u getDefaultParameters方法主要用於設定傳入的參數;
u setupTest方法為初始化方法,用於初始化效能測試時的每個線程.
u runTest方法為效能測試時的線程運行體;
u teardownTest方法為測試結束方法,用於結束效能測試中的每個線程.
5) 具體實現代碼如下.
package com.jmeter;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.log.Logger;
/**
* Created with IntelliJ IDEA.
* User: tancp
* Date: 15-11-10
* Time: 上午11:12
* To change this template use File | Settings | File Templates.
*/
public class TestLength03 extends AbstractJavaSamplerClient {
//輸出到Jmeter控制台的日誌類
private Logger log=getLogger();
//運行結果
private SampleResult results;
//Jmeter控制台輸入的參數
private String testStr;
//設定傳入的參數,可設多個,已設定的參數顯示在jmeter參數列表中
public Arguments getDefaultParameters(){
log.info("execute getDefaultParameters!!!!!!");
Arguments params=new Arguments();
//定義一個參數,顯示到Jmeter參數列表中,第一個參數為顯示名,第二個參數為預設值
params.addArgument("testStr","");
return params;
}
//初始化方法,每個線程執行一次,在測試方法運行前執行
public void setupTest(JavaSamplerContext arg0){
log.info("Execute setupTest......");
results=new SampleResult();
testStr=arg0.getParameter("testStr",""); //初始化
if(testStr!=null&&testStr.length()>0){
results.setSamplerData(testStr);
}
}
//測試執行迴圈體
public SampleResult runTest(JavaSamplerContext arg0){
log.info("execute runTest$$$$$$");
//用於設定運行結果的成功或失敗,如果是"false"則表示結果失敗,否則則表示成功
if(testStr.length()<5){
log.info("fail......");
results.setSuccessful(false);
}else{
log.info("[email protected]@@@@@");
results.setSuccessful(true);
}
return results;
}
//結束方法,實際運行時每個線程僅執行一次,在測試方法運行結束後執行
public void teardownTest(JavaSamplerContext arg0){
log.info("execute teardownTest######");
}
}
6) 把上面的例子打包,然後把產生的"TestLength.jar"檔案拷貝到Jmeter的安裝目錄lib/ext下.
7) 開啟bin\jmeter.bat運行Jmeter,進入Apache Jmeter控制台。
添加一個線程組。
然後在該線程組下面添加一個Java請求(在Sampler中)
圖25
在Java請求的類名稱中選擇咱們剛建立的類"com.jmeter.TestLength",在下面參數列表的"testStr"後面輸入要測試的字串,然後添加一個監聽器(彙總報告)。
圖25
設定一下類比的使用者數就可以測試了.如果測試不成功,Jmeter會在它自己輸出框中拋出這個字串.
8)查看日誌(包含jmeter自身日誌和自訂java程式的日誌),日誌位置
圖26
日誌資訊
圖27
註:此記錄檔每次關閉jmeter時都會格式化
附
術語含義:
1、線程組:測試裡每個任務都要線程去處理,所有我們後來的任務必須線上程組下面建立。可以在“Test Plan(滑鼠右擊) -> 添加 ->Threads(Users) -> 線程組”來建立它,然後線上程組面板裡有幾個輸入欄:線程數、Ramp-Up Period(in seconds)、迴圈次數,其中Ramp-Up Period(in seconds)表示在這時間內建立完所有的線程。如有8個線程,Ramp-Up = 200秒,那麼線程的啟動時間間隔為200/8=25秒,這樣的好處是:一開始不會對伺服器有太大的負載。
2、取樣器(Sampler):可以認為所有的測試工作都由取樣器承擔,有很多種,如:HTTP請求。
3、斷言:對取樣器返回的請求結果給出判斷是否正確。
4、monitor:它的功能是對取樣器的請求結果顯示、統計一些資料(輸送量、KB/S……)等
樣本數目:總共發送到伺服器的請求數。
最新樣本:代表時間的數字,是伺服器響應最後一個請求的時間。
輸送量(throughput ):伺服器每分鐘處理的請求數。
平均值:總已耗用時間除以發送到伺服器的請求數。
中間值:時間的數字,有一半的伺服器回應時間低於該值而另一半高於該值。
偏離:伺服器回應時間變化、離散程度測量值的大小,或者,換句話說,就是資料的分布。
樣本數目:也就是上面所說的請求個數,成功的情況下等於你設定的並發數目乘以迴圈次數。
平均:每個線程請求的平均時間
最新樣本:表示伺服器響應最後一個請求的時間
偏離:伺服器回應時間變化、離散程度測量值的大小,換句話說,就是資料的分布。
Jmeter使用文檔(windows)