真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

LR上傳文件腳本詳解

腳本

char *fr(char *filename){

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信平臺小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了珠海免費(fèi)建站歡迎大家使用!

    longupfile ;    //定義文件句柄

    intcount ;      //定于文件長度

    intnFileLen;    //定義文件長度

    char*buffer;

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

 

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

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

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

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

 

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

    count= fread(buffer, sizeof(char),nFileLen, upfile); //將upfile指向的文件所包含字節(jié)數(shù)的所有數(shù)據(jù)項(xiàng)讀入到buffer中,并返回?cái)?shù)據(jù)項(xiàng)的字節(jié)數(shù),及文件長度

 

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

    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;

}

 

 

知識點(diǎn):

C語言讀寫文件

  1. 1. Fopen:

作用:  第一個(gè)參數(shù)是指向一個(gè)文件,如果當(dāng)前文件不存在,系統(tǒng)會創(chuàng)建這個(gè)文件名。第二個(gè)參數(shù)是對這個(gè)文件進(jìn)行的操作。例如,只讀,讀寫,寫等。

Fopen函數(shù)原型:

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

其中:

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

文件名:被打開文件的文件名,是字符串常量或字符串?dāng)?shù)組

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

例如:在當(dāng)前目錄打開文件file a,只運(yùn)行進(jìn)行讀操作,并時(shí)fp指向該文件
FILE *fp;
fp=("file a","r");

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

把一個(gè)文本文件讀入內(nèi)存時(shí),要將ASCII碼轉(zhuǎn)換成二進(jìn)制碼,而把文件以文本方式寫入磁盤時(shí),也要把二進(jìn)制碼轉(zhuǎn)換成ASCII碼,因此文本文件的讀寫要花費(fèi)較多的轉(zhuǎn)換時(shí)間。對二進(jìn)制文件的讀寫不存在這種轉(zhuǎn)換。

  1. 2. Fseek函數(shù)

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

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

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

  1. 3. Ftell函數(shù)

Ftell函數(shù)原型:long intftell ( FILE * stream );

作用:用于獲得文件位置指針當(dāng)前位置相對于文件首的偏移字節(jié)數(shù)。在隨機(jī)方式取文件時(shí),由于文件位置頻繁的前后移動,程序不容易確定文件的當(dāng)前位置。調(diào)用ftell函數(shù)就能非常方便地確定文件位置

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

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

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

  1. 4. Malloc函數(shù)

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

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

作用:分配長度為num_bytes字節(jié)的內(nèi)存塊  說明:如果分配成功則返回指向被分配內(nèi)存的指針,否則返回空指針NULL。 當(dāng)內(nèi)存不再使用時(shí),應(yīng)使用free()函數(shù)將內(nèi)存塊釋放。

  1. 5. fread函數(shù)和fwrite函數(shù)

功能:用來讀寫一個(gè)數(shù)據(jù)塊。

函數(shù)原型:

Fread(buffer,size,count,fp)

Fwrite(buffer,size,count,fp)

說明:

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

(2)size:要讀寫的字節(jié)數(shù);

(3)count:要進(jìn)行讀寫多少個(gè)size字節(jié)的數(shù)據(jù)項(xiàng);

(4)fp:文件型指針。

LR函數(shù)

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

功能,轉(zhuǎn)換整型為字符串型,并將字符串值存到參數(shù)中。

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

功能:將指定以Null結(jié)束的字符串賦值給參數(shù)

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

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

  1. 4. web_custom_request(constchar *RequestName, , [EXTRARES, ,] LAST );

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

功能:允許使用任何方法和請求體創(chuàng)建自定義的HTTP請求。默認(rèn)情況下,當(dāng)VuGen無法使用其他函數(shù)解釋用戶請求時(shí),會生成此函數(shù)。

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

參數(shù):

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

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

  • URL:頁面地址。

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

  • TargetFrame:包含當(dāng)前鏈接或資源的frame的名稱。

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

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

僅僅當(dāng)Recording Options--Recording --HTML-based script-- Recordwithin the current script step選項(xiàng)被選中時(shí),List of Resource Attributes才會被插入到代碼中。

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

  • Referer:當(dāng)前頁面關(guān)聯(lián)的頁面。如果已經(jīng)顯式指定了url的地址,此項(xiàng)可以省略。

  • Body:請求體。

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

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

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

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

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

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

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

 

  • ResourceByteLimit:在HTTP模式中無法使用,在Concurrent Groups(Vuser腳本中的一個(gè)區(qū),此區(qū)中的所有函數(shù)并發(fā)執(zhí)行)區(qū)中也無法使用。僅僅適用于Sockets的回放,WinInet也是不適用的。

 

  • Snapshot:快照的文件名,關(guān)聯(lián)時(shí)使用。

 

  • Mode:兩種錄制級別HTML、HTTP。

HTML級別:在當(dāng)前Web界面上錄制直觀的HTML動作。以一步步的web_url、web_link、  web_p_w_picpath、web_submit_form來錄制這些動作。VuGen僅僅錄制返回HTML頁面的請求,不處理腳本和應(yīng)用程序。

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

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

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

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

  • UserAgent:用戶代理,它是一個(gè)HTTP頭的名字,用來標(biāo)識應(yīng)用程序,通常是瀏覽器,它呈現(xiàn)的是用戶和服務(wù)器的交互。

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

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

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

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

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

  • ContentEncoding:指定請求體使用指定的方式(gzip或者deflate)進(jìn)行編碼(例如,壓縮),相應(yīng)的“Content-Encoding:” HTTP頭會和此請求一起發(fā)送。這個(gè)參數(shù)適用于web_custom_request和web_submit_data。

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

  • LAST:結(jié)尾的標(biāo)示符。

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

 

 


當(dāng)前標(biāo)題:LoadRunner性能測試-上傳文件腳本
本文來源:http://weahome.cn/article/pcpogs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部