2012-04-18 48 views
2

我有一個Visual Studio 2010負載測試,其中包含一些Web性能測試。運行網絡性能測試需要您登錄到被測網站。因此,負載測試包含一個初始化步驟 - 一個小型web性能測試,它會執行登錄,並使用插件來緩存如此獲得的cookie。 「真正的」網絡性能測試 - 實際上做的工作也是每個那些有插件,讀取緩存的cookie並把它添加到測試,讓每個測試運行正常:需要登錄的Web性能測試:如何使它在隔離和負載測試中工作?

public override void PreWebTest(object sender, PreWebTestEventArgs e) 
{ 
    if (CookieCache.Cookies != null) // CookieCache is a static class of mine 
     e.WebTest.Context.CookieContainer.Add(CookieCache.Cookies); 

問題雖然這一切運行絕對正常,當我運行負載測試,這意味着我不能孤立運行任何網絡性能測試,因爲如果負載測試初始化​​沒有運行,那麼就沒有cookie,所以網絡性能測試將不會登錄,並會失敗。

有沒有針對這種情況推薦的解決方案?換句話說,如果一個Web性能測試需要登錄,是否有任何方法可以讓它獨立運行並且它是負載測試的一部分?

最顯而易見的方法來運行隔離每個Web性能測試將是有它首先調用登錄測試,但我不能這樣做,因爲那將是不正確的行爲的負載測試(其中登錄應該發生每個用戶只有一次,就在負載測試開始時)。

回答

0

我對Visual Studio 2010負載測試不熟悉,但聽起來您需要相當於NUnit的SetUpTearDown方法,這些方法對所有測試運行一次,無論您是選擇單個測試還是選擇了所有測試部件。

A bit of searching意味着相當於InitTerm測試。

1)在負載測試場景節點上單擊右鍵,選擇編輯測試 混合...

2)在編輯測試組合對話框,看看底部的形態。你會 看到2個複選框。一個用於初始測試,另一個用於術語測試。

初始化測試之前將每個用戶和術語測試時 用戶完成將運行運行。爲確保術語「測試」運行,您還需要設置負載測試的冷卻時間 。冷卻時間是 運行設置節點上的屬性。此設置使測試在持續時間結束時有機會流血 。您可以將其設置爲5分鐘。冷卻時間不一定會持續5分鐘。當所有 測試完成後,它將結束。如果這需要20秒,那麼在負載測試完成時即爲 。

+0

感謝您的幫助 - 非常感謝。不幸的是,你的建議基本上是我們已經在做的。正如你所說的那樣,添加一個init測試意味着web性能測試可以正常工作*當它在負載測試中時*但不能解決讓web性能測試始終工作的問題,而不管它是否在負載測試中。這是因爲如果您在負載測試之外運行Web性能測試,那麼Init測試是否特定負載測試,因此無法運行。 – PhantomDrummer 2012-04-24 08:48:35

5

的解決方案是通過對登錄測試添加到您的個人網頁性能測試(通過「插入電話網絡測試」),但門「上下文參數存在」條件規則,以查找的沒有上下文參數$ LoadTestUserContext。該參數僅在Web測試在負載測試中運行時才存在。

這樣你得到的只是一個登錄無論是在或外部負載測試。

0

爲什麼不嘗試使用PreRequest功能,而不是PreWebTestFunction

Public Overrides Sub PreRequest(sender As Object, e As PreRequestEventArgs) 
    MyBase.PreRequest(sender, e) 
    Dim cookie As System.Net.Cookie = New System.Net.Cookie(...) 
    e.Request.Cookies.Add(cookie) 

這樣既負載測試和Web測試將工作。