과부하로 사이트를 테스트하려고합니다. 나는 틀린 제목이 나에게 가능한 실을 꿰는 문제점이다는 것을 나타내는 어떤 경우에 나타난 ㄴ다는 것을 것을을 발견했다. 이 문제를 해결하기 위해 다음 테스트를 설정했습니다.유닛 테스트 : 로컬 서버로 무거운 서버로드 복제
[TestMethod]
public void Test1() {
var isValid = true;
for (var i = 0; i < 100; i++) {
// Send the request (note Http.WebRequest is a utility method which returns the contents of the page)
var request = Http.WebRequest("http://localhost/SomePage");
var document = new HtmlDocument(); // Html Agility Pack
document.LoadHtml(request.Data);
// Get the required info
var title = document.DocumentNode.SelectSingleNode("//title").InnerText.Trim();
// Test if the info is valid
if (title != "Some Page") {
isValid = false;
break;
}
Thread.Sleep(100);
}
Assert.IsTrue(isValid);
}
알림이 웹 요청은 로컬 서버에 발행됩니다. 이 경우 테스트는 순차적이므로이 테스트는 항상 통과하므로 한 번에 하나의 요청 만 발생합니다. 라이브 서버를 대상으로 URL을 변경하면로드가 과중한 문제가 있음을 나타내는 요청이 실패합니다.
내 로컬 서버로 부하를 복제 할 수 있도록이 테스트를 어떻게 수정할 수 있는지 궁금합니다. 이렇게하면 라이브 사이트를 망칠 필요없이 다양한 문제를 해결할 수 있습니다. 독서 후 this 실. 나는 다음에 와서 관리되는 :
[TestMethod]
public void Test1() {
var isValid = true;
var threads = new Thread[100];
for (var i = 0; i < threads.Count(); i++) {
threads[i] = new Thread(() => {
for (var j = 0; j < 10; j++) {
// Send the request
var request = Http.WebRequest("http://localhost/SomePage");
var document = new HtmlDocument();
document.LoadHtml(request.Data);
// Get the required info
var title = document.DocumentNode.SelectSingleNode("//title").InnerText.Trim();
// Test if the info is valid
if (title != "Some Page") {
isValid = false;
break;
}
}
});
}
foreach (var thread in threads) {
thread.Start();
}
foreach (var thread in threads) {
thread.Join();
}
Assert.IsTrue(isValid);
}
을 그러나 나는 그것이 오류가 발생했습니다이 테스트를 실행했을 때 "테스트가 실행되는 동안 에이전트 프로세스는 중단되었다.". 누군가 내가 잘못하고있는 것을 보여 주거나 다른 해결책을 제안 할 수 있다면 고맙겠습니다. 감사합니다
케이 당신은 [AB] (HTTP와 같은 도구를 사용합니다. org/docs/2.0/programs/ab.html) 또는 [JMeter] (http://en.wikipedia.org/wiki/JMeter)? – gagabu