Loadrunner 參數化&參數化策略&參數化mysql


  參數化的意義不再贅述,參數化有兩種情況:

  1.后台(應用程序和數據庫)對請求里的參數值限制了唯一性,說白了就是功能里要求的不能重復的參數,如果有這類唯一性校驗的參數就需要參數化;

  2.避免因數據庫查詢緩存而導致性能測試結果的失真;

    這里的數據庫查詢緩存是指在該條請求之前,數據庫已經有該條請求結果數據存在緩存里,當在此請求時,數據庫首先會去緩存里找要執行的查詢sql,找到了直接就返回了數據,不必要后面很多方所得操作;

    顯然這種情況下的性能執行結果要比沒有緩存的結果快的多,所以存在性能結果失真的問題。,孤兒我們要參數化,請求不同的數據。

    關於數據庫的sql執行原理,這里不再贅述,以后在性能調優的時候再研究,暫時參考:http://blog.csdn.net/wanghjbuf/article/details/50792970

  3.當參數不是一個常量,不同情況下值有變化,比如IP地址,就可以參數化,當IP變了后我改下參數就可以,沒必要每次去修改腳本里的地址,便於維護代碼。

  參數化又有不同的方法,基本都大同小異,在參數化之前可以思考下,怎樣降低參數化操作的可能性,可以圍繞上述說的幾點:1.測試的時候取消數據庫和應用程序的唯一性校驗;2.測試的時候關閉數據庫的緩存功能。

  這里介紹兩種,一種是直接邊界參數,還有一種是操作數據庫,從數據庫里導入數據。

  下面主要介紹多列參數一一對應時的參數化,比如這里需要參數化四個參數,這四個參數是一一對應的:用戶名、密碼、確認密碼、郵箱,參數化步驟如下:

  1.選中需要參數化的對象,右鍵,點擊【Replace with a new parameter

 

  2.點擊【browser】,在腳本目錄下新建params目錄,用來存放這個腳本的所有參數化數據,選中目錄后,點擊【create table

 

  3.點擊【edit with notpad】打開記事本,在記事本里輸入參數(換行分割),關閉記事本,關閉參數化屬性,點擊【OK】,這樣username就參數化好了

 

  4.選中密碼,重復上述步驟1,進入參數屬性頁面,選中剛才創建好的Newparam文件,點擊【add colum】,點擊【OK】

  5.點擊【edit with notpad】打開記事本,逗號后面輸入密碼參數,保存關閉記事本,關閉參數屬性,點擊【OK】

  確認密碼、郵箱同步驟五,都創建好后我們來看下參數化策略;

  Select next row【選擇下一行】

  

  1.順序(Sequential):按照參數化的數據順序,一個一個的來取。
  2.隨機(Random):參數化中的數據,每次隨機的從中抽取數據。
  3.唯一(Unique):為每個虛擬用戶分配一條唯一的數據

 

  Update value on【更新時的值】

  

  每次迭代(Each iteration) :每次迭代時取新的值,假如50個用戶都取第一條數據,稱為一次迭代;完了50個用戶都取第二條數據,后面以此類推。

  每次出現(Each occurrence):每次參數時取新的值,這里強調前后兩次取值不能相同。

  只取一次(once) :參數化中的數據,一條數據只能被抽取一次。(如果數據輪次完,腳本還在運行將會報錯)

  組合起來就有9種策略,如下:

Select Next Row

【選擇下一行】

Update Value On

【更新時的值】

Replay Result

【結果】

順序(Sequential)

每次迭代(Each iteration)

結果:分別將15條數據寫入數據表中

功能說明:每迭代一次取一行值,從第一行開始取。當所有的值取完后,再從第一行開始取

如:如果參數化文件中有15條數據,而迭代設置為16次,那執行結果中,參數化文件第一行的數據有兩條

順序(Sequential)

每次出現(Each occurrence)

結果:分別將15條數據寫入數據表中

功能說明:每迭代一次取一行值,從第一行開始取。當所有的值取完后,再從第一行開始取

如:如果參數化文件中有15條數據,而迭代設置為16次,那執行結果中,參數化文件第一行的數據有兩條

順序(Sequential)

只取一次(once)

結果:表中寫入15條一模一樣的數據。

功能說明:每次迭代都取參數化文件中第一行的數據。

隨機(Random)

每次迭代(Each iteration)

結果:表中寫入15條數據,但可能有重復數據出現

功能說明:每次從參數化文件中隨機選擇一行數據進行賦值

隨機(Random)

每次出現(Each occurrence)

結果:表中寫入15條數據,但可能有重復數據出現

功能說明:每次從參數化文件中隨機選擇一行數據進行賦值

隨機(Random)

只取一次(once)

結果:表中寫入15條相同數據

功能說明:第一次迭代時隨機從參數化文件中取一行數據,后面每次迭代都用第一次迭代的數據。

唯一(Unique)

每次迭代(Each iteration)

自動分配塊大小

結果:分別將15條數據寫入數據表中

功能說明:第一次迭代取參數化文件中的第一條數據,第二次迭代取第二條數據,以此類推。

注:如果設置迭代次數為16次。結果:在執行第16次迭代時會拋異常,異常日志可在LoadRunner的回放日志(replayLog)中看到。

唯一(Unique)

每次出現(Each occurrence)

步長為1

結果:分別將15條數據寫入數據表中

功能說明:第一次迭代取參數化文件中的第一條數據,第二次迭代取第二條數據,以此類推。

注:如果設置迭代次數為16次,而參數化文件中只有15條數據,明顯數據不夠。此時可以設置“when out of values”屬性來判斷當數據不夠時的處理方式

Abort Vuser:中斷虛擬用戶

Countinue in a cylic manage:循環取參數化文件中的值,即:當參數化文件中的值取完后又從參數化文件的第一行開始取值。

Countinue with last value:繼續用最后一條數據

唯一(Unique)

只取一次(once)

結果:表中寫入15條相同數據

功能說明:每次都取參數文件中的第一條數據進行賦值


  綜上所述,我們這里的注冊需要每次的數據都不一樣,那么我們就選第7中策略,Unique+Each iteration,用戶一第一次迭代取參數化文件中的第一條數據,第二次迭代取第二條數據;用戶二第一次迭代取參數化文件中的第三條數據,第二次迭代取第四條數據,以此類推。當迭代次數大於參數化數據時會報錯,設置如下:

  Tips:因為這里,每個迭代內值調用了一次參數,所以選Each iteration(每個迭代),如果這個迭代里調用兩次參數,那么需要選(Each occurrence),意思是每次迭代里的每次參數都需要不一樣。

  

  

  接下來介紹下從數據庫里導入參數,因為sql server百度里已經有很多介紹,這里不再贅述,主要講下mysql,mysql的數據庫驅動需要自己安裝,這里給個路徑,大家上官網上下就行:

  https://dev.mysql.com/downloads/connector/odbc/

  下載好后按默認的設置安裝完成即可,這里我們拿登錄舉例,我們直接從數據庫里查詢到用戶名作為參數。

  1.參照上面的第一步,進入參數屬性頁面,依次按下圖所示點擊

 

  2.繼續依次按下圖所示點擊

 

  3.選中剛才安裝的mysql驅動,點擊下一步,點擊完成

 

  4.數據庫信息如下填寫,測試成功后,點擊【OK】,【確定】,知道回到步驟五的界面

 

  5.sql中輸入查詢語句,點擊【finish】后,參數化就成功了

 

  以上就是鄙人對參數化的粗淺認識,如若有不妥之處還望指正,感謝!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM