将测试控制器和测试代理用于负载测试
本主题适用于:
Visual Studio 旗舰版 |
Visual Studio 高级专业版 |
Visual Studio Professional |
Visual Studio 学习版 |
---|---|---|---|
可以通过使用测试控制器和测试代理跨多台计算机分摊负载并模拟多个虚拟用户来运行负载测试。
不想使用您的资源并将您自己的计算机设置为创建此负载吗? 可以使用基于云的负载测试来提供同时生成访问网站的多个用户的负载的云端虚拟机。 您所需要的是一个 Visual Studio Online 帐户。 了解有关这个基于云的负载测试服务,它每月提供负载测试的 15000 分钟的免费虚拟用户时间。
若要了解负载测试您的应用程序与本地资源所需的配置,请遵循本主题的其余部分中的信息。
典型远程配置:
Machine1 和 Machine2:Visual Studio(多名测试人员可以使用同一个控制器)。
Machine3:控制器(也可安装代理)。
Machine4-n:与 Machine3 上的控制器关联的一个或多个代理。
在运行负载测试时,通常由计算机的内存和处理能力控制可为测试生成的负载量。 测试控制器不生成负载,但会从测试代理收集负载测试统计信息,并从测试代理和测试中的系统收集性能计数器数据。 因此,对于所存储的数据量以及运行测试时所涉及的测试代理数,测试控制器使用的数据库都需要资源。 下表可以用作确定测试控制器和测试代理的硬件要求的指南。
组件 |
测试控制器应用层 |
测试控制器数据层 |
测试控制器应用/数据层 |
---|---|---|---|
CPU |
最低:1 GHz 建议:2 GHz |
最低:1 GHz 建议:2 GHz |
最低:1 GHz 建议:2 GHz |
磁盘 –系统 |
最低:1 GB 建议:1 GB |
最低:1 GB 建议:1 GB |
最低:1 GB 建议:1 GB |
磁盘 - 安装 |
最低:1 GB 建议:48 GB |
最低:8 GB 建议:48 GB |
最低:8 GB 建议:48 GB |
内存 |
最低:1 GB 建议:1 GB |
最低:1 GB 建议:1 GB |
最低:1 GB 建议:1 GB |
若要能够使用测试控制器运行负载测试,则必须配置测试控制器上的负载测试数据库以使用要在运行负载测试时使用的 SQL Server 的实例。 如果没有 SQL Server,则可以使用 Visual Studio Premium 中包含的 SQL Express 作为负载测试存储。 有关如何配置测试控制器的更多信息,请参见安装和配置测试代理和测试控制器。
在确定硬件规格时,请考虑下面的一些其他因素。
组件 |
测试代理 |
测试控制器应用层 |
测试控制器数据层 |
测试控制器 AT/DT |
---|---|---|---|---|
CPU |
根据测试的不同,CPU 经常成为限制因素。 |
未大量使用。 |
未大量使用。 |
未大量使用。 |
磁盘 |
在负载测试中启用了详细日志记录的情况下大量使用。 |
未大量使用。 |
24 小时测试数据需要 10 GB 空间。 |
24 小时测试数据需要 10 GB 空间。 |
内存 |
根据测试的不同,内存可能成为限制因素。 |
未大量使用。 |
由 SQL 大量使用。 |
由 SQL 大量使用。 |
特定测试代理可以生成的负载量在各个测试之间变化很大。 大多数测试都受 CPU 约束。 CPU 使用率与每秒请求数 (RPS) 成正比。 对于其他负载测试,内存是限制因素。 负载代理可以产生的 RPS 取决于许多因素。 这些要求包括:
用户负载
思考时间
身份验证方案
请求和响应的大小
响应时间
响应验证级别
承受负载的测试类型(Web 测试或单元测试)
思考时间是用于确定 CPU 约束测试中用户数的主要因素。 通过将思考时间从 2 秒更改为 10 秒,你可以模拟 5 倍的用户,但所生成的 RPS 将是相同的。 如果你的目标是模拟真实的用户,则应当根据用户在网站上的行为方式来设置思考时间值。 增大思考时间和虚拟用户数不一定会给 Web 应用程序带来更大的压力。
在进行使用“每个用户专用连接”连接模式的测试时,测试代理可能受内存约束。 可以在负载测试运行设置中配置两种连接模式。 在“连接池”模式(默认设置)中,会将连接放入池中,但每个用户在处于活动状态时仍使用两个连接。 在此模式下,将通过连接池对所有虚拟用户进行多路复用。 这样,你就可以拥有共享 100 个连接的 1000 个活动虚拟用户。 在“每个用户专用连接”模式中,每个用户都有一个连接,该连接由两个向服务器开放的实际连接组成。
如果使用 Web 测试针对具有 3 到 5 秒思考时间的典型 ASP.NET 应用程序进行负载测试,则可以从具有 2 GHz CPU 和 1 GB RAM(建议配置)的单处理器测试代理模拟大约 1000 个用户。 支持的用户数是思考时间的函数。 如果思考时间较长,则可以支持更多用户。
运行 Visual Studio Premium 的服务器应该具有可靠的网络连接,其最小带宽为 1 Mbps,最大延迟为 350ms。 测试代理和测试控制器之间不应有任何防火墙。 如果测试性能达不到你的预期要求,请考虑升级硬件配置。
调整 SQL 规模时的注意事项
默认情况下,SQL Express 已安装在控制器上,并由控制器用作负载测试结果的默认 SQL 存储区。 SQL Express 数据库由许可证限制为存储 10 GB 数据。 这大约是典型负载测试 24 小时的负载测试数据。 负载测试数据所需的空间变化很大,具体取决于测试。
负载测试过程中,会收集每台计算机上每个计数器实例的样本。 因此,数据库中所需的空间大小取决于以下因素:收集的计数器数、测试中涉及的计算机数以及由采样速率控制的采集样本数。
可以在负载测试的运行设置中收集计时详细信息。 这会启用虚拟用户活动图。 还可以收集详细的虚拟用户日志。
负载测试运行可以使用一个或多个诊断数据适配器来收集信息或影响测试计算机。 这些诊断数据适配器可在运行的测试设置中进行配置。 这些适配器的数据也存储在 SQL Express 中,可能需要大量空间,具体取决于诊断数据适配器。
如果可以,请考虑使用单独的数据库来存储负载测试数据。 该数据库可以存储在测试控制器计算机上,或存储在其他计算机上。 若要更改数据存储区,请将包含在 .sql 文件中的 SQL 命令提交给要用作负载测试结果存储区的 SQL 服务器的实例。 以下是可以实现此目的两种方法。 一种方法是在命令提示符处使用 sqlcmd 命令,并指定连接到所需数据库时需要的选项。 使用“–i”选项可指定 loadtestresultsrepository.sql 的路径。 另一种方法是使用与 SQL 之间的一种 GUI 接口(如查询分析器),打开 .sql 文件并提交连接。
请参见
任务
[已停用] 如何:使用测试设置中指定的测试控制器和测试代理运行负载测试