演练:创建并运行包含 Web 性能测试的负载测试
在本演练中,您将创建一个包含 Web 性能测试的负载测试。
本演练将引导您使用 Visual Studio 2010 旗舰版来完成负载测试的创建和运行过程。 负载测试是 Web 性能测试和单元测试的容器。 可以使用“新建负载测试向导”创建负载测试。 有关负载测试的更多信息,请参见创建和编辑负载测试。 有关 Web 性能测试的更多信息,请参见创建和编辑 Web 性能测试。 有关单元测试的信息,请参见使用单元测试验证代码。
提示
虽然负载测试可以同时包含 Web 性能测试和单元测试,但本演练只着重演示包含 Web 性能测试的负载测试。 若要了解如何向负载测试中添加单元测试,请参见演练:创建并运行包含单元测试的负载测试。
负载测试会公开许多运行时属性,可以对这些属性进行修改以生成所需的负载模拟。 在本演练中,您将使用新建负载测试向导向负载测试添加 Web 性能测试。
本演练需要一个可添加到负载测试的现有 Web 性能测试。
在本演练中,您将完成以下任务:
创建负载测试。
向负载测试添加 Web 性能测试。
更改某些负载测试设置。
运行负载测试。
系统必备
Microsoft Visual Studio 2010 旗舰版.
完成演练:创建简单的 Web 应用程序中用于创建 Web 应用程序的步骤。
完成用于创建 Web 性能测试的步骤。 请参见演练:记录和运行 Web 性能测试。
打开在前面的演练中创建的 ColorWebApp 解决方案。
打开解决方案
打开包含 ColorWebApp ASP.NET Web 应用程序和 Web 性能测试 ColorWebTest.webtest 的 ColorWebApp 解决方案。
有关更多信息,请参见演练:创建简单的 Web 应用程序和演练:记录和运行 Web 性能测试。
修改 Red.aspx.cs ASP.NET 页中的代码以演示阈值冲突和错误
修改 Red.aspx.cs 代码以演示阈值冲突和错误
在解决方案资源管理器中,展开**“ColorWebApp”ASP.NET Web 应用程序项目文件夹,然后展开“Red.aspx”**节点。
右击**“Red.aspx.cs”文件并选择“查看代码”**。
在代码编辑器中,在 Page_Load 方法中添加下面突出显示的代码:
protected void Page_Load(object sender, EventArgs e) { Random rnd = new Random(); int result = rnd.Next(5000); //To emmulate various page times up to 5 seconds. Thread.Sleep(result); if (result < 500) Response.Redirect("NOWHERE"); //10% chance to cause an HTTP 404 error. }
通过此附加代码,可在负载测试分析器中查看 mock 阈值冲突和错误。 您将在本演练的后面查看这些冲突。
使用新建负载测试向导创建负载测试
启动“新建负载测试向导”
在**“解决方案资源管理器”**中,右击 ColorWebAppTest 测试项目节点。
单击**“添加”,再单击“负载测试”**。
此时将启动**“新建负载测试向导”**。
**“欢迎使用新建负载测试向导”页是“新建负载测试向导”**的第一页。
单击**“下一步”**。
编辑负载测试方案的设置
此时将显示**“编辑负载测试方案的设置”**页。
在**“输入负载测试方案的名称”**下的文本框中,键入 Scenario basic stress。
“方案”是一种分组机制。 它由一组测试和用于在负载下运行这些测试的属性组成。
将**“配置文件思考时间”**设置为 “使用以记录的思考时间为中心的正态分布”。
思考时间表示用户在继续下个网页之前思考网页的时间。
有关更多信息,请参见如何:在 Web 性能测试中设置思考时间,以模拟人类的暂停行为。
单击**“下一步”**。
编辑测试方案的负载模式设置
此时将显示**“编辑负载测试方案的负载模式设置”**页。
选择**“常量负载”**。
负载模式属性指定如何在负载测试过程中调整模拟的用户负载。
有关更多信息,请参见编辑负载模式以便为虚拟用户活动建模。
单击**“下一步”**。
为方案选择测试组合模型
此时将显示**“请为该负载测试选择一个测试组合模型”**页。
在**“应如何对测试组合进行建模”下,选择“基于总测试数”**。
测试组合模型指定了虚拟用户在负载测试方案中运行指定测试的概率。
有关更多信息,请参见编辑测试组合模型以指定运行测试的虚拟用户的概率。
单击**“下一步”**。
向方案中添加 ColorWebTest.webtest Web 性能测试
此时将显示**“向负载测试方案添加测试并编辑测试组合”**页。
单击**“添加”**选择测试。
此时将出现**“添加测试”**对话框。
在**“可用测试”窗格中,选择 ColorWebTest Web 性能测试并单击箭头,将其添加到“选定的测试”**窗格中。
单击**“确定”**。
随即出现测试组合。 如果负载测试包含多个 Web 性能测试和单元测试,则可使用滑块来调整测试分布。
方案中的测试组合由各种要素组成,例如方案中包含的测试选择以及这些测试在方案中的分布。 测试组合应反映特定方案的测试目标。
有关更多信息,请参见如何:使用“新建负载测试向导”创建测试组合。
单击**“下一步”**。
为测试方案选择网络组合
此时将显示**“向负载测试方案添加网络类型并编辑网络组合”**页。
将 LAN 的默认设置保留为 100%。
“网络组合”为您提供了一种在负载测试方案中更真实地模拟负载的方法。
若要在负载测试方案中指定要模拟的网络类型,可在**“网络类型”**下单击每行旁边的下拉箭头。 如果您配置网络组合以使用多个网络类型,则可使用滑块来指定网络类型分布。
有关更多信息,请参见在负载测试方案中指定虚拟网络类型。
单击**“下一步”**。
为测试方案选择浏览器组合
此时将显示**“向负载测试方案添加浏览器类型并编辑浏览器组合”**页。
保留 Internet Explorer 7.0 的默认设置,或指定当前使用的浏览器类型。
若要在负载测试方案中指定用于测试 Web 应用程序的浏览器类型,可在**“浏览器类型”**下单击每行旁边的下拉箭头。 如果您配置浏览器组合以使用多个浏览器类型,则可使用滑块来指定浏览器类型分布。
有关更多信息,请参见在负载测试方案中指定 Web 浏览器类型。
单击**“下一步”**。
指定在负载测试运行期间要使用计数器集监视的计算机
此时将显示**“指定在负载测试运行期间要使用计数器集监视的计算机”**页。
保留默认设置。
在指定的计算机上收集计数器集。 计数器集与负载测试期间使用的计算机之间的关联就是计数器集映射。 例如,您所测试的 Web 服务器可能会具有 ASP.NET、IIS 和 .NET 应用程序计数器集映射。
通过单击**“添加计算机”**并键入承载您前面确定的非生产网站的服务器的名称,可以选择要在测试运行期间监视的计算机。 通过添加主机名称,可以收集负载测试中重要的性能信息。
提示
在监视的每个服务器上,您都必须具有足够的用户权限以运行性能监视器。 否则,将生成错误。
可以为承载站点的 SQL 数据库的计算机添加一个单独的项。 如果选择不添加任何计算机,则只有本地负载计数器会添加到测试中。
然后,可以选择要监视的计数器集。 将显示一组预定义的计数器集,它们用于向负载测试中添加特定性能监视器,其中包括应用程序、ASP.NET、.NET 应用程序、IIS 和 SQL。
有关更多信息,请参见在负载测试中为计算机指定计数器集和演练:在负载测试中使用测试控制器和测试代理。
单击**“下一步”**。
编辑负载测试的运行设置
此时将显示**“查看并编辑负载测试的运行设置”**页。
选择**“负载测试持续时间”,然后将“运行持续时间”**设置为 2 分钟,以便对负载测试执行冒烟测试。
生成 Web 性能测试和负载测试时,最好通过运行一个短暂的小负载测试来验证是否一切都已正确配置并可按预期运行。 此过程称为冒烟测试。
“运行设置”是一组影响整个负载测试的属性。 运行设置决定了测试的长度、预热持续时间、所报告错误详细信息的最大数量、采样速率、说明、负载测试未通过时是否保存日志以及验证级别。 运行设置应当体现负载测试的目标。
有关更多信息,请参见配置负载测试运行设置。
单击**“完成”。 将在“负载测试编辑器”**中打开负载测试。
使用负载测试编辑器向负载测试添加阈值规则
向负载测试添加阈值规则
在**“计数器集”节点中,展开“LoadTest”计数器集节点,然后展开“计数器类别”**文件夹节点。
展开**“LoadTestPage”计数器类别节点,然后展开“计数器”**文件夹节点。
右击**“平均页面时间”计数器节点,然后选择“添加阈值规则”**。
将出现“添加阈值规则”对话框。
在**“选择规则”下,保留“比较常量”**规则的选中状态。
在**“所选规则的属性”下的“选项”类别中,将“如果超过则发出警报”设置为“True”**。
在**“阈值”类别下,将“警告阈值”设置为 3,将“临界阈值”**设置为 4。
单击**“确定”**。
**“Avg. Page Time”计数器下将添加一个含有新规则的“阈值规则”**文件夹。
运行负载测试并在关系图上启用阈值冲突
创建了负载测试后,请运行该测试以查看您的网站如何响应负载模拟。 运行负载测试时,可在**“负载测试分析器”**窗口中开始某些初始分析。
运行负载测试
在负载测试编辑器中打开负载测试后,单击绿色的**“运行”**按钮。 该负载测试开始在负载测试分析器的关系图视图中运行。
在测试运行时,单击工具栏上的**“显示图例”下拉列表按钮,然后选择“在关系图上显示阈值冲突”**。
如果测试模拟超过所有阈值,则树控件节点中将出现图标,以指示阈值冲突。 错误上覆盖着红色圆圈,而警告上覆盖着黄色三角形。
当您在关系图视图的**“页响应时间”关系图上看到阈值冲突图标时,请在负载测试分析器的工具栏中单击“添加分析注释”**。
此时将显示**“分析”**对话框。
在**“说明”**文本框中,键入阈值冲突。
在**“分析”**文本框中,键入 Red.aspx.cs 文件中的可疑代码缺陷。
注释将随负载测试结果一起永久保存。
运行完负载测试之后,在负载测试分析器的摘要视图中,将在显示“LoadTest1[时间]”的单独选项卡中显示负载测试结果。
分析负载测试
运行完负载测试之后,可以继续对负载测试结果做进一步分析。 有关更多信息,请参见负载测试分析器概述。
使用负载测试分析器分析负载测试
在摘要视图中,向下滚动到标题为**“错误”的表,然后单击“Http 错误”或“验证规则错误”**。
负载测试分析器将切换到显示有**“错误”**表的表视图,并且已选择您单击的规则类型。
在**“验证规则错误”规则类型对应的行中,注意在“子类型”错误列下列出的“ValidateResponseurl”**。 此阈值冲突是由您向 Red.aspx.cs 文件中添加的以下突出显示的代码引起的,该代码会随机引起最长为 5 秒的 mock 页延迟。
protected void Page_Load(object sender, EventArgs e) { Random rnd = new Random(); int result = rnd.Next(5000); //To emmulate various page times up to 5 seconds. Thread.Sleep(result); if (result < 500) Response.Redirect("NOWHERE"); //10% chance to cause an HTTP 404 error. }
此 mock 延迟可能与您之前在演练中指定的**“警告阈值”3 和“临界阈值”**4 都发生冲突。 警告图标显示为中间带感叹号的黄色三角形,临界冲突图标显示为中间带 X 的红色圆圈。
在**“Http 错误”错误类型对应的行中,注意在“子类型”错误列下列出的“404 - NotFound”**。 这是由添加到 Red.aspx.cs 文件中的以下突出显示的代码引起的。 此代码会产生 10% 的重定向到不存在页的机率,从而导致错误:
protected void Page_Load(object sender, EventArgs e) { Random rnd = new Random(); int result = rnd.Next(5000); //To emmulate various page times up to 5 seconds. Thread.Sleep(result); if (result < 500) Response.Redirect("NOWHERE"); //10% chance to cause an HTTP 404 error. }
在**“计数”列下,单击指向“验证规则错误”**规则类型编号的链接。
此时将显示**“负载测试错误”**对话框。
向右滚动,并在**“详细信息”列中单击“测试日志”**链接。
Web 性能测试查看器将在单独的选项卡中打开,其中显示了与该错误关联的 ColorWebTest。
单击“负载测试错误”对话框上的**“关闭”**。
选择“LoadTest[时间]”选项卡以返回显示负载测试结果的负载测试分析器。
在计数器面板中,观察**“Scenaro1”节点上是否有一个阈值警告图标。 展开该节点,直到到达受引起阈值冲突的代码影响的“Avg Page Time”**计时器。
在关系图视图中可以注意到,**“页响应时间”**关系图中显示的阈值冲突也会显示阈值冲突图标。
单击具有冲突图标的绘图线条。
绘制线条会加粗,并且**“Avg Page Time”计数器将在“红色”**(在前面的演练中添加的报告名称)请求的关系图视图图例中突出显示。
注意,**“Avg Page Time”计数器的“最大值”**列超出了您指定的阈值。
后续步骤
在本演练中,您使用 ColorWebApp Web 应用程序和 Web 性能测试 ColorWebTest.webtest 创建了负载测试,并且还了解了如何开始一些基本分析实践。
若要了解如何使用虚拟用户详细信息图进一步分析负载测试,请参见演练:使用虚拟用户活动图隔离问题。
若要了解如何使用测试控制器和测试代理跨多台计算机分发负载测试,请参见演练:在负载测试中使用测试控制器和测试代理。
请参见
任务
如何:使用“新建负载测试向导”创建用于对用户活动、测试、浏览器和网络建模的方案