Titan專欄

          用文字來整理生命

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            44 隨筆 :: 49 文章 :: 19 評論 :: 0 Trackbacks

          最近在論壇上的一些朋友問腳本方面的問題,比如用lr的winsock協議錄制的腳本遇回放過程中遇到如下錯誤

          Action.c(20): Error : callConnect - Can't assign requested address. Error code : 10049.
          Action.c(20): Error : Timeout expired while trying to connect. Error code : 9017.

          這里的10049是udp協議錯誤,是腳本沒有和服務器同步,這說明什么問題呢。下邊我用一個協議進行分析,來看看到底是什么問題,
          smtp協議分析:

          1.SMTP工作方式有兩種情況:一是電子郵件從客戶機傳輸到服務器;二是從某一個服務器傳輸到另一個服務器.
          2.SMTP是個請求/響應協議,命令和響應都是基于ASCII文本,并以CR和LF符結束。響應包括一個表示返回狀態的三位數字代碼.
          3.SMTP在TCP協議25號端口監聽連接請求
          4.連接和發送過程:

          a.建立TCP連接
          b.客戶端發送HELO命令以標識發件人自己的身份,然后客戶端發送MAIL命令
          服務器端正希望以OK作為響應,表明準備接收
          c.客戶端發送RCPT命令,以標識該電子郵件的計劃接收人,可以有多個RCPT行
          服務器端則表示是否愿意為收件人接受郵件
          d.協商結束,發送郵件,用命令DATA發送
          e. 以.表示結束輸入內容一起發送出去
          f.結束此次發送,用QUIT命令退出。

          5.另外兩個命令:
          VRFY---用于驗證給定的用戶郵箱是否存在,以及接收關于該用戶的詳細信息。
          EXPN---用于擴充郵件列表。

          6.郵件路由過程:
          SMTP服務器基于‘域名服務DNS中計劃收件人的域名來路由電子郵件。SMTP服務器基于DNS中的MX記錄來路由電子郵件,MX記錄注冊了域名和相關的SMTP中繼主機,屬于該域的電子郵件都應向該主機發送。

          若SMTP服務器mail.withub.org收到一封信要發到pcl@withub.org

          a.Sendmail請求DNS給出主機withub.org的CNAME記錄,如有,假若CNAME到mail.withub.org,則再次請求mail.withub.org的CNAME記錄,直到沒有為止.
          b.假定被CNAME到mail.withub.org,然后sendmail請求@withub.org域的DNS給出mail.withub.org的MX記錄,
          shmail MX 5 mail.withub.org
          10 shmail2.withub.org
          c. Sendmail最后請求DNS給出shmail.withub.org的A記錄,即IP地址,若返回值為1.2.3.4
          d. Sendmail與1.2.3.4連接,傳送這封給pcl@withub.org的信到1.2.3.4這臺服務器的SMTP后臺程序

          這里是協議的一個解析過程,我們要看看,利用lr錄制腳本后然后回放,錄制的過程中mail.withub.org返回客戶端服務器上有多少給用戶的郵件,lr把這個數字保存下來,最為下次回放的時候對比。當你第二次回放的時候,lr模擬客戶端發送請求,這時候服務器上沒有了新郵件,返回可能是0,lr把這個返回值和當時錄制的腳本保存的返回值進行對比(那個時候可能服務器上有3個新的郵件,服務器返回的值是3),明顯這個值是動態變化的。你的腳本如果沒有經過修改,肯定是回返不成功的。

          那么上邊提到的錯誤信息,同樣的道理,我們要分析一下到底是什么問題,從協議上分析,從系統環境上分析。

          解決方法,動態關聯

          1.用同樣的用戶操作同樣的步驟兩次,然后用lr工具wdiff進行腳本對比,找出不同的地方!

          2.用lr自動關聯

          3.手工關聯,找到要替換的動態數據進行替換

          posted on 2006-01-01 22:33 Titan 閱讀(274) 評論(0)  編輯  收藏 所屬分類: 性能測試
          主站蜘蛛池模板: 灵宝市| 兴和县| 洪湖市| 同心县| 石嘴山市| 潜江市| 黄梅县| 措勤县| 凌源市| 西峡县| 三穗县| 库伦旗| 梨树县| 宜宾县| 华宁县| 印江| 铁岭县| 右玉县| 靖宇县| 宿州市| 五大连池市| 墨竹工卡县| 鹰潭市| 怀仁县| 台北市| SHOW| 太白县| 兰溪市| 定边县| 河池市| 乌兰浩特市| 阿拉善盟| 景泰县| 峡江县| 顺平县| 凤台县| 金川县| 广西| 上高县| 确山县| 丹巴县|