2013-04-23 90 views
1

我爲一個似乎工作正常的網站創建了Web性能測試。這是登錄和測試導航的簡單測試。每次運行這個測試都是很有效的。但是當我在LoadTest中調用該測試時,問題就顯現出來了。所以,我創建一個負載測試,只有在它這個網絡的性能測試,它失敗所有的時間記錄,因爲這個錯誤的之後:WebTest工作但LoadTest不是

The server committed a protocol violation. Section=ResponseStatusLine 

我研究這個錯誤很多,大家都認爲,插入此聲明:

<system.net> 
    <settings> 
    <httpWebRequest useUnsafeHeaderParsing=」true」/> 
    </settings> 
</system.net> 

在web.config文件中解決了這個問題,但通常QA從DEV分離,我們有自己的代碼的訪問權限。我只是想知道如何單獨執行測試而不是在負載測試中工作。我認爲問題可能是用戶數量或負載模式,所以我將其從最初的Step load pattern設置爲僅有一個用戶的Constant load pattern。但是,同樣的錯誤會導致測試失敗。有沒有人有類似的問題?如果您需要更多數據,請告訴我。

編輯:當我在負載測試使用的性能測試中指定代理(本地主機:8888 - 爲fiddler)時,問題沒有發生,但負載測試太慢。

回答

0

在過去,我得到了這個錯誤,因爲在Url中多了額外的\ n

就我而言,這是由動態數據源造成的。應清理數據源中的參數。 你在測試中使用DataSource嗎?

+0

不,我使用它導入數據到測試自定義數據處理程序執行上下文直接來自csv或xml文件。然而,與代理人的神祕遺蹟:) – 2013-05-03 08:31:45

1

我得到了完全相同的問題。我的測試環境使用SSL,並使用F5負載平衡器進行負載平衡。我沒有在非負載平衡配置中遇到問題。

webtest運行時不緩存相關請求,而loadtest將緩存相關請求,因此會遇到不同的行爲。

要解決此問題,您需要創建一個插件來強制相關請求不要緩存在負載測試中。下面的文章將告訴您如何創建一個插件

http://msdn.microsoft.com/en-us/library/ms243191.aspx

插上代碼要求:

using System; 
using Microsoft.VisualStudio.TestTools.WebTesting; 

namespace DisableCache 
{ 
    public class DisableCache : WebTestPlugin 
    { 
     public override void PostRequest(object sender, PostRequestEventArgs e) 
     { 
      foreach (WebTestRequest dependentRequest in e.Request.DependentRequests) 
      { 
       dependentRequest.Cache = false; 
      } 
     } 
    } 
}