LoadRunner中指令碼回放問題及解決方法(上)

2021-07-27 15:54:12 字數 2714 閱讀 1936

在執行指令碼回放過程中,有時會出現錯誤,這在實際測試中是不可避免的,畢竟自動錄製生成的指令碼難免會有問題,需要執行指令碼進行驗證,把問題都解決後才加入到場景中進行負載測試。下面結合常用的協議(如web、web services協議)錄製的指令碼進行回放時出現的問題介紹一下解決的方法。

在錄製web協議指令碼回放時超時情況經常出現,產生錯誤的原因也有很多,解決的方法也不同。

錯誤現象1:action.c(16): error -27728: step download timeout (120 seconds) has expired when downloading non-resource(s)。

錯誤分析:對於http協議,預設的超時時間是120秒(可以在loadrunner中修改),客戶端傳送乙個請求到伺服器端,如果超過120秒伺服器端還沒有返回結果,則出現超時錯誤。

解決辦法:首先在執行環境中對超時進行設定,預設的超時時間可以設定長一些,再設定多次迭代執行,如果還有超時現象,需要在「runtime setting」>「internet protocol:preferences」>「advanced」區域中設定乙個「winlnet replay instead of sockets」選項,再回放是否成功。

錯誤現象2:action.c(81):continuing after error -27498: timed out while processing url= querystat/ suborderquery.do

錯誤分析:這種錯誤常常是因為併發壓力過大,伺服器端太繁忙,無法及時響應客戶端的請求而造成的,所以這個錯誤是正常現象,是壓力過大造成的。

如果壓力很小就出現這個問題,可能是指令碼某個地方有錯誤,要仔細檢視指令碼,提示的錯誤資訊會定位某個具體問題發生的位置。

解決辦法:例如上面的錯誤現象問題定位在某個url上,需要再次執行一下場景,同時在其他機器上訪問此url。如果不能訪問或時間過長,可能是伺服器或者此應用不能支撐如此之大的負載。分析一下伺服器,最好對其效能進行優化。

如果再次執行場景後還有超時現象,就要在各種圖形中分析一下原因,例如可以檢視是否伺服器、dns、網路等方面存在問題。

最後,增加一下執行時的超時設定,在「run-time settings」>「internet protocol:preferences」中,單擊「options」,增加「http-request connect timeout」或者「http-request receive」的值。

在錄製web協議指令碼時出現中文亂碼,在回放指令碼時會使回放停止在亂碼位置,指令碼無法執行。

錯誤現象:錯誤分析:指令碼錄製可能採用的是url-based scrīpt方式,如果程式定義的字元集合採用的是國際標準,指令碼就會出現亂碼現象。

解決辦法:重新錄製指令碼,在錄製指令碼前,開啟錄製選項配置對話方塊進行設定,在「recording options」的「advanced」選項裡先將「surport charset」選中,然後選中支援「utf-8」的選項。

在錄製web協議指令碼回放指令碼的過程中,會出現http伺服器狀態**, 如常見的頁面-404錯誤提示、-500錯誤提示。

錯誤現象1:-404 not found伺服器沒有找到與請求uri相符的資源,但還可以繼續執行直到結束。

錯誤分析:此處與請求uri相符的資源在錄製指令碼時已經被提交過一次,回放時不可再重複提交同樣的資源,而需要更改提交資源的內容,每次回放一次指令碼都要改變提交的資料,保證模擬實際環境,造成一定的負載壓力。

解決辦法:在出現錯誤的位置進行指令碼關聯,在必要時插入相應的函式。

錯誤現象2:-500 internalservererror伺服器內部錯誤,指令碼執行停止。

錯誤分析:伺服器碰到了意外情況,使其無法繼續回應請求。

解決辦法:出現此錯誤是致命的,說明問題很嚴重,需要從問題的出現位置進行檢查,此時需要此程式的開發人員配合來解決,而且產生的原因根據實際情況來定,測試人員無法單獨解決問題,而且應該盡快解決,以便於後面的測試。

在錄製web協議指令碼回放指令碼的過程中,會出現請求無法找到的現象,而導致指令碼執行停止。

錯誤現象:action.c(41): error -27979: requested form. not found [msgid: merr-27979]

action.c(41): web_submit_form. highest severity level was "error",0 body bytes, 0 header bytes [msgid: mmsg-27178]"

這時在tree view中看不到此元件的相關url。

解決辦法:開啟錄製選項配置對話方塊進行設定,在「recording options」的「internet protocol」選項裡的「recording」中選擇「recording level」為「html-based scrīpt」,單擊「html advanced」,選擇「scrīpt type」為「a scrīpt containing explicit」。然後再選擇使用「url-based scrīpt」模式來錄製指令碼。

試用》

一 loadrunner指令碼錄製及回放

錄製及回放的注意點 1 測試系統教複雜時,正確的劃分action,對監控的每乙個業務模型和操作,起到重要作用 2 錄製完成後,先進行編譯 改動指令碼之後檢查下有沒有語法錯誤 工具欄vuser下有乙個compile shift f5 3 編譯完成後,進行回放 單步執行 人工一步一步執行 的方式 按f1...

JMeter 十五 指令碼回放與關聯處理 上

需求 指令碼錄製成功後,要回放驗證指令碼是否響應正確,即錄製成功。如果想檢視不是 錄製的資料 即替換錄製的引數,又該怎麼做?www.weather.com.cn,回放指令碼想檢視上海的天氣應該怎麼做?1 通過jmeter的 伺服器錄製www.weather.com.cn指令碼,回放結果 通過檢視結果...

JMeter 十六 指令碼回放與關聯處理 下

需求 上篇介紹了引數關聯的一種方式 正規表示式提取引數傳遞給下乙個介面,那麼在實際工作中,可能會遇到各種不同的動態引數 正規表示式提取器獲取引數可能就不滿足了。這裡著重介紹json extractor,介面測試中對json格式的請求引數或是響應報文都應該不陌生,xml亦是如此。雖然在jmeter後置...