天天看點

性能測試資料準備-埋數篇

性能測試準備階段一般需要提前将資料準備好,用于腳本的參數化以及後面壓測。

性能測試資料一般分為存量資料和交易資料。存量資料為曆史記錄資料,一般較大。交易資料的資料量則需滿足壓測時的需求,要足夠多。

資料準備一般有以下方法:

    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); (傳入參數值回車執行)