65.9K
CodeProject 正在变化。 阅读更多。
Home

通过 Visual Studio 2010 的负载测试更好地了解您的应用程序

2012 年 7 月 10 日

CPOL

9分钟阅读

viewsIcon

75620

downloadIcon

678

配置 Visual Studio 负载测试工具,并通过分析测试结果来扩展应用程序

引言

如今,每个业务应用程序都以各种复杂性构建,并随着大量数据的增长而发展。随着时间的推移,当数据量增加或用户群增加时,应用程序的整体性能可能会下降,甚至无法按预期交付。因此,作为预防措施,必须预先衡量应用程序的实际能力,以避免意外情况。如今,只为单个用户提供一致服务的简单应用程序正变得过时。现在是应用程序可伸缩性和性能在软件规范和架构中发挥关键作用的时候。因此,性能测试和分析变得很方便。本文的目标是提供一种快速简单的方法来配置真实场景的负载测试并分析结果。通过本文,我将分享我使用 Visual Studio 2010 Ultimate 实现负载测试和分析结果的经验。

必备组件

搜索“Visual Studio 2010 负载测试”这个短语足以让任何人找到大量关于基本负载测试设置的精彩文章。因此,本文将不走那条路,相反,我将分享一些额外的信息,并分享一些设置真实负载测试所需的配置,并重点分析结果。但在继续之前,如果您是这个领域的新手,我建议您学习 Web 测试和负载测试的基础知识。Visual Studio 2010 附带了一个非常方便的测试工具,我们将利用这个工具来执行负载测试。我建议您先了解如何设置 Web 测试,它将帮助您更好地理解。您可以提出任何额外的信息,以使此帖子更有帮助。

负载测试拓扑

负载测试涉及向系统生成流量并测量其响应方式。工具模拟大量用户在系统中执行各种真实场景,我们将为此目的使用 Visual Studio 2010。有两种运行负载测试的方法。从 Visual Studio 2010 生成负载,这将只使用 1 个核心/处理器,模拟用户限制为 250 个。另一种方法是通过测试平台进行负载测试,它可以模拟更多用户,需要在网络和硬件层进行更多配置。为了避免复杂性,我们将不关注测试平台,但总有一天我们也会分享这些经验。下图显示了如何使用 Visual Studio 2010 设置彻底的负载测试。
Load Testing Topology

负载测试

进行负载测试时,需要考虑以下因素:

  • 了解被测应用程序的环境
  • 定义用户场景的测试计划
  • 生成负载和捕获指标的工具
  • 性能指标分析
Visual Studio 2010 可以模拟每个处理器大约 1000 个用户。我们可以通过两种方法从 Visual Studio 2010 生成负载:
  • 默认:只使用 1 个核心/处理器,模拟用户限制为 250 个
  • 测试平台:可以使用多个核心/处理器,可以模拟更多用户
建议性能测试数据库和应用程序数据库不应在同一服务器上,否则当测试控制器在应用程序服务器上的数据库中采样和保存负载测试运行结果时,可能会影响测试结果。
configaration 1
Visual Studio 负载测试工具包含各种概念的实现,MSDN 对所有这些概念都进行了很好的解释,这对于初学者来说可能难以理解。因此,我列出了执行负载测试所需的一些重要概念。
  • 思考时间:用户在浏览网页时花费的时间,包括查看页面和确定下一步操作。思考时间不包括加载页面所需的时间。
  • Ramp Time(渐增时间):此属性允许用户数量从一个步骤到下一个步骤逐渐增加,而不是立即增加。
  • 采样率:收集测试数据的时间间隔。对于较长的负载测试,增加采样率可以减少收集的数据量。
  • 运行持续时间:测试预计运行的总时间。
  • 预热:负载测试将在预热期间逐渐增加负载
我们将使用上述概念配置在我们的附件示例项目中。为了模拟实时请求/响应,我们可以利用混合,它可以控制负载测试场景中测试、浏览器类型或网络类型之间分配的负载百分比。混合有三种类型:
  • 测试混合:它可以指定虚拟用户在负载测试运行期间随机选择特定测试的概率。
  • 浏览器混合:它不会在精简浏览器中模拟测试。测试代理包含一组选定浏览器的关联标头,并在提交之前添加到每个 HTTP 请求中。
  • 网络混合:它在应用层模拟网络带宽。它不模拟延迟。

配置和使用示例项目

示例项目包含 2 个项目

  • TestingBox:测试项目包含 Web 测试和性能测试
  • TestingBox-Demo:我们项目由负载测试调用
为了在您的应用程序中使用示例项目,您需要根据您的需要配置以下参数:
  • 思考时间:为了模拟真实的等待时间,我们设置为 3 秒。
  • 思考模式:正态分布
  • 阶梯渐增时间:用户负载将在 10 秒内从 10 个用户增加到 20 个用户
  • 采样率时间:系统将每 10 秒收集一次结果数据
  • 运行持续时间:10 分钟,根据阶梯负载分布计算
  • 预热持续时间:负载测试将在 5 秒内逐渐增加负载。
另一个考虑因素是数据库。Visual Studio 严格要求 SQL Server 作为负载测试存储。如果没有 SQL Server 数据库,则无法保存测试运行数据。您可以从“测试”(Visual Studio 菜单)>“管理测试控制器”检查数据库设置。将出现一个对话框,允许设置/重置测试数据存储的连接字符串。
configaration 2

分析结果

性能测试的主要目标是研究应用程序在正常负载和重负载下,持续时间或短时间的性能。为了了解我们应用程序的能力,我们的负载测试应该回答以下问题:

  • Web 应用程序在给定负载下是否正常运行?
  • 页面响应时间是否满足目标要求?
  • 测试期间 Web 应用程序上最慢的页面是哪个?
  • 哪个页面下载时间最长?
  • Web 应用程序可以处理多少并发用户?
在本节中,我们将尝试通过分析 Visual Studio 负载测试提供的图表来找到这些答案。
Visual Studio 2010 提供了多个内置图表。我们可以直接使用内置图表,也可以对其进行自定义。此外,我们还可以创建自己的图表。
负载测试分析器图表显示计数器。每个图表都遵循特定的测量方法来绘制图表。y 轴未标有任何特定范围,而是标有 0-100 的值,这些值表示每个计数器总范围的百分比。例如,对于范围为 1000 的计数器,y 轴上的数据点 60 对应于计数器的值 600。折叠图表的水平时间轴 x 轴的起点为 00:00,范围覆盖整个测试运行。平均值不会在图表中绘制。
result monitor
我们可以通过以下方式使用负载测试分析器分析负载测试结果:
  • 在负载测试运行时实时监控它。
  • 分析负载测试结果
  • 分析以前负载测试的结果。

现在让我们尝试从图表中找到答案。
Web 应用程序在给定负载下是否正常运行?
我们可以创建一个 HTTP 摘要图表,其中包含“请求超时”、“通过请求”、“失败请求”。这将提供在测试期间基于时间的错误频率。错误率是压力测试中一个重要的指标。它表示可以正确服务的最大用户数,没有错误,从而表示应用程序容量。
理想情况下,在整个测试运行期间,错误百分比应为零。如果错误百分比很高,则应分析错误的根本原因。这可能是由于负载测试输入错误、网络连接问题或服务器可能崩溃。
http summary
页面响应时间是否满足目标要求?
Visual Studio 负载测试有一个名为“页面响应时间”的内置图表。此“响应时间与经过时间”报告显示了在负载测试经过时间内的事务平均响应时间,如下图所示。
从这张图可以看出,响应时间在一段时间内出现了峰值。理想的响应时间图表行为是响应时间不随负载增加。图表急剧增加的点表示服务器无法在此负载下处理请求,用户将看不到响应或响应非常慢。
测试期间 Web 应用程序上最慢的页面是哪个?
同样,“页面响应时间”图表也可用于此目的。此图表表示每个页面在时间上的平均响应时间。图表中的每个条形图都是每个页面的平均服务器响应时间。通过此图表可以识别应用程序中最慢的页面。
result as a grid
哪个页面下载时间最长?
同样,“页面响应时间”图表也可用于此目的。图表中的每个点都是该时间间隔内页面下载时间的平均值。单个页面的页面下载时间图表可帮助您识别下载时间较长的确切页面。
Web 应用程序可以处理多少并发用户?
内置的“测试响应时间”图表可用于此目的。如果我们分析“响应时间与测试响应”图表,我们可以找出 Web 应用程序的能力。响应时间图表显示了随着测试负载增加,服务器响应所需的时间。峰值表示服务器已达到其服务数据的容量,并且无法进一步扩展。

最后,Visual Studio 负载测试提供了更多功能,本文只关注那些我认为对于更好地了解您的应用程序很重要的分析。如果您需要,可以利用结果数据生成大量自定义报告。希望这能对您有所帮助。

参考文献

负载测试演练
在测试平台中运行测试
思考配置文件/时间
添加/编辑测试数据库

历史

V 1.0:TestingBox V 1.0,包含配置和分析。

© . All rights reserved.