性能測試準備階段一般需要提前将資料準備好,用于腳本的參數化以及後面壓測。
性能測試資料一般分為存量資料和交易資料。存量資料為曆史記錄資料,一般較大。交易資料的資料量則需滿足壓測時的需求,要足夠多。
資料準備一般有以下方法:
1.直接導入已有的資料庫;(實際情況不會有大量資料的資料庫,客戶生産環境的資料庫一般不允許導出)
2.用工具直接産生記錄,比如壓測腳本或者其他造數工具;
适用于測試點連貫的性能測試,可以用壓測腳本産生所需要的資料;
3.編寫資料庫存儲器埋數;
可直接将資料埋造于目前節點,不需要前置流轉。
這裡講解下第三種方式埋數。
編寫資料庫存儲器埋數前期準備:
1.頁面測試點準備一條模闆資料;
2.日志級别設定為可列印sql的級别;
3.先查詢目前節點記錄,記錄背景sql相關表及記錄狀态,然後操作模闆記錄到下一節點,記錄過程中涉及相關表記錄;
這期間可借助工具将該記錄導出sql檔案,比如PLSQL等;
4.通過上一步可得到測試點資料涉及的表及狀态;(亦可直接從開發得到相關sql)
5.根據前面得到的sql,将各個sql的字段進行變量參數化,以保證唯一。比如id,sql之間關聯字段等;
使用notepad++打開導出的sql檔案,彙總導出的sql;
選中字段值,notepad++會高亮顯示其他位置關聯的值;
Ctrl+h 對id等關聯字段值進行變量替換。
6.Sql變量參數化後,套入存儲器模闆,進行局部調整即可;
7.維護變量參數化取值區間表格,防止多個測試點埋數沖突。
存儲器模闆:
----------------------oracle-------------------------
create or replace procedure 存儲器名(x in number,y in number) is
j number;
i number;
begin
j:=0;
i:=1;
while j<x loop
------------------------------------------外循環sql
while i<=y loop
------------------------------------------内循環sql
i:=i+1;
end loop;
commit;
i:=1;
j:=j+1;
end loop;
end;
/
------------------DB2----------------------
--/
create or replace procedure 存儲器名(in x bigint,in y bigint)
begin
declare j bigint;
declare i bigint;
set j=0;
set i=1;
while j<x do
------------------------------------------外循環sqlsql
while i<=y do
------------------------------------------内循環sql
set i=i+1;
end while ;
commit;
set i=1;
set j=j+1;
end while ;
end
/
Oracle存儲器在command視窗 sql> 粘貼回車執行
exec 存儲器名(x,y); (傳入參數值回車執行)
DB2存儲器在工具視窗粘貼回車執行
Call存儲器名(x,y); (傳入參數值回車執行)