1. 程式人生 > >效能測試總結(一)

效能測試總結(一)

一、專案背景

我們的平臺為全國某行業監控平臺,經過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、執行後檢視結果。