分析LoadRunner登陸腳本認證失敗的緣由

  測試對象:某Web即時通信系統(如下稱WebIM)
  開發語言:XML
  數據通信協議:Web(HTTP/HTML)協議、Windows Sockets協議
  底層數據庫:Mysql
  服務器操做系統:Redhad 4
  腳本實現功能:登入系統後,再退出系統。
  問題1:錄製開發的腳本能夠成功回放,可是數據庫的logout表裏卻查不到「登出」的用戶?
  分析:錄製的時候只選用了單協議:Web(HTTP/HTML)協議,而WebIM的實現不僅用到了Web(HTTP/HTML)協議,也用到了 Windows Sockets協議。在定位了問題的"緣由"以後,筆者嘗試錄製多協議的腳本,結果回放失敗。回放失敗是由於Webim在登陸的過程當中有個加密驗證的過程。腳本回放時提交了上一次的通過Sha1加密後的密文,而此時服務器端的Sha1密文已經發生了改變。從而致使了失敗。
  解決方法:
  a、使用雙協議錄製腳本
  b、開發Sha1算法的DLL文件並在腳本中調用。
  問題2:錄製的腳本中並無捕獲到服務器返回的Session ID?
  分析和方案:Webim的開發用到了XML和Windows Sockets協議,所以按照正常的思路,Loadrunner在錄製腳本時,也應該採用XML和Windows Sockets協議,但實際狀況是這樣的,錄製的腳本中並無捕獲到服務器返回的Session ID。既然公司內網的Jabberd服務器有專門的測試客戶端,筆者決定經過這個客戶端錄製腳本,因爲這個客戶端和服務器的通訊協議是Windows Sockets,所以錄製協議也採用了這個最底層的協議。這一次,錄製的腳本中捕獲到了服務器返回的Session ID。爲了保證腳本回放時可以動態的獲取到這個Session ID,須要作「關聯」操做,筆者使用了lrs_save_searched_string()函數,對腳本作了處理。( 中國軟件工程網
   問題3:如何調用Dll來對服務器返回的序列和Password加密,以產生Sha1的密文?
  分析和方案:腳本中加載了Dll庫文件後,在調用庫文件中的加密函數對Session ID+Password字符序列加密時,必須採用以下格式endes(a,b),其中的a表明源序列,b表明密文。通過這樣的步驟處理後,調試腳本,就能夠看到密文了。
   問題4:Buf中參數化密文後,腳本仍是不能編譯經過,存在語法錯誤?
  分析和方案:發現Loadrunner參數化,是按照它內置的機制執行的,符合這個機制,編譯就能經過。後來在Gen中的Tools—>general option中找到了能夠更改這個機制的地方,修改完了以後,腳本再次編譯,此次OK了。( 中國軟件工程網
   問題5:錯誤提示:沒有足夠的虛擬用戶分配給這個NewPara?  分析和方案:loadrunner中在對用戶名和密碼或其餘數據參數化了之後,不要將參數刪除後,從新參數化,不然就會出現上述問題。筆者決定從新錄製腳本,從新參數化,從新修改腳本。事實證實這樣作是正確的,編譯運行後,5個虛擬用戶的腳本正確無誤的經過。
相關文章
相關標籤/搜索