效能測試總結(一)
一、專案背景
我們的平臺為全國某行業監控平臺,經過3輪功能測試、介面測試後,98%的問題已經關閉,決定對省平臺向全國平臺上傳資料的介面進行效能測試。
二、測試步驟
1、編寫效能測試方案
由於我是剛進入此專案組不久,只參與了其中3個模組的功能測試,一遍介面迴歸測試,所以在寫效能測試方案時,首先將業務流程、業務功能梳理了一遍,重點對將要效能測試的介面的文件再次仔細看一遍,在導師的引導下,對各個介面響應的功能更加了解,收穫最大是,效能測試應該對應各介面的實際功能,設計合適的用例,如:針對某一物件,有兩種資料上傳,一種是實時資料,一種是歷史資料,此時,實時資料就應該更多考慮連續上傳的穩定性,而歷史資料應該更多考慮資料堆積後,一次上傳多條(1000條)資料的情況,要去更多關注資料上傳後的正確性,完整性。
對各個介面功能和資料上傳邏輯梳理清楚後,將每個介面效能測試的方法、測試項、需要的資料都設計好,整理後就是我們的測試方案了。下面是部分截圖,
測試方案是在在即實際操作嘗試可行的情況下編寫的,後續施行的過程中發現的需要調整的地方,按實際需求進行了調整。文件末我會附上本次效能測試中出現的問題和解決方法,希望對新學效能測試的盆友們有所幫助~
2、測試方案討論
將測試方案提交導師稽核後,小組內開會討論了此方案,組長對不合適的地方提出改進意見,同事們提出自己的想法,還有不清楚的地方也在大家的討論中更明朗了。通過討論後,測試方案變得更貼合專案需要、更可行了。本次需要修改的部分截圖如下:
3、效能測試執行
我們使用Jmeter工具進行測試。介面資訊如下:
協議方式 | HTTP |
請求方式 | POST |
編碼格式 | UTF-8 |
傳輸格式 | JSON |
測試指令碼使用Java編寫,資料打包為json格式。
4、輸出測試報告
5、分析資料
6、問題排查
7、效能改進
三、案例分享
下面分析詳細一個介面案例--歷史資料上傳。
1、建立一個執行緒組:開啟Jmeter.bat,出現圖形介面,依次點選如下圖:
2、新增HTTP預設請求:新增此配件為了控制此執行緒組的訪問地址和埠,依次點選如下:
配置HTTP預設請求引數,根據要測試的IP和埠,如下所示:
3、資料庫連線配置:因為我們要從資料庫獲取企業資訊,所以要配置資料庫連線(使用配置元件-JDBC連線配置),若你們用固定的使用者名稱和密碼登入,可以省去此步。
JDBC連線配置:
Database | Driver class | Database URL |
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://host:port/{dbname} |
PostgreSQL | org.postgresql.Driver | jdbc:postgresql:{dbname} |
Oracle | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:@host:port:service |
MSSQL | com.microsoft.sqlserver.jdbc.SQLServerDriver或者net.sourceforge.jtds.jdbc.Driver | jdbc:sqlserver://IP:1433;databaseName=DBname或者jdbc:jtds:sqlserver://localhost:1433/"+"library" |
3、新增僅一次控制器:屬於邏輯控制器,用來控制取樣器的執行順序。因為這裡的使用者只需要登入一次,所以用僅一次控制器,即表示此控制器下的內容在整個執行緒組執行中只迴圈一次。
4、新增HTTP請求:要新增在僅一次控制器下面,才能受它控制。HTTP請求屬於Sampler(取樣器),然後根據介面文件相關內容填寫http請求內容。
5、新增正則表示式提取器:需要在http請求下面新增,因為要從http請求的響應結果中通過正則表示式來提取我們需要的key。
正則表示式:
():括起來的部分就是要提取的。
.:匹配任何字串。
+:一次或多次。
?:不要太貪婪,在找到第一個匹配項後停止。
(3)模板:用$$引用起來,如果在正則表示式中有多個正則表示式,則可以是$2$$3$等等,表示解析到的第幾個值給引用名稱的那個量(如:key)。如:$1$表示解析到的第1個值。
(4)匹配數字:0代表隨機取值,1代表全部取值,通常情況下填0。
(5)預設值:如果引數沒有取得到值,那預設給一個值讓它取。
6、新增獲取當前時間:使用取樣器裡的BeanShell Sampler。為了方便在Redis裡檢視資料時知道是什麼時間上傳的。次數需要在取樣器中編寫提取當前時間的java指令碼。
7、使用java編寫指令碼設定上傳資料,此處也使用Bean Shell Sampler取樣器。資料需要json格式。這裡開始,取樣器就要新增線上程組下面,因為資料有可能要多次迴圈上傳,如果只部分截圖如下:
8、新增http請求,將剛設定的符合介面要求的資料上傳。
9、新增監聽器
在監聽器中設定執行日誌儲存的位置.
10、執行後檢視結果。