亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

LoadRunner性能測試-上傳文件腳本

發布時間:2020-03-25 09:19:44 來源:網絡 閱讀:3385 作者:qinyan20121209 欄目:軟件技術


LR上傳文件腳本詳解

腳本

char *fr(char *filename){

    longupfile ;    //定義文件句柄

    intcount ;      //定于文件長度

    intnFileLen;    //定義文件長度

    char*buffer;

    upfile= fopen(filename,"rb"); //以只讀方式打開二進制文件,將upfile指向該文件

 

   fseek(upfile,0,2);          //將文件指針移動到文件尾

    nFileLen= ftell(upfile);      //獲得文件尾到文件頭的偏移字節數,即文件所包含字節數

    fseek(upfile,0,0);          // 將文件指針移動到文件頭

    lr_output_message("nFileLen:%d",nFileLen);    //打印文件字節數

 

    buffer= (char*)malloc(nFileLen);    //分配長度為nfilelen的內存塊

    count= fread(buffer, sizeof(char),nFileLen, upfile); //將upfile指向的文件所包含字節數的所有數據項讀入到buffer中,并返回數據項的字節數,及文件長度

 

    lr_output_message("count:%d",count);  //打印讀入文件的字節數

    lr_save_int(count,"fbuff");  //將文件長度賦值給fbuff

    lr_save_int(count-1,"fcurr");  //將文件長度-1賦值給fcurr

    returnbuffer;  //返回讀取的文件

}

vuser_init()

{

    lr_save_string(fr("E:\\FS\\testfile\\55.txt"),"fdata");//將讀取的文件存到fdata變量中

    return0;

}

 

 

Action()

{

/*上傳文件*/

    lr_think_time(3);

    lr_start_transaction("hdupfile");

 

    web_add_header("Content-Disposition","p_w_upload;filename=\"testdata.rar\"");

    web_add_header("X-Content-Range","bytes0-{fcurr}/{fbuff}");

    web_add_header("Session-ID","{userid}");

    web_add_header("Content-Type",  "application/octet-stream");

 

    web_custom_request("hdup",

    "URL=http://10.255.0.149/upload?userId={userid}&bigmd5={userid}&taskId={userid}&offset=0",

        "Method=POST",

        "Resource=0",

        "Referer=",

        "Mode=HTML",

        "Body={fdata}",

        LAST);

    lr_end_transaction("hdupfile",LR_AUTO);

return 0;

}

 

vuser_end()

{

    return0;

}

 

 

知識點:

C語言讀寫文件

  1. 1.  Fopen

作用:   第一個參數是指向一個文件,如果當前文件不存在,系統會創建這個文件名。第二個參數是對這個文件進行的操作。例如,只讀,讀寫,寫等。

Fopen函數原型:

文件指針名=fopen(文件名,使用文件方式)

其中:

文件指針名:必須被指明為FILe類型的指針變量

文件名:被打開文件的文件名,是字符串常量或字符串數組

使用文件方式:是指文件的類型和操作文件的方式

例如:在當前目錄打開文件file a,只運行進行讀操作,并時fp指向該文件
FILE *fp;
fp=("file a","r");


使用文件的方式共有12種,下面給出了它們的符號和意義。
“rt” :只讀打開一個文本文件,只允許讀數據
“wt”: 只寫打開或建立一個文本文件,只允許寫數據
“at”:追加打開一個文本文件,并在文件末尾寫數據
“rb”:只讀打開一個二進制文件,只允許讀數據
“wb”:只寫打開或建立一個二進制文件,只允許寫數據
“ab”:追加打開一個二進制文件,并在文件末尾寫數據
“rt+”:讀寫打開一個文本文件,允許讀和寫
“wt+”:讀寫打開或建立一個文本文件,允許讀寫
“at+”:讀寫打開一個文本文件,允許讀,或在文件末追加數據
“rb+”:讀寫打開一個二進制文件,允許讀和寫
“wb+”:讀寫打開或建立一個二進制文件,允許讀和寫
“ab+”:讀寫打開一個二進制文件,允許讀,或在文件末追加數據


把一個文本文件讀入內存時,要將ASCII碼轉換成二進制碼,而把文件以文本方式寫入磁盤時,也要把二進制碼轉換成ASCII碼,因此文本文件的讀寫要花費較多的轉換時間。對二進制文件的讀寫不存在這種轉換。


  1. 2.  Fseek函數

作用:用于二進制方式打開的文件,移動文件讀寫指針位置,通常文件打開后,讀寫位置按先后順序.但有時你想變動讀寫位置,例如重新從某處起,再讀一次.


Fseek函數原型:int fseek(FILE *stream,long offset,int origin)

第一個參數stream為文件指針
第二個參數offset為偏移量,整數表示正向偏移,負數表示負向偏移
第三個參數origin設定從文件的哪里開始偏移,取值為:SEEK_CUR、SEEK_END 或SEEK_SET
SEEK_SET: 文件開頭
SEEK_CUR: 當前位置
SEEK_END: 文件結尾
其中SEEK_SET,SEEK_CUR和SEEK_END和依次為0,1和2.
簡言之:
fseek(fp,100L,0);把fp指針移動到離文件開頭100字節處;
fseek(fp,100L,1);把fp指針移動到離文件當前位置100字節處;
fseek(fp,100L,2);把fp指針退回到離文件結尾100字節處。


  1. 3.  Ftell函數

Ftell函數原型:long int ftell ( FILE * stream );

作用:用于獲得文件位置指針當前位置相對于文件首的偏移字節數。在隨機方式取文件時,由于文件位置頻繁的前后移動,程序不容易確定文件的當前位置。調用ftell函數就能非常方便地確定文件位置

利用ftell函數也能方便地知道文件的長度,如:

Fsekk(fp,0,2)//將fp文件指針移動到文件結尾

Len=ftell(fp)    //獲得從文件結尾到文件首的偏移字節數,該字節數相當于文件所含字節數




  1. 4.  Malloc函數

函數原型:extern void *malloc(unsignedint num_bytes);

malloc的語法是:指針名=(數據類型*)malloc(長度),


作用:分配長度為num_bytes字節的內存塊  說明:如果分配成功則返回指向被分配內存的指針,否則返回空指針NULL。 當內存不再使用時,應使用free()函數將內存塊釋放。


  1. 5.  fread函數和fwrite函數

功能:用來讀寫一個數據塊。

函數原型:

Fread(buffer,size,count,fp)

Fwrite(buffer,size,count,fp)

說明:

(1)buffer:是一個指針,對fread來說,它是讀入數據的存放地址。對fwrite來說,是要輸出數據的地址。

(2)size:要讀寫的字節數;

(3)count:要進行讀寫多少個size字節的數據項;

(4)fp:文件型指針。


LR函數

  1. 1.  lr_save_int(intvalue,const char * param_name)

功能,轉換整型為字符串型,并將字符串值存到參數中。

  1. 2.  lr_save_string(const char *param_value, const char *param_name)

功能:將指定以Null結束的字符串賦值給參數


  1. 3.  web_add_header(constchar * Head, const char * Content)

功能:對于下一個web request,指定請求頭


  1. 4.  web_custom_request(constchar *RequestName, <List of Attributes>, [EXTRARES, <List of ResourceAttributes>,] LAST );

返回值:
返回LR_PASS(0)代表成功,LR_FAIL(1)代表失敗。

功能:允許使用任何方法和請求體創建自定義的HTTP請求。默認情況下,當VuGen無法使用其他函數解釋用戶請求時,會生成此函數。

所有的Web Vusers ,運行在HTTP模式或者Wireless Session Protocol (WSP) 回放模式下的WAPVusers都支持web_custom_request函數。


參數:

RequestName步驟的名稱,VuGen中樹形視圖中顯示的名稱。


List of Attribute支持的屬性有以下幾種:

  • URL:頁面地址。

  • Method:頁面的提交方式,POST或GET。

  • TargetFrame:包含當前鏈接或資源的frame的名稱。

  • EncType:編碼類型。比如,text/html, 在請求頭里被指定為的content-type的值。如果在消息頭里指定了content-tpye,但是該content-tpye不匹配body會導致服務器端的錯誤。因此建議不要修改錄制得到的enctype

任何對于“EncType”的指定都會覆蓋web_add_[auto_]header函數指定的Content-Type。當指定了“EncType=” (空值)時,不會產生“Content-Type” 請求頭。當省略了“EncType”時,任何一個web_add_[auto_]header函數都會起作用。如果既沒有指定EncType也沒有web_add_[auto_]header函數,且“Method=POST”“application/x-www-form-urlencoded”會做為默認值來使用。其他情況下,不會產生Content-Type請求頭。

僅僅當Recording Options--Recording --HTML-based script-- Recordwithin the current script step選項被選中時,List of Resource Attributes才會被插入到代碼中。

  • RecContentType:錄制腳本時響應頭的內容類型。例如text/html application/x-javascript等。當沒有設置Resource屬性時,用它來確定目標URL是否是可記錄的資源。此屬性包含主要的和次要的資源。最頻繁使用的類型是 textapplicationp_w_picpath。次要的類型根據資源不同變化很多。例如:"RecContentType=text/html":表示html文本。"RecContentType=application/msword":表示當前使用的是Msword

  • Referer:當前頁面關聯的頁面。如果已經顯式指定了url的地址,此項可以省略。

  • Body:請求體。

Body:表示規則的,可打印的字符串。無法表示空字節。所有的字符都以一個反斜杠表示。注意:在舊的腳本中,可以看見不可打印的字符在請求體中以16進制方式進行編碼。(例如 “\\x5c”),在這種情況下,必須使用“Binary=1”來標識。空字節使用"file://0.0.0.0/"來表示。相反,新腳本則會把把請求體分開放在不同的參數中("Body=...","BodyBinary=...", Body=...")。

BodyBinary :表示二進制代碼。不可打印的字符在請求體中以16進制方式file://xhh/進行編碼。在這里HH 表示十六進制值。空字節使用"file://0.0.0.0/"來表示。

BodyUnicode:美國英語,特指拉丁 UTF-16LElittle-endian)編碼。這種編碼方式會在在每個字符末尾附加一個0字節,以便使字符更可讀。但是在VuGen中實際的參數把所有的0字節都去掉的。但是在發送給Web 服務器之前, web_custom_request函數會重新添加0字節的。對于不可打印的字符,使用單反斜杠表示,無法表示空字節。

注意:如果請求體大于100K,會使用一個變量來代替Body參數。變量是在 lrw_custom_body.h中定義的。

  • RAW BODY:(目前僅適用與web_custom_request函數):請求體是作為指針傳遞的,此指針指向一串數據。二進制的請求體可以使用BodyBinary 屬性來發送(或者使用Body 屬性來傳遞,前提是必須設置"Binary=1" )。無論如何,這種方法需要使用轉義字符反斜杠把不可打印的字符轉換為ASCII字符。為了能有一種更簡便的表現原始數據的方式,Raw Body屬性應運而生,可以傳遞指向二進制數據的指針。

  • BodyFilePath:作為請求體傳送的文件的路徑。它不能與下面的屬性一起使用:Body,或者其他Body屬性或Raw Body屬性包括BodyBinaryBodyUnicode RAW_BODY_STARTBinary=1

  • Resource 指示URL是否屬于資源。1 是;0 不是。設置了這個參數后,RecContentType參數被忽略。“Resource=1”,意味著當前操作與所在腳本的成功與否關系不大。在下載資源時如果發生錯誤,是當作警告而不是錯誤來處理的;URL是否被下載受“Run-Time Setting—BrowserEmulation--Download non-HTML resources” 這個選項的影響。此操作的響應信息是不做為HTML來解析的。“Resource=0”,表明此URL是重要的,不受發送請求(RTS)的影響,在需要時也會解析它。

 

  • ResourceByteLimit:在HTTP模式中無法使用,在Concurrent GroupsVuser腳本中的一個區,此區中的所有函數并發執行)區中也無法使用。僅僅適用于Sockets的回放,WinInet也是不適用的。

 

  • Snapshot:快照的文件名,關聯時使用。

 

  • Mode:兩種錄制級別HTMLHTTP

HTML級別:在當前Web界面上錄制直觀的HTML動作。以一步步的web_urlweb_link  web_p_w_picpathweb_submit_form來錄制這些動作。VuGen僅僅錄制返回HTML頁面的請求,不處理腳本和應用程序。

HTTP級別:VuGen把所有的請求錄制為web_url指令,不生成web_linkweb_p_w_picpathweb_submit_form這些函數。這種方法更為靈活,但是生成的腳本不夠直觀。


  • ExtraResBaseDir:(目前僅適用與web_custom_request函數):根URL,放在EXTRARES組里。它是用來解析相對URL的(譯者加:類似于Windows的相對路徑和絕對路徑)。

URL可以是絕對路徑(例如http://weather.abc.com/weather/forecast.jsp?locCode=LFPO),也可以是相對路徑(例如“forecast.jsp?locCode=LFPO”)。

真正的URL的下載是通過絕對路徑進行的,所以相對URL路徑必須使用根路徑URL去解析。例如,使用http://weather.abc.com/weather/做為根路徑來解析“forecast.jsp?locCode=LFPO”,最后的URL是:http://weather.abc.com/weather/forecast.jsp?locCode=LFPO。如果沒有指定“ExtraResBaseDir”,默認的根URL是主頁面的URL


  • UserAgent:用戶代理,它是一個HTTP頭的名字,用來標識應用程序,通常是瀏覽器,它呈現的是用戶和服務器的交互。

例如:頭信息“User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; WindowsNT 5.0)”識別的是Window NT下的IE瀏覽器6.0。其他的User-Agent的值用來描述其他的瀏覽器,或者非瀏覽器程序。通常,一個應用程序中所有的請求都使用相同的用戶代理,錄制者作為一個運行時參數來指定(Run-Time Setting—Browser Emulation—UserAgent)。不管怎么說,即使是在一個簡單的瀏覽器進程中,仍有可能會用到直接與服務器交互的非瀏覽器組件(例如ActiveX控件),通常他們有著不同于瀏覽器的用戶代理屬性。指定“UserAgent”表示這是一個非瀏覽器的請求。指定的字符串被HTTP“User-Agent:” 使用,在某些情況下,它同時會影響回放腳本時的行為。例如,不使用瀏覽器緩存,假設指定的URL屬于資源等等。

LoadRunner本身不檢查指定的字符串與瀏覽器本身的值是否相同。

  • Binary“Binary=1”表示頁面請求體中的每一個以file://x/##形式出現的值(在這里“##”代表2個十六進制數字),都會被替換為單字節的十六進制的值。

如果“Binary=0”(默認值),所有的字符序列只是按照字面的值傳遞。

需要注意雙斜杠的用法。在C編譯器中雙斜杠被解釋為單斜杠。如果不需要零字節,單斜杠可以在Binary不等于1的情況下使用(例如,使用\x20代替file://x20/)。如果需要零字節,那么只能使用file://x00/且設置 “Binary=1”\x00在邏輯上會被截斷


  • ContentEncoding:指定請求體使用指定的方式(gzip或者deflate)進行編碼(例如,壓縮),相應的“Content-Encoding:” HTTP頭會和此請求一起發送。這個參數適用于web_custom_requestweb_submit_data

  • EXTRARES:表明下面的參數將會是List Of Resource Attributes了。 

  • LAST :結尾的標示符。

 List of Resource  Attributes
Web
頁面中的非HTML機制產生了資源列表,包含了Javascript, ActiveX, Java applets andFlash所請求的資源。VuGen's Recording 選項中,可以設置把這些資源錄制在當前的操作中(默認是此設置)還是作為單獨的步驟來錄制。

 

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

康定县| 河间市| 汤原县| 深圳市| 项城市| 颍上县| 聂拉木县| 庆云县| 阳城县| 东乌珠穆沁旗| 和平区| 贡嘎县| 庆阳市| 调兵山市| 米林县| 邯郸县| 邵阳县| 旬邑县| 东源县| 大理市| 竹北市| 英超| 天镇县| 乾安县| 登封市| 台中县| 南昌市| 三门县| 山东| 吴旗县| 黎川县| 门头沟区| 长顺县| 肇州县| 乐都县| 广丰县| 紫阳县| 肥东县| 古浪县| 额尔古纳市| 攀枝花市|