我必須對性能/負載測試一堆相互依賴的服務。他們都使用net.tcp,大多數使用雙工合同和內部排隊。 [使用鎖定手動操作的POCO隊列類(syncRoot){if(queue.Empty)Thread.Wait(); }]爲WCF服務定義SLA
這裏的方法,我想出來的:
- 確定WCF服務是性能測試
- 確定的初步認識性能計數器爲每個服務
- 標識邏輯啓動點是將採取通過服務正在測試
- 自動生成單元測試使用VS.Net每個服務
- 編寫特定的功能測試(對於考試執行我可以拿一個用例 - 「下訂單」 - 編寫測試,使所有相關服務的調用,並通常幾乎所有需要的功能excercise)
- 使用跟蹤文件從運行#5生成單元測試[使用來自CodePlex的WCF負載測試](這在某種程度上似乎是在調試環境中重新生成用戶錯誤的理想工具。免責聲明:未使用該工具。從閱讀項目DESC)展示
- 以上可以進行調整以自動產生的輸入數據
- 介紹變化到輸入端,以便不同的代碼路徑是從性能計數器瑞典克朗(SEK)
- 登錄數據
- 分析使調用的測試並找出瓶頸
問題:
- 有沒有更好的方法嗎?
- 對於使用內部隊列的服務,使用std性能計數器測量性能時出現問題。我可能需要定製計數器?
- 如果#1爲真,是否有辦法引入客戶計數器而不更改被測試服務的代碼?
- 我應該關心功能測試的結果嗎?
- 有沒有辦法[非侵入式]實現WCF服務的SLA? (我認爲如果我的計數器有足夠的數據,例如請求服務,發生異常,響應時間等,我應該能夠驗證我的SLA - 在5分鐘內爲每個請求提供200,000個請求,響應時間爲2秒 - 我的問題可能是我是否可以指定我的SLA,並且產品/工具可以完成場景背後的所有管道工作併爲我提供一個列表答案?我知道......我知道......我是在做白日夢:))
- 另外:什麼是在WCF服務內部排隊請求的最佳方法?