使用 StresStimulus 进行 Web 站点负载测试:第一部分——入门






4.60/5 (6投票s)
了解如何使用StresStimulus(Fiddler的负载测试扩展)来负载测试您的网站。
本系列
- 使用StresStimulus进行网站负载测试,第一部分 - 入门
- 使用StresStimulus进行网站负载测试,第二部分 - 高级功能
引言
在网站上线前对其进行负载测试是个好主意,以确保它不会在负载下崩溃或表现不佳。相当不久前,推出了一款名为StresStimulus的新负载测试器。它价格合理,并具有一些独特的功能,使其非常适合负载测试ASP.NET网站,因此本文将讨论其功能。您还将找到一个(远非详尽的)其他流行负载测试器的列表,以便更容易地决定您想使用哪种负载测试器。
本文首先列出StresStimulus的功能,然后展示如何开始进行第一次负载测试。第二部分将深入探讨参数化等更高级的主题。
目录
如果您喜欢这篇文章,请 投票支持它。
其他流行的负载测试器
简单的Google搜索将为您提供StresStimulus以外的许多负载测试工具。在下表中,您会找到一些最流行的可用负载测试器。
WCat | 简单快速的负载测试器。免费,但缺少一些基本功能,例如对ViewState的支持。 |
Apache JMeter | 基于Java的开源负载测试器。学习曲线陡峭。 |
WAPT | 价格合理的负载测试器。易于使用。 |
Visual Studio 2010 Ultimate内置的负载测试器 | 优秀的全功能产品,功能强大且易于使用。但价格非常昂贵。 |
StresStimulus要求
要运行StresStimulus,您需要
- Fiddler 2.3.4.4或更高版本(免费下载)。
- Windows 2000至2008 / XP / Vista / 7,并安装Microsoft .NET Framework 2.0或更高版本。
- 5 MB可用磁盘空间 / 800 MHz处理器 / 256 MB RAM。
版本
StresStimulus有以下版本
本文的其余部分将清楚地说明何时某个功能仅在Pro版本中可用(即,不适用于免费版本)。
- 免费版 - 允许您进行真实的负载测试。无时间限制,可根据需要使用。在关键领域有限制,包括:
- 测试结果报告减少。仅提供摘要信息。没有性能计数器报告。
- 无法保存或加载测试用例。下次运行StresStimulus时,需要重新创建测试用例。
- 虚拟用户数量限制为100。
- 测试持续时间限制为10分钟或999次迭代。
- 减少了思考时间选项。
- Pro评估版 - 启用所有功能,但仅适用于非常轻量级的负载测试。
- 无时间限制 - 可根据需要使用。
- 虚拟用户数量限制为10。
- 减少了思考时间选项。
- Pro试用版 - 14天试用,所有功能均已启用。
- Pro付费版 - 启用所有功能。最大虚拟用户数量取决于您的许可证。
功能
- Fiddler(流行的HTTP调试代理)的扩展。
- 非常容易创建简单的测试。
- 允许您使用浏览器记录测试用例,然后让多个虚拟用户重复该测试用例。
- 以图形和文本报告(免费版有限制)显示测试结果。
- 支持参数化,允许您从输入文件中加载表单字段值。
- 支持Basic和NTLM身份验证,允许模拟用户使用Windows帐户登录您的网站(仅限Pro版本)。
- 模拟数千个虚拟用户(Pro评估版限制为10个,免费版限制为100个)。
- 让您逐步增加负载,以找出网站的瓶颈。
- 虚拟用户跟踪Cookie和隐藏字段,例如ViewState。
- 设置虚拟用户的思考时间。
- 让您设置模拟浏览器(IE版本,Firefox版本,Chrome等)和网络(LAN,拨号等)。
- 让您设置预热时间,以允许Web站点缓存预先填充。
- 跟踪性能计数器(仅限Pro版本)。
- 能够将测试用例保存到文件(仅限Pro版本)。
局限性
由于与Fiddler紧密集成,StresStimulus缺少一些更复杂的负载测试器中可用的功能。
- 无法在同一个测试用例中混合不同的场景(浏览,购买,搜索等)。
- 您无法让多个负载生成机器由单个控制器控制。显然,您可以同时在多台计算机上运行StresStimulus,但需要手动协调它们。
- 没有简单的方法来比较测试运行,例如您网站不同版本的测试。
负载测试基础
在创建第一个负载测试之前,让我们快速概述一下Fiddler和StresStimulus。
开发网站的挑战之一是它们同时被许多用户使用。不幸的是,当您测试网站时,只有一个用户 - 您。您的网站可能仅支持一两个用户,但在几十个或几百个用户的情况下可能会崩溃或表现不佳。您希望在上线前找出任何问题,而不是上线后。
如何在新网站上线前让大量用户访问它?您可以要求同事或朋友访问您的网站,但这需要大量工作。使用像StresStimulus这样的程序要容易得多,该程序可以释放几十个、几百个(或几千个)虚拟用户来访问新版本的网站。此外,您需要告诉这些虚拟用户访问哪些页面。如果您的网站上有表单,则需要告诉他们要在这些表单中填写什么值。
这是Fiddler和StresStimulus如何帮助您实现这一点
- 当您运行Fiddler时,您从浏览器发送到网站的所有*请求*以及返回到浏览器的所有*响应*都会被Fiddler记录。请求可能只是请求一个网页,或者将您输入的表单值发送到网站。
- 每个请求/响应对称为一个*会话*。当您运行Fiddler时,它们会依次出现在Fiddler左侧窗格中。
- 这意味着您可以通过简单地使用浏览器访问您自己的网站页面并向网站提交表单来记录会话。
- 然后,您可以选择Fiddler中的一个或多个会话,并告诉StresStimulus将它们构建成一个*测试用例*。这告诉虚拟用户请求哪些页面以及发送哪些表单值。
- 您可能希望每个虚拟用户多次执行测试用例。因此,除了设置虚拟用户数量外,您还可以设置*迭代*次数 - 即,您希望测试用例重复的次数。
- 为了使测试更真实,您可以使用参数化功能让StresStimulus为每次迭代使用新的表单值,设置思考时间等。通过查看测试结果,您可以了解网站的性能。
创建简单的负载测试
要创建您的第一个负载测试
如果您正在使用本文下载中的测试网站,页面底部有一个*打开跟踪日志*链接。单击该链接可查看发送到该网站的所有流量的跟踪,包括您生成的和StresStimulus生成的。
- 首先关闭所有打开的网站,以免在记录第一个会话时发生干扰。
- 运行Fiddler。
- 要切换免费版和Pro评估版,请打开Fiddler窗口左上角的*StresStimulus*菜单,然后单击*使用免费版*或*使用Pro版*。
- 运行本文下载中的测试网站。或者运行您自己的网站。如果您愿意,可以在Visual Studio中本地运行该网站。按一些按钮以生成页面加载。
- 如果您现在切换回Fiddler,您将看到您生成的请求及其响应现在出现在左侧窗格中。。
- 单击右侧窗格中的*检查器*选项卡,然后单击左侧窗格中的一个会话。这将显示请求及其响应的头信息和内容。
- 选择要回放的请求
- 单击*StresStimulus*选项卡。
- 在左侧窗格中,按住Ctrl键,单击您想要回放的请求。
- 单击*设置测试用例*按钮上的下拉箭头,然后选择*使用选定会话设置测试用例*。选项*使用所有会话设置测试用例*将仅选择左侧窗格中的所有会话。
- 现在通过单击*仅运行一次测试用例*按钮来回放选定的请求一次。您将看到StresStimulus生成的请求出现在左侧窗格中。
- 在Fiddler窗口的左上角,打开*StresStimulus*菜单,然后单击*保存测试*以保存您的测试设置(仅限Pro版本)。
增加负载
仅回放一次测试用例并不能真正称之为负载测试。让我们增加测试用例的执行次数。同时,我们还将增加虚拟用户的数量。
调试测试只是负载测试,只不过它们在测试期间显示生成的会话。当本文的其余部分提到负载测试时,也包括调试测试。
- 展开*测试配置*树,然后单击*负载模式*。
- 选择*恒定负载*并将*虚拟用户数量*设置为10。这将使10个虚拟用户向您的网站发送请求。
- 在*测试配置*树仍然展开的情况下,单击*测试持续时间*。
- 将*测试完成条件*设置为*迭代次数*,并将迭代次数设置为20。
- 单击*开始测试*按钮启动负载测试。
- 如果您正在使用本文下载中的测试网站,并且仍然打开了跟踪页面,则可以通过刷新页面来查看请求和响应的发生过程。
- 您也可以在Fiddler窗口本身中看到StresStimulus生成的请求,但要做到这一点,您必须运行*调试测试*而不是负载测试。在之前的测试完成后,单击*开始测试*按钮上的下拉按钮,然后选择*调试测试*。然后再次单击按钮开始测试。
- 负载测试或调试测试完成后,您可以通过单击*重置*按钮来删除左侧窗格中的所有请求,只保留构成负载测试的请求。
测试结果
StresStimulus提供以下类型的测试结果
测试运行时图表
一旦开始负载测试,StresStimulus就会切换到图表窗格,显示每秒请求数、平均响应时间等图表。
同一窗格中的第二组图表显示性能计数器的值,例如*处理器时间百分比*(仅限Pro版本)。StresStimulus允许您将性能计数器添加到此图表(方法)。
负载测试完成后,图表将保留在原位,直到您运行另一个测试。要导航回图表,请展开*测试结果*并单击*图表*。
详细报告
负载测试完成后,将提供更详细的报告。这些报告可以通过单击*测试结果*下的选项来访问。
- 测试摘要 - 关于您的网站性能如何的详细摘要,以及负载测试本身的详细信息(持续时间,虚拟用户数量等)。
- 页面详细信息(仅限Pro版本) - 关于每个单独*aspx*页面性能的详细信息,例如最小、最大和平均响应时间。
- 请求详细信息(仅限Pro版本) - 显示所有请求文件的详细信息,而不仅仅是*aspx*文件。不如*页面详细信息*详细。显示您的网站如何快速提供图像等。
- 迭代详细信息(仅限Pro版本) - 对测试期间执行的迭代的稀疏摘要。
将测试结果保存到文件
有两种方法可以将测试结果保存到文件。首先,通过单击*测试结果*,然后单击*创建报告*按钮(仅限Pro版本)。这将生成一个HTML文件,您可以在浏览器中打开它。
其次,您可以简单地将结果复制并粘贴到文件中。*测试摘要*视图可以复制到文本文件中 - 只需用鼠标选择文本并复制粘贴即可。*图表*、*页面详细信息*、*请求详细信息*和*迭代详细信息*视图中的网格可以复制到电子表格中。如果您没有Microsoft Excel,可以尝试免费的Open Office套件中的电子表格。
StresStimulus生成的请求
在负载测试期间(与调试测试相反),StresStimulus出于性能原因不在左侧窗格中显示生成的请求 - 可能会有数千个。测试完成后,要查看左侧窗格中的请求,请单击*结果*按钮上的下拉菜单。
- 错误和超时 - 出现问题的请求。
- 主要请求 - 仅请求*aspx*文件,不包括图像等。
- 所有请求 - 所有请求,包括图像等。
- 用户迭代 - 显示特定虚拟用户的特定迭代。
这里的一个问题是,当您运行正常的负载测试(与调试测试相反)时,StresStimulus不会存储生成请求的详细信息,除了它们确实发生的事实。考虑到可能数万个生成请求所需的空间,这是合理的。但这对于您想知道来自服务器的请求及其响应的内容或标头时帮助不大。
您可以通过运行*调试测试*(方法)来解决此问题。这将存储所有生成请求及其响应的详细信息。这允许您检查所有生成请求及其响应的内容、标头等(方法)。
第二部分将介绍StresStimulus更高级的功能,例如NTLM授权和参数化。