在进行网站性能测试时,了解响应时间、延迟、吞吐量、负载、负载敏感性和可扩展性等基本概念至关重要。这些术语是性能测试的基础,对于理解测试结果至关重要。此外,还需要了解VSTS的Load Test Agent和Controller的基本知识,包括它们的安装和部署场景。本文将指导如何使用VSTS进行网站性能测试,包括登录页面和主页的性能测试,以及SSO工具在服务器上的内存消耗测试。
在开始之前,请确保已经熟悉了以下概念:响应时间、延迟、吞吐量、负载、负载敏感性和可扩展性。这些是性能测试中常用的术语,对于理解测试结果至关重要。此外,还需要了解VSTS的Load Test Agent和Controller的基本知识,包括它们的安装和部署场景。本文将指导如何使用VSTS进行网站性能测试,包括登录页面和主页的性能测试,以及SSO工具在服务器上的内存消耗测试。
本文将使用一个简单的ASP.NET网站作为示例,该网站包含登录页面和主页。当用户输入URL时,将显示登录页面。用户输入凭据并提交登录页面,服务器端将验证凭据,验证通过的用户将被导航到主页。
在C#代码中,使用Membership.ValidateUser方法来验证用户。如果验证成功,将从应用程序内存中获取认证组件,并将其存储在会话中。这样,就可以在服务器上为所有登录用户占用内存。希望测量大量并发用户登录时服务器端CLR内存消耗,以及登录页面的响应时间。
if (Membership.ValidateUser("SuperUser", "superuserPwd"))
{
authMemory = Application["SuperUser"] as AuthInMemory;
if (authMemory != null)
{
Session["AUTHCOMPONENT"] = authMemory.AuthComponent;
bool hasRights = authMemory.AuthComponent.HasEntityAccess("LoginPage", Rights.Read);
if (hasRights)
Response.Redirect("~/public/home.aspx");
else
labelMessage.Text = "can't log-in!";
}
}
else
{
labelMessage.Text = "can't log-in!";
}
请注意,使用了第三方SSO工具进行登录。如上代码所示,将认证组件存储在会话中。这样,就可以在服务器上为所有登录用户占用内存。希望测量大量并发用户登录时服务器端CLR内存消耗,以及登录页面的响应时间。
假设已经在本地机器或不同的机器上安装了Load Test Agent和Controller,根据需求和部署场景,也可以使用虚拟机或VMWare。现在,让一步一步地进行网站性能测试。
首先,需要为网站创建一个WebTest。WebTest的目的是模拟登录场景。点击“添加新测试”,它将显示一个对话框,显示多种类型的测试。选择Web Test并输入测试名称。它具有.webteset扩展名。它将显示Web Test Recorder。现在点击“录制”并开始录制登录步骤。完成测试过程并停止录制。WebTest1.webtest将包含在项目中。现在,将对录制的webtest进行负载测试。
通过点击添加新测试来创建负载测试。它将显示与WebTest相同的对话框。选择Load Test。它具有.loadtest扩展名。它将启动Load Test Wizard来配置负载测试。将不会在这里描述每一步,因为这超出了本文的范围。请参阅负载测试向导帮助以获取更多信息。为1000个启动用户设置了负载测试,并每秒增加100个用户负载。最大用户数将为10000。
在测试混合中,添加在上一步中创建的webtest。最重要的是在Counter Sets中选择性能计数器。可以根据需求选择计数器。选择了以下计数器。
在完成所有步骤后完成向导。现在,右键单击“运行设置”节点并单击“运行测试”。它将根据配置开始负载测试,结果将开始出现。可以根据需求添加新的图表和计数器。
现在,希望测量服务器上的内存消耗和登录页面的响应时间。希望看到服务器上的内存消耗,因为希望看到内存阈值,即在什么用户负载下服务器触及最高内存使用量,以及在什么用户负载下服务器会因内存不足而崩溃,以便可以计划扩展/缩减服务器。需要采用.NET CLR内存计数器来测量ASP.NET网站的内存。可以采用以下.NET CLR内存计数器:
还可以采用不同的图表中的Available Mbytes和User Load,以确保.NET CLR内存消耗与随着用户负载增加的总体可用内存一致。请参阅每个计数器的详细信息。
现在,为了测量登录页面的性能,可以采用“Avg. Response Time”和“Page Response Time”。Avg Response Time显示webrequest的响应时间,而Page Response time包括加载所有依赖请求的时间,如图像和样式表加载等,这些请求都包含在网页中。
Avg Response Time更像是服务器上的处理时间加上延迟时间。Page Response time包括所有内容。所以这是本文介绍的简单性能测试。然而,还有许多事情需要考虑详细的测试,如缓存内存、内存泄漏等。