標籤:
效能需求:對系統某頁面中,點擊下載功能做並發測試,以擷取在並發下載檔案的情況下系統的效能指標。
備忘:頁面上點擊下載時的檔案可以是word、excel、pdf等。
問題1:錄製完下載的情境後,發現指令碼裡面並沒有包含下載的指令碼或url?
解決步驟:
1. 在IE瀏覽器上開啟需要測試功點的頁面,點擊下載連結前啟用httpWatch錄製下載功能點,然後查看Stream下面伺服器返回的響應資訊,一個HTTP響應代表格服務器向用戶端回送的資料,它包括:
一個狀態行、若干訊息頭、以及實體內容 ,其中的一些訊息頭和實體內容都是可選的,訊息頭和實體內容之間要用空行隔開。
只需要關注伺服器響應的content-type=application/octet-stream
2. 設定LoadRunner錄製選項-HTTP屬性-進階-非資源,在裡面添加非資源內容類型:application/octet-stream ,
3. 添加完後,再次重新錄製指令碼,在指令碼裡面就會有mod=attachment&參數的url請求,指令碼代碼如下:
download(){ lr_think_time(3); lr_start_transaction("download"); web_url("forum.php_5", "URL=http://127.0.0.1/Discuz/upload/forum.php?mod=attachment&aid=M3wxMTZiMzFhOXwxNDQzODQ0ODc2fDN8NA%3D%3D", "Resource=0", "RecContentType=application/octet-stream", "Referer=http://127.0.0.1/Discuz/upload/forum.php?mod=viewthread&tid=4&extra=page%3D1", "Snapshot=t6.inf", "Mode=HTML", LAST); lr_end_transaction("download",LR_AUTO); return 0;}
此時,錄製下載的指令碼有了,但是LoadRunner回放運行指令碼後,並沒有像手工操作那樣真實的把檔案下載下來,為什嗎?
測試情境分析:一般我們手工在頁面上點擊下載連結時,瀏覽器會彈出下載儲存框,下載並儲存到本地電腦裡面,而使用LoadRunner錄製這種情境時,是不會錄製到瀏覽器彈出下載儲存框並儲存到本地電腦的步驟的,當點擊某個下載檔案連結時,LoadRunner錄製的指令碼裡面只會以web_url()函數類比發送下載的請求,伺服器響應直接返回需要下載檔案裡面的內容,這是通過content-type=application/octet-stream來決定的。所以,LoadRunner在回放指令碼的時候,其實已經對伺服器產生下載功能的效果了。
問題2:當設定LoadRunner常規選項-顯示-勾選show browser during replay時,回放運行指令碼,運行時查看器的視窗會彈出下載並儲存的提示框,如何解決?
問題分析:
1、 運行回放下載功能指令碼出現此提示的原因是伺服器響應返回的只有二進位檔案,並且content-type=application/octet-stream才會產生,文字檔不會出現;查看快照
2、 儲存的檔案格式是UNK,其實儲存在本地電腦上,重新命名下載檔案的格式後,再開啟該檔案,會發現檔案內容就是下載的檔案;
3、 不儲存或者取消彈出的UNK檔案視窗,再次運行vugen時會提示“default result directory is locked”;
解決方案:
把去掉勾選“show browser during replay”即可。
LoadRunner測試下載功能點指令碼(方法一)