性能測試實戰


 

記錄2018年初,和平台組開發同事開展執行的一次性能測試計划過程。

 

准備階段

1.公共區域

圖一:配置頭信息

圖二:銀行項目每筆交易都需要唯一的交易流水,通過"${ }"可以引用函數、變量或計數器

圖三:每個接口的請求內容均由Comm_req、Sys、Input三部分組成,Input區屬於業務區,Comm_req區除了交易流水其他字段基本固定,將Comm_req作為變量方便后續調用

圖四:http請求默認值設置,eval()函數引用包含變量的變量

圖五:響應文本斷言,交易成功的標志是"status":"S"和"erorcd":"0000"

圖六:將請求報文區的三部分Comm_req、Sys、Input拼接成變量request,eval()調用

 

2.業務區域

圖一:以開客戶號交易舉例,添加線程組,設置為單線程

圖二:錄入請求報文的input區內容,存在兩個需要參數化的變量contact_content1和contact_content2得從外部引用

圖三:定義變量contact_content1

圖四:定義變量contact_content2

圖五:給交易的線程組添加http請求,jmeter自動讀取公共區域http請求默認值,每個線程組下必須有請求

圖六:提取響應結果賦值給變量cust_no,方便后續交易使用

圖七:確認響應結果提取成功

3.驗證請求結果

圖一:請求參數中需要參數化的字段,通過函數、變量或計數器均已正常生成

圖二:響應結果包含請求成功的交易碼和標識

 

改進:使用Test Fragment模塊化腳本構建

 

執行測試

 

總結

1.點擊jmeter啟動按鈕,請求發不出去,查詢結果樹沒有響應

原因:服務沒有注冊或啟動,測試過程中存在清庫等等,服務有時沒有啟動

 

2.4400交易需要已激活的卡號,得在數據庫改狀態,可以通過jmeter發送jdbc請求,jdbc連接配置中的變量名與jdbc請求中的變量名一致

注:配置過程中尾部一定不要留空格,否則可能報錯:Cannot create PoolableConnectionFactory (Access denied for user 'root '@'localhost

 

3.用計數器生成003301開頭的20位卡號,若使用starting value 為1,number format為00330100000000000000,卡號的頭兩位0會省略掉

解決辦法:starting value為00330100000000000001,number format為00000000000000000000

 

4.混合壓測中,可能會因為get("prcscd")而隨機取交易碼,這樣會導致不能按要求實現混合並發

解決辦法:將BeanShell PreProcessor添加到每個線程組中並取得具體的交易碼,String prcscd = vars.get("prcscd交易碼")

 

5.監控插件使用

參看:http://www.cnblogs.com/Ryana/p/8377356.html

 

6.慢SQL查詢

通過xshell登陸mysql所在的服務器

開啟慢查詢:set global log_slow_queries = on

查詢/設置慢查詢參數(查詢時間單位:sec):show global  variables like 'long_query_time';     set global long_query_time =1; 

查詢慢查詢存放日志:show variables like 'slow_query_log_file';

 

eg:4400交易慢查詢查找

閥值(ms)

執行時間(ms)

位置(sql)

10

35

TabDpBusiMain.dpa_account.Entity.selectByIndex_odb1

10

  34

TabDpBusiMain.dpa_card.Entity.selectByIndex_odb1

10

  39

DpAcctQuery.selSubAcctRelateRecord

10

  42

TabDpInterest.dpa_interest_rate.Entity.selectByIndex_odb1

10

  28

DpFroze.selWholeBalFrozeSource

10

  36

TabDpProtocol.dpb_withdrawl_protect.Entity.selectByIndex_odb4

10

  39

DpAcctQuery.selSubAcctRelateRecord

 結果定位

1). DpAcctQuery.selSubAcctRelateRecord [命名sql join on 聯表查詢]

更多分析:http://blog.jobbole.com/107256/

 

7.GC指標及調優:

相關知識學習JVM-GC原理JVM-GC收集器監控GC診斷GC

Minor GC執行迅速(50毫秒以內)

Minor GC執行不頻繁(間隔10秒左右一次)

Full GC執行迅速(1秒以內)

Full GC執行不頻繁(間隔10分鍾左右一次)

【NewRatio=2】老年:新生=2:1

【SuvivorRatio=6】Eden:Survivor=6:1

 注:括號內容並非不可變,需要考慮具體的服務

打開appCtrl文件查看CMS收集器參數,開發同事提醒這些參數得小心點改,不然沒什么效果,小白弱弱的表示不會改。。。

性能測試原則

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM