我们计划创建C#负载测试框架,我们可以对基于IO的API(缓存/数据库/文件)进行并发调用,从而在负载下测试它们,以下是可能的选项:
使用Async-Await
和调度程序提示TaskCreationOptions.LongRunning
,从而确保我们为每个已启动的请求background process
,从而在负载下真正测试我们的API。此外,我们还会以有效的方式帮助我们汇总最终结果,因为我们会获得每个Task
返回的帖子Async
来电的详细信息,类似于:
void Main()
{
List<Task<long>> taskList = new List<Task<long>>();
for (int i = 0; i < 500; i++)
{
taskList.Add(TestLoadAsync());
}
Task.WaitAll(taskList.ToArray());
long averageTime = taskList.Average(t => t.Result);
}
public static async Task<long> TestLoadAsync()
{
// Returns the total time taken using Stop Watch in the same module
return await Task.Factory.StartNew(() => // Call IO API,
TaskCreationOptions.LongRunning);
}
第二个选项正在使用System.Diagnostics
Process.Start
,如下所示:
void Main()
{
for (int i = 0; i < 500; i++)
{
System.Diagnostics.Process.Start("LoadAPI.exe");
}
}
"LoadAPI.exe"
public class LoadAPI
{
public static void Main()
{
LoadAPI api = new LoadAPI();
api.TestLoadAPI();
// Register the details of stop watch time in database, for further
analysis
}
public void TestLoadAPI()
{
// Call IO API
}
}
需要回答的重要问题包括:
我发布问题是为了理解各种观点并在我的组织中进行深入讨论,根据我的理解,我们将使用:
process.start
调用多个进程并不是加载测试的正确方法请分享您的观点,以便更好地了解该主题