如何準備性能測試數據
在軟件性能測試過程中,測試數據的準備是一個非常系統化、工作量非常龐大一項工作。如何準備支持不同業務操作、不同測試類型的大量測試數據來滿足負載壓力測試的需求是性能測試過程中經常面對的一個重要話題。
中國軟件評測中心在歷來的性能測試過程中重視性能測試數據的準備工作,從而保證了性能測試工作的順利進行,也保證的性能測試結果的準確性和有效性。中國評測在近期開展的某金字工程非功能測試項目使作者了解到數據準備工作得系統性、復雜性,由此作者將性能測試數據準備工作簡單歸納,希望對從事性能測試工作的測試人員有一定的借鑒和參考。本文重點介紹一下性能測試要準備哪些數據及準備數據的常用方法。
一、需要準備的數據種類
在執行負載壓力測試前,一般需要準備三類數據:初始化數據、鋪底數據(歷史數據)和參數化數據。
1. 初始化數據準備
業務系統安裝部署完成后,并不能馬上進行相關業務的負載壓力測試,需要對系統進行初始化操作,系統初始化主要對增加系統中的基本角色信息、機構信息、權限信息、業務流程設置等數據,這些數據是業務系統能夠開展相關業務的基礎。初始化數據是為了識別數據狀態并且驗證用于測試的測試案例的數據,需要在業務系統搭建完成后按照系統實際運行要求實施導入,供測試中使用。
2. 鋪底數據(歷史數據)
當業務系統剛剛上線的時候,由于數據庫中數據量相對較少,系統整體響應時間很快,用戶使用體驗較好。但隨著業務的持續開展,業務系統數據庫中的數據量會成倍的增加,業務系統的相關操作響應時間會因為數據庫中業務數據的快速增長等而變的越來越長,用戶使用體驗會變得很難忍受,因此,在性能測試時,需要加入相當規模的鋪底數據,來模擬未來幾年業務增長條件下的系統相關操作的性能表現。例如:要測試并發查詢業務,那么要求對應的數據庫和表中有相當的數據量以及數據的種類應能覆蓋全部業務。
3. 參數化數據
在負載壓力測試過程中,為了模擬不同的虛擬用戶操作的真實負載情況,同時由于業務系統中大部分業務操作的交易數據不能重復使用,因此,需要為不少用戶輸入信息準備大量參數化數據,以保證正常實施負載壓力測試。參數化測試涉及的范圍很多,例如,模擬不同用戶登錄系統,需要準備大量用戶名及相應密碼參數數據;模擬納稅人納稅申報,需要準備大量的納稅人識別號、納稅人內碼或納稅人系統內部識別號等參數數據,這類數據準備要求符合實際運行要求并且保證數據表之間的關聯關系。
二、數據準備的常用方法
1、對于業務系統的初始化數據一般采用手工創建和數據導入的方式來完成,其中新建系統或者新舊系統差異較大的這類系統需要手工創建,而具有遺留系統的升級系統很大一部分可以通過數據導入的方式完成數據初始化工作。
2、鋪底數據的準備通常數據翻倍的方式來完成。
數據翻倍需要采用找出數據庫之間的表結構關系,弄清楚數據庫里面主表和附表之間的關系是一對多或多對多,對于一對多關系的要推算一張主表的一條記錄大概對應附表的幾條數據,并據此把數據翻倍。具體實施數據翻倍時可以利用 CPU 的運算能力高效率地生成的數據,并導入數據庫,從而產生出所需的鋪底數據?;蛘咄ㄟ^編寫和執行存儲過程來完成。
準備鋪底數據要注意以下幾個原則:1.數據庫中的數據量要比內存大上若干倍;2.數據在準備的時候,要保持原表的約束關系;3.每張表的數據量要符合真實情況。
3、參數化數據準備一般采用從數據庫提取現有數據或者人工添加數據的方式來完成。
1)使用數據庫現有真實數據。如測試100個用戶同時進行納稅申報的情況,如果已有100個真實的用戶賬號信息,沒個用戶也有可操作的若干組納稅戶,那么在準備數據時,就可以直接調用這些現有的數據來完成。
2)人工添加準備數據。以登錄測試為例,如果現在沒有100個現成的真實用戶賬號信息,那么就需要自己手動去創建,當然創建的方式就有很多種了,可以使用LoadRunner進行創建,也可以寫一段小程序去創建,當然還可以選擇手動創建。但是當數據量很大時,選擇手動創建就是一件很困難的事,如測試BOSS(Business & Operation Support System)系統,幾千個虛擬用戶并發,如果手動去準備這些數據就很麻煩。因此對于并發度較高的業務,我們可以采用數據庫后臺對可用數據進行數據翻倍的方式來完成,也可以通過LoadRunner執行并發測試來完成,例如可以通過執行用戶注冊并發測試來完成新用戶創建。
下面舉例說明如何創建并發所需的登錄帳戶,首先需要根據系統實際情況整理出來相應的表關系圖,將系統中常用的工作人員、操作員、角色等表的關系圖理清楚,下圖1是人員、操作員、角色、權限的表關系示意圖:
圖1:表關系圖
理清楚表關系圖中的對應關系后,可以根據并發需要準備相應的后臺sql來完成操作,下圖為中國軟件評測中心在執行性能測試項目的過程中通過后臺批量創建登錄帳戶、生成工作人員、操作員及對應權限的sql示例:
圖2:后臺創建登錄賬戶示例
上述方法不僅適用于參數化數據的準備,同樣也適用于基礎數據的準備,我們可以根據項目的實際情況來使用,可以達到快速準備測試數據的目標。
本文重點介紹了中國軟件評測中心在實施性能測試項目過程中進行數據準備的通常做法,具體介紹了需要準備的測試數據類型及準備數據的常用方法,結合這些理論和方法將使我們性能測試數據準備工作實施的更具系統性,同時也能夠使測試結果更加接近真實生產環境下的結果。