创建和编辑负载测试

可以创建 Web 性能,负载测试项目向负载测试添加到您的解决方案。 负载测试可以包含单元测试和 Web 性能测试。 负载测试的主要目的是模拟许多用户同时访问一台服务器的情况。 负载测试用于获得应用程序的压力和性能数据。 可以将负载测试配置为模拟各种负载情况,如用户负载和网络类型。 新负载测试是使用“新建负载测试向导”创建的,在该向导中可指定负载测试的初始设置。 初始设置包括方案、计数器集和运行设置。

要求

  • Visual Studio 旗舰版

请参见 视频:在 Visual Studio 中测试加载应用程序

任务

任务

相关主题

创建新的负载测试:可以使用 Visual Studio 旗舰版中的“新建负载测试向导”创建负载测试,以便测试应用程序的压力和性能。

编辑现有的负载测试:,在负载测试后是使用新建负载测试向导中,可以修改,并配置各种设置和属性使用负载测试编辑器。

包含编码的 UI 测试的负载测试:可以创建包含编码的 UI 测试的负载测试作为性能测试。 由于编码的 UI 测试允许您在 UI 层捕获性能,因此该测试在特定情况下很有用。

为负载测试指定 64 位进程:可对正用于负载测试的测试设置进行配置,以指定您要使用 64 位进程。

相关任务

配置负载测试运行设置

运行设置是影响负载测试的运行方式的一组属性。 在“属性”窗口中,运行设置按类别进行组织。

负载测试的注意事项

在 Visual Studio 旗舰版应考虑执行用以下提示负载测试:

选择适当的负载模式

选择适当的连接模型

采样速率和数据收集

思考时间

为 Web 性能测试请求设置响应时间目标

包括计时详细信息以收集百分比数据

设置“新用户的百分比”属性

启用 ASP.NET 探查器

启用虚拟用户日志记录

启用 SQL 跟踪

保持适当的代理计算机数

选择适当的负载模式

负载模式分为三种:常量负载模式、分级负载模式和基于目标的负载模式。 若要为负载测试选择适当的负载模式,必须了解每种模式的优点。 有关更多信息,请参见编辑负载模式以便为虚拟用户活动建模

常量

如果希望长时间内采用不变的用户负载运行负载测试,常量负载模式很有用。 如果为常量负载模式指定较高的用户负载,那么建议还要为负载测试指定预热时间。 如果指定了预热时间,便可以避免因成百上千个新用户会话同时命中站点而造成压力过大。

步骤

分级负载模式是一种最常见和实用载荷模式,因为它可用于监视系统的性能,随着用户负载的增加。 监视您的系统随着用户负载增加可确定可以支持具有接受响应时间用户的数目。 相反,它还允许您确定性能变得不可接受用户的数目。

如果每个步骤添加大量用户,例如,超过 50 个用户,请考虑使用 单步负载增加时间 属性错开用户的开头该步骤的。 有关更多信息,请参见如何:为分级负载模式指定单步负载增加时间属性

基于目标的负载模式

基于目标的负载模式与分级负载模式因为用户负载通常会随时间增长。 但是,它允许您指定负载应停止增加,因为某些性能计数器达到一定水平时。 例如,可以使用基于目标的负载模式持续增长负载,直至目标服务器之一的占用率达到 75%,然后保持负载稳定。

如果预定义的负载模式无法满足需求,那么还可以实现自定义负载测试插件,以便在负载测试运行时控制用户负载。 有关更多信息,请参见为负载和 Web 性能测试创建和使用自定义插件

选择适当的 Web 性能测试连接模型

使用 Web 测试连接模型 属性,负载测试运行设置中支持建模用户连接的不同选项与 Web 服务器。 连接模型分为三种:每个用户专用连接,连接池和每个测试迭代专用连接。 若要为负载测试选择适当的连接模型,必须了解每种模型的优点。

每个用户专用连接

每个用户专用连接模型最为逼真地模拟了真实浏览器的行为。 每个运行 Web 性能测试的虚拟用户最多使用六个与每个 Web 服务器的连接。 对于专用于该虚拟用户的 Web 服务器,连接一直保持打开状态。 当在 Web 性能测试中发出第一个请求时,即建立第一个连接。 附加连接,当页中包含多个从属请求时,可以使用。 使用其他连接,这些请求可能并行发出。 旧式浏览器对于每个 Web 服务器最多使用两个连接,但 FireFox 3 和 Internet Explorer 8 对于每个 Web 服务器最多使用 6 个连接。 在整个负载测试中对虚拟用户重用这些相同的连接。

连接的缺点每个用户模型是保持打开的连接数在代理计算机上,达用户负载的六倍,甚至更高,如果多个 Web 服务器目标和所需的资源支持此高连接数可能会限制可由单个负载测试代理驱动的用户负载。

连接池

连接池模型在多个虚拟 Web 性能测试用户之间共享 Web 服务器的连接,从而节约负载测试代理上的资源。 在连接池模型中,连接池大小指定了负载测试代理与 Web 服务器之间的最大连接数。 如果用户负载大于连接池大小,则代表不同虚拟用户运行的 Web 性能测试将共享同一连接。 这是用于驱动应用层的大多数负载的最佳模型。

共享同一连接方法个 Web 性能测试可能必须等待才能发出请求。,而另一个 Web 性能测试正在使用连接时。 负载测试性能计数器“平均连接等待时间”将跟踪 Web 性能测试在提交请求之前的平均等待时间。 此数字应小于页的平均响应时间。 否则,连接池大小可能会太小。

每个测试迭代专用连接

每个测试迭代专用连接在每次测试迭代后关闭连接,并在下一次迭代时打开新连接。

此设置将在您的网络登录将解决方案非常大的压力。 除非是必需的,建议您使用前面两个选项之一。

采样速率和数据收集

根据负载测试的长度选择适当的采样速率。 采样速率越小(如 5 秒),收集的每个性能计数器的数据就越多。 长时间收集大量的数据可能会引起磁盘空间错误。 对于长的负载测试,可以提高采样速率以减少收集的数据量。 性能计数器的数量也会影响收集的数据量。 对于测试的计算机,减少计数器数减少收集的数据量。

若要确定采样速率适合您的特定负载测试的测试,必须测试。 下表提供可用于启动的建议的采样速率。

负载测试持续时间

建议的采样速率

< 1 小时

5 秒

1 - 8 小时

15 秒

8 - 24 小时

30 秒

> 24 小时

60 秒

思考时间

Web 性能测试请求的思考时间对响应时间处于合理程度下所能支持的用户数具有较大的影响。 更改思考时间从 2 秒的时间为 10 秒通常可以模拟 5 次多个用户。 但是,因此,如果您的目标是模拟真实的用户,应设置思考具体取决于如何预期用户的时间将网站上的行为方式。 增大思考时间和用户数不一定会给 Web 服务器带来更大的压力。 如果网站会进行身份验证,则所用的方案类型将影响性能。

如果禁用 Web 性能测试的思考时间,可以生成具有更高的吞吐量有关每秒请求的负载测试。 如果禁用思考时间,则还应当将用户数减少到比启用思考时间时的用户数少得多的水平。 例如,如果禁用思考时间并尝试运行 1000 个用户,那么无论是目标服务器还是负载测试代理,都很可能会过载。

有关更多信息,请参见编辑思考时间以在负载测试方案中模拟网站上的人机交互延迟

为 Web 性能测试请求设置响应时间目标

Web 测试请求的属性之一是响应时间目标。 如果为 Web 性能测试请求定义响应时间目标,那么当在负载测试中运行 Web 性能测试时,负载测试分析器将报告响应时间未达到目标的 Web 性能测试的百分比。 默认情况下,不为 Web 请求定义响应时间目标。

此外,如果您使用“响应时间目标”验证规则,则不满足响应时间目标的页将导致负载测试出错。 如果您使用错误日志,可以看到页面变得缓慢时虚拟用户正在执行的操作。

有关更多信息,请参见如何:在 Web 性能测试中设置页面响应时间目标

包括计时详细信息以收集百分比数据并启用详细信息视图

运行设置包括一个名为**“计时详细信息存储”的属性。 如果启用此属性,则在负载测试过程中执行各个测试、事务和页所需的时间都将存储在负载测试结果存储库中。 这将在负载测试分析器中启用虚拟用户活动图。 这还使得 90%、95% 和 99% 的数据以及标准偏差显示在负载测试分析器的“测试”“事务”“页”**表中。

默认情况下,启用**“计时详细信息存储”**属性,使用负载测试分析器在负载测试结果的“详细信息”视图中支持虚拟用户活动图。

您应考虑对大型测试禁用**“计时详细信息存储”**属性。 这样做有两个重要的原因:

  • 负载测试结果存储库中存储计时详细信息数据所需的空间可能会非常大,尤其是对于较长的负载测试。

  • 在负载测试结束时将此数据存储到负载测试结果存储库中所需的时间很长,因为在负载测试完成执行之前此数据一直存储在负载测试代理上。

如果负载测试结果储存库中可用的磁盘空间足够大,那么可以启用**“计时详细信息存储”以获得百分比数据。 启用“计时详细信息存储”有两个选项:“StatisticsOnly”“AllIndividualDetails”。 使用任一选项,所有单个测试,页,并且,事务超时,并且,百分比数据从单个计时数据计算。 如果选择“StatisticsOnly”,则在计算完百分比数据之后,从储存库中删除单个计时数据。 删除数据可以减少储存库中所需的空间量。 不过,如果要使用 SQL 工具直接处理计时详细信息数据,或允许在虚拟用户活动图中查看虚拟用户详细信息,则可以选择“AllIndividualDetails”**,以将计时详细信息数据保存在存储库中。

有关更多信息,请参见在负载测试分析器的详细信息视图中分析负载测试虚拟用户活动如何:将负载测试配置为收集完整详细信息,以便在测试结果中启用虚拟用户活动

设置“新用户的百分比”属性

负载测试中的每个方案都具有名为**“新用户的百分比”**的属性。 此属性会影响负载测试运行时引擎对 Web 浏览器执行的缓存的模拟方式。 **“新用户的百分比”**的默认值为 0。 这意味着每个虚拟用户均保留两次测试迭代之间的从属请求虚拟缓存和 Cookie 列表。 缓存工作方式类似于浏览器缓存。 因此,将不会对 URL 进行后续请求。 这非常类似于实际 Web 浏览器。

如果将“新用户的百分比”设置为 100%,则每个用户实际上都是“一次用户”,永远不会返回网站。 在这种情况下,负载测试中运行的每次 Web 性能测试迭代都被视为用户第一次访问网站,这些用户的浏览器在以前的访问中缓存的内容中没有来自网站的任何内容。 因此,在 Web 性能测试中的所有请求下载。 这包括所有从属请求,例如图像。

备注

但存在一种例外情况,即当 Web 性能测试中多次请求同一个可缓存资源时。

使用 0 % 新用户 的默认值驱动大多数加载到网站的应用层。 此值非常类似于实际用户和驱动更多加载到应用程序层,大多数性能问题。 有关更多信息,请参见如何:指定使用 Web 缓存数据的虚拟用户的百分比

启用 ASP.NET 探查器

在运行负载测试时,ASP.NET 探查器诊断数据适配器可以从应用程序层收集 ASP.NET 探查器数据。 在不应运行长探查器负载测试,例如负载测试运行大大超过一小时,因为探查器文件会很大 (几百兆)。 应使用 ASP.NET 探查器运行较短的负载测试,从而仍具有深入诊断性能问题的优点。

有关更多信息,请参见如何:在 Visual Studio 中使用测试设置为负载测试配置 ASP.NET 探查器

启用虚拟用户日志记录

可以收集失败的完整记录测试或通过指定记录的一个频率测试。 日志记录由**“测试未通过时保存日志”“为已完成测试保存日志的频率”“最大测试日志数”属性控制。 收集的日志数由“最大测试日志数”“为已完成测试保存日志的频率”**属性设置控制。 默认设置会阻止收集大量日志。 对于将生成数百万条请求的长时间运行的测试,不要使用设置的 为已完成测试保存日志的频率,因为记录数会变得太大。 此外,将 最大测试日志数 属性设置在合理的数字。 设置控件的以下属性的最大日志数每个错误类型。 因此,您应保留此设置。 它将阻止集合数万记录。 收集大量记录增加测试结束时收集日志的时间,并为的存储空间负载测试数据库。

有关更多信息,请参见修改负载测试记录设置

启用 SQL 跟踪

运行设置包括一个名为**“已启用 SQL 跟踪”的属性。 通过此属性,可以在负载测试期间启用 Microsoft SQL Server 的跟踪功能。 这是在运行负载测试时启动单独的 SQL Profiler 会话来诊断 SQL 性能问题的替代方法。 如果启用此属性,则负载测试分析器中将显示 SQL 跟踪数据。 可以在“表”页的“SQL 跟踪”**表中查看该数据。

若要启用此功能,则运行负载测试的用户必须具有执行 SQL 跟踪所需的 SQL 特权。 如果使用测试代理和测试控制器在远程计算机上运行负载测试,则控制器用户必须具有 SQL 特权。 还必须指定写入跟踪数据文件的内容。 此目录通常是网络共享。 在完成负载测试时,跟踪文件数据将导入到负载测试储存库中,并与负载测试。 跟踪数据文件以后可以查看使用负载测试分析器。

有关更多信息,请参见配置负载测试运行设置收集 SQL 跟踪数据,以监视和提高负载测试中的性能

保持适当的代理计算机数

如果代理计算机的 CPU 使用率超过 75%,或可用的物理内存低于 10%,则该计算机负载过度。 可以向测试控制器添加更多的代理计算机,以确保代理计算机不会成为负载测试的瓶颈。

有关更多信息,请参见使用测试控制器和测试代理在多台测试计算机之间分发负载测试运行如何:指定要在负载测试方案中使用的测试代理

外部资源

Dd728098.collapse_all(zh-cn,VS.110).gif视频

在 Visual Studio 中测试加载应用程序

请参见

任务

演练:创建并运行包含 Web 性能测试的负载测试

演练:创建并运行包含单元测试的负载测试

概念

使用 Visual Studio Web 性能和负载测试进行性能和压力测试