2010年1月5日 星期二

WebTest 的Form Parameter 與日期有關

以Visual Studio 2008 進行網頁測試(WebTest)錄製後,通常不會有問題。但過一段時間後,再回來執行 WebTest,通常會發生一些錯誤。其中一部份與時間有關。以下是一個例子。

國外旅遊查詢網頁,出發日期只能選最近的10天來查詢。

image

錄製 WebTest後,可看到送出的日期為 2010/01/06 日。

image

過了幾天後,到了 2010/01/07 時,再來跑這個 WebTest,就會發生錯誤。

Invalid postback or callback argument.  Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page.  For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.  If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation

原因是到了2010/01/07 時,dropdownlist 只會產生 01/07 ~ 01/16 這10天的資料,並不會有 2010/01/06 的選項。預設,asp.net 2.0 會檢查這個問題,稱為 event validation。

解決方法呢?有兩種,一種是產生 Coded Test, 可使用工具列中的 Generate Code 來產生程式碼,再到該程式碼中,改成 DateTime.Today.ToString(“yyyy/MM/dd”),這樣一來,就解決了問題。

image

image

另外一種較佳的解決方法,則必須安裝 codeplexWeb Test PlugIn 1.1。使用方法,可見說明。於是,只需要修改 Form Parameter 為 <%=DateTime.Today.ToString(“yyyy/MM/dd”)%>即可。

image

結論

兩種方法,當然以第二種較為方便,而且有彈性。第一種方法,在轉成 Code 之後,失去了Web Test 的UI,無法有直覺性地了解測試結果,但也因為轉成code 之後,任何的測試目的都可以達成。

沒有留言:

Share with Facebook