如何模擬約100級的用戶在C#單元測試訪問一個給定的共享資源(例如數據庫)/壓力測試多址?C#壓力測試 - 模擬到給定的共享資源
4
A
回答
4
你根本無法通過單元測試做任何有用的負載測試。負載測試是一個完全不同目標的單獨活動。您的單元測試應證明代碼符合規範。負載測試是爲了尋找瓶頸,這樣你就可以解決這些問題。
-1
我已經使用名爲WCAT http://www.iis.net/downloads/community/2007/05/wcat-63-(x86)的免費工具完成了性能和負載測試。這是一個小現已過時,但它很容易上手,有很多關於它的網上文章,它似乎靈活。
7
假設你正在訪問真正的數據庫,你正處於集成測試的範圍。最簡單的方法是從多個線程訪問資源。例如:
[Test]
public void SimpleStressTest()
{
bool wasExceptionThrown = false;
var threads = new Thread[100];
for(int i = 0; i < 100; i++)
{
threads[i] =
new Thread(new ThreadStart((Action)(() =>
{
try
{
AccessDB();
}
catch(Exception)
{
wasExceptionThrown = true;
}
})));
}
for(int i = 0; i < 100; i++)
{
threads[i].Start();
}
for(int i = 0; i < 100; i++)
{
threads[i].Join();
}
Assert.That(wasExceptionThrown, Is.False);
}
此測試不確定,因爲您無法控制線程流。例如,如果要確保可以同時打開100個連接,可以在AccessDB()
的邏輯中放置一個掛鉤,這將強制它在關閉與數據庫的連接之前等待。
例如,而不是以前的線程操作:
try
{
AccessDB(sychObject);
}
catch(Exception)
{
wasExceptionThrown = true;
}
開始的所有線程後請確保您有100個線程等待的sychObject
,然後才釋放並加入線程。通過使CloseConnection()
(例如)虛擬的邏輯相同可以實現,並針對繼承類CloseConnection()
中的等待編寫測試。例如:
public class DataBase
{
public void AccessDB()
{
// Do logic here before closing connection
CloseConnection();
}
protected virtual void CloseConnection()
{
// Real Logic to close connection
}
}
public class FakeDataBase : DataBase
{
ManualResetEvent sychObject;
public FakeDataBase(ManualResetEvent sychObject)
{
this.sychObject = sychObject;
}
override protected void CloseConnection()
{
sychObject.WaitOne();
base.CloseConnection();
}
}
相關問題
- 1. gradle/intellij - 共享測試資源
- 2. 並行測試共享模擬
- 3. ASP.NET壓力測試
- 4. C++,Ogre3D,SFML,共享資源?
- 5. 在模塊之間共享測試資源問題
- 6. iOS模擬器訪問測試資源
- 7. 單元測試在AngularJS模擬$資源
- 8. WebSocket壓力測試
- 9. Wicket:重定向到共享資源
- 10. C++ /升壓共享資源管理像shared_ptr的
- 11. JavaFX壓力測試失敗
- 12. ASP.Net壓力測試應用
- 13. 壓力測試AJAX
- 14. C#測試資源
- 15. expressjs壓力測試
- 16. 壓力測試網頁
- 17. HTML5壓力測試
- 18. TinyGet和壓力測試
- 19. Jquery壓力測試
- 20. 爲網站創建壓力測試
- 21. WCF壓力測試
- 22. WPF資源 - 共享?
- 23. 登錄壓力測試
- 24. 跨源起源資源共享
- 25. googletest中的參數化和共享資源測試
- 26. Parallel.ForEach中的共享資源
- 27. WPF共享資源問題 - 沒有App.xaml,沒有共享資源
- 28. Opera的跨源資源共享
- 29. SlimDX與DX10共享資源
- 30. 如何在Android的單元測試和儀器測試之間共享資源?
啊,但是你可以使用你的單元測試框架來充當你的運行環境。 – Gutzofter 2010-04-20 18:37:45