此文章由机器翻译。
负载测试
使用 Microsoft Azure 和 Visual Studio Online 轻松进行负载测试
互联网是在商业世界中伟大的均衡器。它帮助最小的公司,与世界上最大的公司竞争。有是有风险的机会。应用程序必须执行所有的时间准时。停机时间直接等于失去的收入。为了帮助开发团队理解他们下胁迫和过度使用的应用程序的性能特点,微软发布了负载测试工具与 Visual Studio 团队系统于 2005 年。
甚至之前的版本中,Visual Studio 负载测试是最广泛内部使用的测试工具之一。这引出了一个问题,无论哪种工具使用,为什么没有负载测试获得整个世界同样接受?负载测试结果都不是来自大多数开发团队努力的设置和管理所需的基础设施。这是不必要的风险。
与 Visual Studio 2013 年,微软发布了基于云计算的负载测试作为视觉工作室在线的一部分。这解决了使用微软 Azure 时自动调配和主机负载测试基础设施的挑战。与 Visual Studio 2013 更新 3,云负载测试在 Visual Studio 在线应用的见解结合进一步增强。这有助于说明内部的诊断,如性能计数器、 例外和运行期间分配的对象。
创建负载测试
如果您不熟悉 Visual Studio 中的负载测试过程,你应该开始与 Web 性能测试和负载测试项目。从该文件执行此操作 |新的项目菜单。选择创建一个或多个 Web 测试的 Web 性能测试和负载测试。
为推动这些 Web 性能测试,向项目中添加一个负载测试 (请参阅图 1)。打开解决方案查找器、 用鼠标右键单击您的项目 (我名为 WebLoadTestProject1),选择添加,然后负载测试并按照新建负载测试向导中的指示。在负载测试中,该系统收集信息,如有多少用户持续时间、 类型的网络预热时间、 测试分布等等。另一个选项是创建动态负载测试中使用数据绑定 (见"基于云计算的负载测试的数据绑定 Web 测试")。
图 1 向项目中添加负载测试
数据绑定 Web 测试的基于云计算的负载测试
虽然静态的 Web 测试可以给你详细的性能信息关于您的应用程序,你将能够从动态的 Web 测试中获得更多的有识之士。这些动态负载测试通常提供不同的值,每次运行。举个例子,而不是发送搜索词"青蛙"数以千计的时代,它会更有意义,使用其他可能的搜索条件和测试边界条件 (如"蟾蜍,""青蛙",等等) 的名称。你可以完成这种先进的技术,称为数据绑定。
数据将 Web 测试绑定,您需要从 Web 测试工具栏添加到 Web 测试中的数据源。这种类型的动态测试将支持 XML 和 CSV 数据库作为数据源。请记住,对于 XML 和 CSV 数据源将整个文件复制到代理的虚拟机。此外,对于基于云计算的负载测试,测试代理需要能够连接到数据源。因此,数据库数据源需要在微软 SQL Azure 数据库上运行。
您使用 Web 测试的数据源的属性确定如何测试将遍历数据源:不能移动,随机、 顺序或独特。请注意,独特的属性目前还不能使用基于云计算的负载测试。添加了数据源后,您的查询字符串参数 (以前静态字符串"青蛙") 的 value 属性现在将下拉的菜单项。这将帮助您将测试绑定到数据源的特定的列。
Azure 付诸工作
通常情况下,真正的工作开始创建负载测试之后。在这一点上,测试团队需要申办实际上运行负载测试的测试代理的计算机。例如,如果您想要把 5,000 用户负载放在您的 Web 站点,您可以支持 500 个用户,每台计算机运行所需的测试,测试团队需要获取、 提供和管理额外的 10 台电脑。
然而,在 Local.TestingSettings 文件中使用选项时,Visual Studio 在线云负载测试可以照顾所有对你来说。默认情况下,云计算负载测试将自动启动每 500 个用户的 Azure 托管代理人。每个代理都有两个核心。
您可以重写此行为通过称为代理计数 (总芯) 一个新的运行设置属性。云计算负载测试的当前实现限制为最多 10 剂或 20 芯。云计算负载测试还需要至少 25 个用户每个核心。所以虽然你可以将代理计数 (总芯) 属性设置与只有 10 个用户的负载 10,云负载测试只会分配一个代理,通知您以下消息:
"此负载测试将运行使用一个代理芯。代理核心计数值已从 '10' 修改为 '人' 作为负载优化需要测试每个核心 '25' 虚拟用户。了解更多关于它在 go.microsoft.com/fwlink/?LinkID=310093."
对于包含超过 5000 个用户的测试,用户分布在 10 剂和 20 芯。
了解您的负载测试
你通常会开始您的负载测试的努力通过自问负载测试应该回答类似的问题:
- 是我的应用程序一样快,我期望吗?
- 是我变得更好的性能或变得更糟吗?
- 我的代码产生了荷载作用下的错误吗?
为了回答这些问题,Visual Studio 负载测试提供了几种不同的报告。它将然后自动存储它们的运行数据为您和您的团队在 Visual Studio 在线。
例如,使用吞吐量报告并让显示在负载测试执行期间,你将能够一眼就看出是否您的应用程序按预期运行 (请参阅图 2)。出人意料地快速的响应时间加上意料之外的失败次数会建议 (如服务正在下降或不正确的服务器名称) 的系统性失败。然后你可以中止负载测试。
图 2 Visual Studio 在线负荷测试报告页
传统负载测试 Visual Studio 负载测试解决具有挑战性的另一个方面是协作在团队环境中,如共享和存储负载测试结果。在负载测试管理器以在图 3,你只能看到两个团队成员都做性能测试。最后四个运行被中止,他们只是排队的另一个运行。好了,就不什么。
图 3 负载测试管理器
敏捷团队通常有兴趣了解他们当前冲刺 (sprint) 努力对性能的影响。要回答这个问题,Visual Studio 提供了两种不同的基于 Excel 报告,帮助团队比较运行及审查的趋势。若要查看此深入的信息,从 Visual Studio 在线下载运行的数据。单击查看报告链接。这将打开您的数据报表视图 — — 包括打开和比较多在 Excel 中运行数据集的选项。
在报告图 4 将 Sprint2 与 Sprint3 进行比较。你可以看到表演时 4%的速度慢,有更少的错误。这是一个可控的取舍对团队。
图 4 例已完成的负载测试报告
集成应用程序的见解
在负载测试期间发现的错误是经常质疑由于可疑的诊断收集技术。更糟的是却很难或不可能由于不足的诊断收集信息诊断这些错误。
随着 Visual Studio 2013 更新 2,云负载测试被增强结合应用的见解。请参阅 2014 年 5 月的文章,"下一代开发与应用透视"(msdn.microsoft.com/magazine/dn683794.aspx)。这种集成与生产监控工具使测试在开发或生产中的应用。它还可以帮助开发团队找到并开始以解决任何错误,他们发现,无论他们被发现时 — — 无论是小时、 天或星期早些时候。
若要包括综合的性能和诊断信息转化为云负载测试中使用应用程序的见解,请右键单击负载测试定义的应用程序节点。然后选择您想要包括在您的负载测试报告的应用程序的见解组件。
总结
云计算负载测试在 Visual Studio 在线去除了许多工作的设置和负载测试您的应用阳离子。虽然 Azure 使它易于扩展的应用程序和潜在地"买"你表现糟糕的代码,而无需负载测试的出路,它往往是难以或不可能知道这将花费多少。它也很难告诉你的客户是否要做到这一点之前有负面的影响。完全云负载测试,可以帮助您识别可以对您的业务产生影响的活动站点 bug。
Charles Sterling 已经在 Microsoft 工作 20 年了。在就职于 Microsoft 之前,他是在美国国家海洋渔业局工作的一名海洋生物学家,从事白令海海洋哺乳动物的研究。作为 Microsoft 产品经理在澳大利亚旅居 6 年后,Sterling 目前回到雷蒙德,担任 Visual Studio 开发团队的高级程序经理。您可以通过 chass@microsoft.com 与他联系。
衷心感谢以下 Microsoft 技术专家对本文的审阅:玛纳斯 Maheshwari