最近在做性能測試,在開發web腳本的過程中遇到錯誤:Action.c(15): Error -26631: HTTP Status-Code=400 (Bad Request) for http://xxxxxx/onlinefront/s.do?tl=51&bk=null&optionId=244&p=110
問了很多人沒有人知道問題的原因,最后只能自己潛心研究,首先從http status-code400的錯誤開始分析,這個錯誤是說請求無法被處理,因為它含有缺失或無效的信息,根據錯誤信息的描述應該是發送HTTP請求中語法格式不正確導致不被服務器接受,這很可能就是通過LoadRunner 發送HTTP請求是一個不完整。那么首先要確認的就是比較發出的請求和錄制的時候請求看是否丟失了http信息來判斷錯誤的原因。
首先選上runtimesettings中extended log的三個選項后運行此腳本,用錄制發送相類似請求的日志和選擇exection log的http send請求日志進行對比。拷貝這些請求數據包到一個記事本中然后進行比較。在Recording Log(單協議)或Generation Log(多協議)中查找是否存在頭數據包,我們發現在執行日志中頭域失蹤了。
這樣解決問題的方法就是用web_add_header("xxxxx","yyyy")添加一個http頭,在錯誤的請求前添加此函數然后回放。
如果你發現所有的HTTP send請求都缺少頭數據包,在腳本中的開頭添加web_add_auto_header(”XXXXX“,”yyyy“);隨着web_add_auto_header的添加,你不需要為每個HTTP send請求都添加web_add_header了。
還有一個解決問題的方法是在Tools -> Recording Options -> Advanced tab中設置,點“headers”按鈕,在列表中選擇“Record Headers in the List”,然后選擇“XXXXX”,因此它可確保在錄制過程中錄制自己。