【问题标题】:Designing a Stress Testing Framework设计压力测试框架
【发布时间】:2010-11-07 00:02:41
【问题描述】:
我对一个非常大的产品(想想操作系统的大小)进行了某种集成/压力测试,最近我和我的团队一直在讨论如何更好地组织我们的测试工作负载。到目前为止,我们一直满足于将所有(自定义)工作负载应用程序放在一系列批处理类型的作业中,每个作业都代表一个单一的压力测试运行。现在我们的平均测试运行涉及跨 13 个系统运行的超过 100 个工作负载,我们认为是时候构建一些更高级的东西了。
我已经看到了很多关于单元测试框架的内容,但对于更高级别的压力类型测试却很少。有谁知道解决管理大量工作负载问题的常见(或不常见)方法?
现在,我们希望为每个单独的工作负载保留一个数据库,并提供一个前端来根据我们在给定一天所需的压力类型将它们混合并匹配到测试包中,但我们没有任何执行更高级操作的最佳方法示例,例如对每个单独的工作负载对系统施加的压力进行排名。
我的大型产品压力测试人员在做什么?对我们来说,一些手卷的脚本已经不再适用了。
【问题讨论】:
标签:
frameworks
stress-testing
【解决方案1】:
我自己的经验最初是在 IIS 平台上使用 WCAT,后来使用 JMeter 和 Selenium。
WCAT 和 JMeter 都允许您将浏览网站作为路线、填写表格等,并将该过程记录为脚本。然后可以单独播放脚本或模拟多个客户端和多个线程。随机播放以模拟块状和不可预测的使用等。
一旦您知道自己要去哪里,脚本就可以编辑或手写。 WCAT 可以让您从日志文件中回放,也可以让您模拟真实世界的使用情况。
以上两个都安装在PC或服务器上。
Selenium 是一个 FireFox 插件,但以类似的方式记录和播放脚本并允许扩展。
找出您要测试的场景,然后设计适合它们的测试,这有点困难。此外,还需要考虑与数据库和其他外部资源的交互。除了要花费大量时间查看日志文件之外,良好的图形输出是必不可少的。
【解决方案2】:
对我来说最困难的事情是从负载下的服务器收集和组织性能指标。性能监视器是我的主要工具。当 Visual Studio Tester 版本出现时,我很惊讶使用性能计数器是多么容易。他们为 Web 服务器、SQL 服务器、ASP.NET 应用程序等预先打包了一个计数器列表。我了解了一堆我什至不知道存在的性能计数器。此外,您也可以收集自己的柜台。您可以在每次运行后存储指标。您还可以连接到生产服务器,看看他们今天的感受。然后我会实时看到所有这些图形,我感到很有力量! :) 如果您需要更多负载,您可以获取 VS Load Agents 并创建负载生成装置(或者我应该称之为僵尸网络)。与市场上的过度产品相比,它相对便宜。 MS 许可证适用于每个处理器,但不适用于每个并发请求。这意味着您可以产生与硬件可以处理的负载一样多的负载。平均而言,我能够在双核、2GB 内存的计算机上获得大约 3,000 个并发 Web 请求。此外,您可以将性能测试合并到您的构建中。
当然适用于 Windows。除了该工具约 6000 美元的价格标签可能有点高,加上每个额外负载代理的相同金额。