需求要求:這兩天試用Windows sockets 協定編寫腳本,突然說要測試應用服務壓力,後面與開發協商是用http協定之後,沒有腳本可以錄制,從loadrunner自帶函數查可以使用web_custom_request函數編寫,之後通過火狐插件:HttpRequester參考,再加網上前輩提供幫助,之後編寫如下腳本:
測試并且通過。
發現問題,在loadrunner中壓測能傳回封包,并且查找條件也能正确。但發現資料庫查出結果,中文出現亂碼;希望誰能指點下;
Action()
{
char* Recode="000000"; //增加判斷正确條件
char* WebRecode; //定義關聯函數取值
web_reg_save_param("yanz",
"LB=<RetCode>",
"RB=</RetCode>",
LAST);
web_reg_find("Text=<RetCode>000000</RetCode>",
LAST);
lr_start_transaction("ABC_試算");
web_custom_request("web_custom_request",
"URL=【ip】", //封包IP位址
"METhod=post",
"Resource=0",
"Referer=",
"Mode=HTML",
"RecContentType=application/json",
"EncType= text/xml;charset=UTF-8",
"Body=<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
//封包内容
"<ABCB2I>"
"<Header> "
"<TransDate>20151102</TransDate> "
"<TransTime>140854</TransTime>
"<TransCode>1002</TransCode> "
"<ProvCode>11</ProvCode "
"<SerialNo>111113396600{SerNn}</SerialNo> "
........................
"</App>"
"</ABCB2I>", LAST);
WebRecode = lr_eval_string( "{yanz}" ) ;
if(strcmp(Recode,WebRecode)==0) //試用判斷函數
{
lr_end_transaction("ABC_試算", LR_PASS);
}
else
lr_end_transaction("ABC_試算", LR_FAIL);
lr_output_message( "We are on iteration #%s", lr_eval_string( "{yanz}" ) ); }
return 0;
}
//字元串比較判斷。
if(strcmp(lr_eval_string("{www}"),"登陸成功")==0)
{
lr_end_sub_transaction("login",LR_PASS);
}
else
lr_end_sub_transaction("login",LR_FAIL);
注:
<code>extern</code> <code>int</code> <code>strcmp</code><code>(</code><code>const</code> <code>char</code> <code>*s1,</code><code>const</code> <code>char</code> <code>*s2);</code>
<code>當s1<s2時,傳回為負數 當s1=s2時,傳回值= 0 當s1>s2時,傳回正數</code>
<code>即:兩個字元串自左向右逐個字元相比(按ASCII值大小相比較),直到出現不同的字元或遇'\0'為止。如: "A"<"B" "a">"A" "computer">"compare" 特别注意:strcmp(const char *s1,const char * s2)這裡面隻能比較字元串,即可用于比較兩個字元串常量,或比較數組和字元串常量,不能比較數字等其他形式的參數。 ANSI标準規定,傳回值為正數,負數,0 。</code>
謝謝小強老師的借口測試視訊,謝謝前輩們的指點。
願大家能平安健康如意;
本文轉自 知止内明 51CTO部落格,原文連結:http://blog.51cto.com/357712148/1721304,如需轉載請自行聯系原作者