Loadrunner檢查點使用總結


在使用Loadrunner進行性能測試中,有時需要對性能測試中的功能是否全部正確進行判斷。這里就需要用到“檢查點”,本文總結了常用三種協議下檢查點的使用方法,希望閱讀本文后的同事能夠掌握其使用方法,並靈活應用在實際項目中。

1. HTTP協議

HTTP協議中檢查點有兩種:圖片和文字。這兩種檢查點可用以下三個函數實現:web_find()、web_reg_find()和web_image_check(),下面介紹三種函數的使用方法。

1.1  web_find()函數

函數的作用是“在頁面中查找相應的內容”,常用參數及含義如下:

web_find("web_find",   //定義該查找函數的名稱

"RightOf=a",      //定義查找字符的右邊界

"LeftOf=b",       //定義查找字符的左邊界

"What=name",     //定義查找內容

LAST);

使用該函數注意以下事項:

  • 位置

該函數在頁面內容顯示出來以后,在頁面中進行查找,所以只能寫在要查找內容之后

  • 錄制模式

該函數只能在基於HTML模式錄制的腳本中進行查找

  • 必須啟用內容檢查選項

在Runtime setting->Preferences里面,把Enable image and text check選中,否則不執行該查找函數

啟用內容檢查選項

  • 在VB和JAVA語法中不支持該函數

該函數還有以下缺點:

  •  執行效率較低
  •  不返回查找結果情況,如果想在執行該函數后根據查找結果做進一步操作時,沒有返回值可以依據。
  • 例如:在頁面中查找“登錄成功”的字符串,如果找到該字符串在日志中輸出“登錄成功”,如果找不到該字符串,則在日志中輸出“登錄失敗”,此時使用該函數沒有依據來做此判斷,但使用web_reg_find()函數,使用它其中的SaveCount可以進行判斷,具體方法我們下面介紹。

1.2 web_reg_find()函數

函數的作用是“在緩存中查找相應的內容”,常用參數及含義如下:

web_reg_find("Search=Body",  //定義查找范圍

"SaveCount=count",            //定義查找計數變量名稱

"Text=test",                 //定義查找內容

LAST);

使用該函數注意以下事項:

  • 位置

該函數寫在要查找內容的請求之前,通常情況下寫在如下六個函數之前:Web_castom_request();web_image();web_link();web_submit_data();web_submit_form();web_url()

  • 使用技巧

該函數中的“SaveCount”參數可以記錄在緩存中查找內容出現的次數,我們可以使用該值,來判斷要查找的內容是否被找到,下面舉個例子來說明:(引用LR的幫助中的例子)

// Run the Web Tours sampleweb_url("MercuryWebTours",

 

"URL=http://localhost/MercuryWebTours/",

"Resource=0",

"RecContentType=text/html",

"Referer=",

"Snapshot=t1.inf",

"Mode=HTML",

LAST);

// Set up check for successful login by looking for "Welcome"

web_reg_find("Text=Welcome",

"SaveCount=Welcome_Count",

LAST);

// Now log in

web_submit_form("login.pl",

"Snapshot=t2.inf",

ITEMDATA,

"Name=username", "Value=jojo", ENDITEM,

"Name=password", "Value=bean", ENDITEM,

"Name=login.x", "Value=35", ENDITEM,

"Name=login.y", "Value=14", ENDITEM,

LAST);

// Check result

if (atoi(lr_eval_string("{Welcome_Count}")) > 0)

//判斷如果Welcome字符串出現次數大於0

{ lr_output_message("Log on successful."); }

//在日志中輸出Log on successful

else

//如果出現次數小於等於

{lr_error_message("Log on failed");}

//在日志中輸出Log on failed

return(0);         }

1.3  web_image_check()函數

函數作用:在頁面中查找一個具體的圖片,常用參數及含義如下:

web_image_check("web_image_check", //函數標題

"Alt=", //圖標說明

"Src=", //圖片鏈接地址

LAST);

使用該函數注意以下事項:

  • “Alt”和“Src”的值直接取該圖片在網頁源代碼中相應參數的值
  • 該函數是在緩存中查找相應的內容,所以要放在查找內容之前
  • 使用該函數時,同樣需要在Vuser->Run-Tme Settings中勾選Enable Image and text check

下面是應用實例:

#include "web_api.h"Action(){web_url("www.google.cn","URL=http://www.google.cn/","Resource=0","RecContentType=text/html",

 

"Referer=",

"Snapshot=t1.inf",

"Mode=HTML",

EXTRARES,

LAST);

web_image_check("web_image_check",

"Src=/intl/zh-CN/images/logo_cn.gif",

"Alt=Google",

LAST);

return 0;}

LoadRunner執行后日志記錄如下:

Action.c(20): "web_image_check" succeeded (1 occurrence(s) found. Alt="Google", Src="/intl/zh-CN/images/logo_cn.gif")   [MsgId: MMSG-27192]Action.c(20): web_image_check was successful   [MsgId: MMSG-26392]

1.4 插入函數的方法

  • 手工寫入,在需要插入函數的位置手工寫入該函數
  • 光標停留在要插入函數的位置,在INSERT菜單中,選擇New step,在列表中選擇或查找要插入的函數,根據提示填寫必要的參數
  • 在Tree view模式下,在樹狀菜單中選中要插入函數的位置,右鍵,選擇Insert after或Insert before,根據提示填寫必要的參數

1.5小結

  • WEB_FIND與WEB_REG_FIND函數類型不同,WEB_FIND是普通函數,WEB_REG_FIND是注冊函數
  • WEB_FIND使用時必須開啟內容檢查選項,而WEB_REG_FIND則不沒有此限制
  • WEB_FIND只能只用在基於HTML模式錄制的腳本中,而WEB_REG_FIND沒有此限制
  • WEB_FIND是在返回的頁面中進行內容查找,WEB_REG_FIND是在緩存中進行查找
  • WEB_FIND在執行效率上不如WEB_REG_FIND
  1. 2.    SocketWebservice協議

由於Socket協議與Webservice協議中檢查點設置方法基本一致,本文主要以實例來逐一說明。

實例1Socket協議

Socket協議測試腳本如下:

#include "lrs.h"Action()

 

{intsc=0;

lr_start_transaction("BIG1");

//建立socket鏈接

sc = lrs_create_socket("socket1","TCP","RemoteHost=192.168.85.247:26001",LrsLastArg);

if (sc == 0)

lr_output_message("Socket  was successfully created ");

else

lr_output_message("An error occurred while creating the socket, Error Code: %d", sc);

//發送socket請求,接收socket返回結果

lrs_send("socket1", "buf0", LrsLastArg);

lrs_receive("socket1", "buf1", LrsLastArg);

//保存socket返回結果至參數Res_BIG1中

lrs_save_param_ex("socket1", "received", "buf1", 0, lrs_get_last_received_buffer_size("socket1"),NULL, "Res_BIG1");

//關閉socket鏈接

lrs_disable_socket("socket1", DISABLE_SEND);

lrs_close_socket("socket1");

//判斷Res_BIG1參數中是否有"content-length: 10"字段

if((strstr(lr_eval_string("<Res_BIG1>"),"content-length: 10"))==NULL)

{

lr_error_message("-------%s",lr_eval_string("<Res_BIG1>"));

lr_end_transaction("BIG1",LR_FAIL);

}

else

{

lr_output_message("-------%s",lr_eval_string("<Res_BIG1>"));

lr_end_transaction("BIG1",LR_PASS);

}

return 0;

}

實例2Webservie協議

Webservice性能測試腳本如下:

Action(){lr_start_transaction("SaveSession");

 

web_service_call( "StepName=SubmitNLSMS",

BEGIN_ARGUMENTS,

"inputXML=<mobileno>{UserNO}</mobileno><smscontent>hi </smscontent>",

END_ARGUMENTS,

BEGIN_RESULT,

"SubmitNLSMSRequestResult=SubmitSMSResult1", //保存返回結果至參數中

END_RESULT,

LAST);

//判斷返回結果

if((strstr(lr_eval_string("{SubmitSMSResult1}"),"Hello World"))==NULL)

{

lr_error_message("-------%s",lr_eval_string("{UserNO}"));

lr_error_message("-------%s",lr_eval_string("{SubmitSMSResult1}"));

lr_end_transaction("SaveSession",LR_FAIL);

}

else

{

lr_output_message("-------%s",lr_eval_string("{UserNO}"));

lr_output_message("-------%s",lr_eval_string("{SubmitSMSResult1}"));

lr_end_transaction("SaveSession",LR_PASS);

}

return 0;

}

2.1 小結

使用“檢查點”,首先需要得到“返回結果”,將該返回結果保存至參數中

對返回結果進行判斷,這里可能需要用到lr_eval_string(), atoi(), strstr()等函數

相關函數說明:

  • lr_eval_string()函數作用是取得參數值,將字符串變量中的參數值替換為當前的參數值並將這個字符串返回
  • atoi()函數的作用是將一個ASCII字符串轉換為整型
  • strstr()函數格式為strstr(str1,str2),其中str1: 被查找目標string expression to search,str2:要查找對象The string expression to find.該函數返回str2第一次在str1中的位置,如果沒有找到,返回NULL


免責聲明!

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



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