業務描述:
在業務系統里進行查詢操作,查詢的結果是通過請求http接口,從系統中處理並將結果以json字符串返回。
使用Loadrunner對此類接口進行壓力測試並記錄相關的性能指標數據:
一.安裝Loadrunner
本次測試過程使用Loadrunner 11.0版本。安裝Loadrunner過程詳見......
二.部署環境
1.接口服務器一台;
2.用於運行Loadrunner的壓力測試機1台或N台 ,在條件允許下,盡可能提供高配置的CPU 和內存。
3.接口服務器和壓力測試機建議應部署於同一個局域網內,否則測試過程和結果將受到網絡帶寬因素的影響無法順利進行。
三.編寫測試腳本
方法一. 通過java編寫測試類,以jar包的方式引入Loadrunner進行測試。
優點:便於解析接口響應結果,同時避免由於LR腳本編寫不規范或配置問題,導致測試過程引發的未知錯誤。
條件:運行loadrunner的機器需要安裝jdk1.6的版本。
1.編寫java測試類: CTLPTest.java,如下代碼

1 package com; 2 3 import java.io.InputStream; 4 import java.net.HttpURLConnection; 5 import java.net.URL; 6 import java.util.Random; 7 8 public class CTLPTest 9 { 10 public static void main(String[] args) 11 { 12 CTLPTest lbs = new CTLPTest(); 13 String ltpUrl = lbs.ltpRequestUrl(); 14 System.out.println(ltpUrl); 15 System.out.println(lbs.ltpRequest(ltpUrl)); 16 } 17 18 public int ltpRequest(String ltpRequestUrl) 19 { 20 int returnCount = -1; 21 try 22 { 23 URL url = new URL(ltpRequestUrl); 24 //http連接 25 HttpURLConnection http = (HttpURLConnection)url.openConnection(); 26 http.setUseCaches(false); 27 http.connect(); 28 //獲取http響應流 29 InputStream in = http.getInputStream(); 30 //解析響應流 31 byte[] b = new byte[in.available()]; 32 in.read(b); 33 //將響應流轉換成字符串 34 String res = new String(b); 35 //根據實際情況,判斷響應結果,並設置返回值 36 int of = res.indexOf("sucess"); 37 if (of < 0) { 38 returnCount = -1; 39 } else { 40 returnCount = 1; 41 } 42 } catch (Exception e) { 43 returnCount = -1; 44 } 45 return returnCount; 46 } 47 48 public String ltpRequestUrl() { 49 StringBuilder param = new StringBuilder("http://192.168.100.205:8055/CTLP/LtpRequest.json?Imsi="); 50 param.append("userid-1"); 51 param.append("&appName=LBS&Apikey=D39hr1FgplZSjV2eNVW71wvbYbl8Mip4"); 52 return param.toString(); 53 } 54 }
2.將測試類導出為jar包 : LTPRequest.jar
過程略.
3.Loadrunner創建java測試類
圖1:
圖2:創建java協議腳本1
圖3:創建java協議腳本2
圖4:創建java協議腳本3
圖5:設置環境變量
圖6:設置安裝的jdk位置目錄
圖7:導入jar包
圖8:編寫腳本內容

1 package com; 2 3 import java.io.InputStream; 4 import java.net.HttpURLConnection; 5 import java.net.URL; 6 7 public class CTLPTest 8 { 9 public static void main(String[] args) 10 { 11 CTLPTest lbs = new CTLPTest(); 12 String ltpUrl = lbs.ltpRequestUrl(); 13 System.out.println(ltpUrl); 14 System.out.println(lbs.ltpRequest(ltpUrl)); 15 } 16 17 public int ltpRequest(String ltpRequestUrl) 18 { 19 int returnCount = -1; 20 try 21 { 22 URL url = new URL(ltpRequestUrl); 23 //http連接 24 HttpURLConnection http = (HttpURLConnection)url.openConnection(); 25 http.setUseCaches(false); 26 http.connect(); 27 //獲取http響應流 28 InputStream in = http.getInputStream(); 29 //解析響應流 30 byte[] b = new byte[in.available()]; 31 in.read(b); 32 //將響應流轉換成字符串 33 String res = new String(b); 34 //根據實際情況,判斷響應結果,並設置返回值 35 boolean of = res.contains("\"state\":1"); 36 if (of) { 37 returnCount = 1; 38 } else { 39 returnCount = 0; 40 } 41 } catch (Exception e) { 42 returnCount = -1; 43 } 44 return returnCount; 45 } 46 47 public String ltpRequestUrl() { 48 StringBuilder param = new StringBuilder("http://192.168.100.205:8055/CTLP/LtpRequest.json?Imsi="); 49 param.append("userid-1"); 50 param.append("&appName=LBS&Apikey=D39hr1FgplZSjV2eNVW71wvbYbl8Mip4"); 51 return param.toString(); 52 } 53 }
圖9:試運行,查看結果
說明:至此,完成了java腳本的編寫和基本測試,接下來我們就可以使用loadrunner的進行壓力測試了。
四.壓力測試
圖1:選擇壓力測試
圖2:打開步驟三中創建的java腳本目錄
圖3:壓力測試設置界面總覽
圖4:設置開啟並發用戶數及壓入頻率
說明:單位時間內壓入的並發用戶數設置的用戶數值越大,壓力越大,根據測試實際需要調整。
圖5:設置壓力峰值持續時間
圖6:設置單位時間內減少並發用戶數(根據實際需要,也可以選擇Simultaneously,達到時間后直接停止)
圖7:點擊"Start Scenario"按鈕開始運行測試
圖8:運行結果:
圖9:分析結果(可以保存各項性能指標數據到文件)