众所周知,性能测试可以揭示一个系统在各种情况下的行为与响应方式。某个系统在 1,000 个并发用户下能够运行稳健,并不等于它在面对 100,000 个并发用户时,仍能运行正常。
因此我们在系统性能方面,主要着眼于三个主要目标:
- 速度
- 可扩展性
- 稳定性
在此,我们列出了 14 种针对应用程序性能监控与负载测试的工具,以帮助您构建和维护具有高性能和高可靠性的系统。
注意,虽然它们中的一些是开源的,但是绝大多数会在提供免费试用的基础上,有着对应的付费版本。
AgileLoad
http://www.agileload.com/
AgileLoad 是一个企业级的性能测试解决方案,可用于优化 Web 应用的性能。
AgileLoad 号称能够提高您的投资回报率和生产力,使您能够更快地执行测试,并且能够提供对于测试结果的深入分析,以及对于所有新技术的全面支持。
目前,从使用了最新 Web 2.0 技术的应用程序、到经典的客户端/服务器(C/S)模式、以及重客户端的应用,它都能够成功地提供深入的性能诊断。
主要特点:
- 直观的图形界面使您可以捕获和设计复杂的业务场景。
- 能自动检测和分析性能问题。
- 提供高度定制化的脚本和报告引擎。
- 支持对整个应用程序生命周期的性能测试。
- 能够针对广泛的应用程序和协议开展测试。
- 可以使用各种 Web 2.0 技术,来记录和重放 RIA(Rich Internet Application,富网络应用)。
- 通过对系统和最终用户的监控,生成可测量且可重复的负载。
- 能够自动记录测试场景。
- 可使用 Agileload 的负载注入引擎,来模拟真实的用户负载。
- 能够在 Windows(2003 及更高版本)下运行,并与所有的 Web 浏览器兼容。
售价:
- 免费版:通过 10 个虚拟用户,来构建所有的测试场景。
- 按需付费版:通过租用 50 到 10000 个虚拟用户,来给 Agileload“赋能”。
与众不同之处:
- 其免费版或“入门级套件”允许用户快速上手该工具。
- 通过自动建模,来大幅减少针对同一应用的后续测试用例的脚本编写时间。
- 提供端到端的诊断功能:该工具不仅能够监控前端,还能监控后端,并检测其性能下降的原因。
- 其异常检测和建议功能,有助于快速识别并解决性能瓶颈。
- 具备可配置的报告选项,可适用于不同的受众群体。
Apache JMeter
https://jmeter.apache.org/
作为负载测试工具界的实际标准与“王者”,Apache JMeter 是一款开源且全面基于 Java 的应用。
通过自带的图形界面,它能够分析并衡量 Web 应用及各种服务的性能与负载行为。
JMeter 能够让您开展诸如:性能、负载、压力、回归和功能性测试等活动,以便针对 Web 服务器获得准确的性能指标。
该工具支持变量参数化、各种断言(响应验证)、基于线程的 Cookie、配置变量、以及各种报告。
不过,JMeter 的用户会严重依赖于各种插件,毕竟它的大多数“开箱即用”的功能都是通过插件来实现的。
主要特点:
- 提供友好的 GUI:JMeter 带有一个简单的交互式 GUI。
- 独立于平台:JMeter 是使用 Java 编写和开发的,因此它可以在诸如:Windows、Linux、Mac 等任何支持 Java 虚拟机的环境内或工作站上运行。
- 支持多种服务器类型,包括:Web(HTTP、HTTPS、SOAP),数据库(JDBC、LDAP、JMS)和电子邮件(POP3)。
- 支持多种协议,包括:HTTP、JDBC、LDAP、SOAP、JMS 和 FTP。
- 通过虚拟用户或模拟多个用户,来对正在测试的 Web 应用产生大量的负载。
- 其多线程框架允许一到多个线程组,同时对不同函数进行采样。
- 支持远程分布式测试:JMeter 使用主/从的概念进行分布式测试,其中主服务器会在所有从服务器之间分配测试任务,而从服务器会针对目标服务器执行各种测试脚本。
- 可以使用诸如:图形、表格、树和报告等格式,来查看测试结果。
售价:
- 免费/开源。
与众不同之处:
- JMeter 拥有一个非常庞大的社区和无穷的资源,能够与市场上几乎所有的性能测试工具相集成。
- 易于安装:可以安装在 Windows、Mac 或 Linux 等任何桌面系统上。
- 其 IDE 允许用户从浏览器或本机应用上记录测试数据。
- 拥有随时可用的插件,例如:用于数据分析的可视化插件。
Appdynamics
https://www.appdynamics.com/
作为一款领先的测试工具,AppDynamics 可以帮助用户分析、优化和预测复杂系统中的瓶颈。用户可以将其用在本地、测试环境、产品部署期间、以及云端。
它拥有针对 .Net、Node JS、PHP、Java、C ++、Python、Apache Web Server 和 GoLang 的代理。用户可以用它来实时监控各种应用程序、业务、以及最终用户。
AppDynamics 号称其平台可帮助您通过更加智能的绩效管理方法,将应用性能、客户体验与业务成果联系起来。
主要特点:
- 具有代码级的可视性。
- 提供动态基线和强大的警报服务。
- 提供应用性能管理的代理。
- 能够保存数据。
- 可以监控多个平台。
- 能够解决生产环境中的性能问题。
- 提供随时间推移的数据库性能趋势。
- 可在大容量的环境中提供持续监控。
- 即装即用。
- 提供数据库代理。
- 具有服务器可视性。
- 提供综合监控。
- 能对移动端的真实用户提供监控。
- 能对浏览器的真实用户监控。
售价:
- 分为三个层次:APM Pro、APM Advanced 和 APM Peak,供应商提供不同售价。
与众不同之处:
- 通过统一的分析功能,确保企业获得实用的信息。
- AppDynamics 采用称为统一监控的创新方法,将各种 AppDynamics 应用程序整合到一个强大的解决方案中,以帮助用户确定导致性能问题的确切来源。
BlazeMeter
https://www.blazemeter.com/
BlazeMeter 是一家提供“性能和负载测试即服务”的供应商。它提供了一个全新且完整的持续测试平台,可以帮助企业实现向左移动(shift-left)。
BlazeMeter 的 Web 界面,可用于创建静态负载测试,以及通过运行 JMeter 脚本来进行的动态负载测试。
BlazeMeter 的主要优势之一是它的“企业”功能(即,顶级的开源负载测试应用),其中包括:分布式测试、实时报告、与开发人员工具的集成、对持续集成(CI)和应用性能的监控(APM)。
主要特点:
- 能与 Apache JMeter 完全兼容。
- 可创建多可达 100 万并发用户的测试。
- 能在数分钟内完成测试。
- 可运行无脚本的测试、或上传 URL 列表。
- 可在云端或本地运行。
- 可在多个地理位置运行测试。
- 可在真实设备上模拟移动端测试。
- 可通过脚本和报告共享的方式,来促进团队协作。
- 提供多种工具支持。
- 能与领先的 CI 和 APM 工具相集成。
- 支持专业的服务。
- 提供负载测试结果的实时详细报告。
- 可为已测试的应用行为设置 KPI。
- 提供桌面和移动端的用户体验监控。
售价:
- 免费版:50 个并发用户
- 基本版:99 美元每月(1000 个并发用户)*
- 专业版:499美元每月(5000 个并发用户)*
- 无限版:需向供应商索取售价*(*为年度定价)
与众不同之处:
- BlazeMeter 通过简单易用的界面和直观的图表,让用户实时查看到测试的结果,并能轻松地比较多种测试。
- 它具有灵活的定价,可适应以小时、月或年为单位的使用量。无需支付设置或维护的费用。
- BlazeMeter 的专业服务团队可以帮助用户设置、甚至运行性能测试。
Dynatrace
https://www.dynatrace.com/
Dynatrace 是一种被广泛使用的应用程序性能管理工具。它具有可用于监控 Java 和 .net 应用程序的高级功能,可协助用户轻松地识别出应用程序中的瓶颈与错误。
通过使用 PurePath 技术,Dynatrace 能够在浏览器中,提供横跨所有层次、以及数据库端到端事务级的详细信息。
特别是在代码级别、以及调用外部服务的事务中,它能够通过详细信息,来协助发现性能问题。
该工具可以检测响应时间、事务速率、吞吐量、以及在系统使用中出现的异常情况。
主要特点:
- 支持全栈发现。
- 具有全栈性能管理功能。
- 具有可视化的应用架构。
- 提供人工智能分析。
- 具有大规模的自我修复能力。
- 能够检测 vMotion 事件。
- 提供数字体验管理。
- 提供容器、云和基础架构的管理。
售价:
- Dynatrace 提供免费试用,具体售价需联系供应商。
与众不同之处:
- Dynatrace 能够提供大数据分析。
- DevOps 团队可以优化人工智能相关技术,以寻找可操作性的分析与答案。
- 可对多达 100,000 台主机进行自动监控。
Flood
https://flood.io/load-performance-testing-tool/
由 Tricentis 推出的负载测试平台 Flood,可让您使用自己喜欢的开源工具(包括 JMeter、Gatling 和 Selenium),来进行全局化分布式性能测试。
通过扩展 Flood 的负载,用户可以在任何给定时间获得最大数量的并发性和吞吐量,进而获得汇总的实时报告。
主要特点:
- 能够以自主的方式模拟数千个用户,并按需向数十万的用户级别进行扩展。
- 在与 JMeter 或 Gatling 完全兼容的前提下,可执行简单的 URL 测试或更高级的测试计划。
- 能够提供功能强大且简单的 ruby-JMeter DSL(特定域的语言)。
- 可自建网格:用户可按需使用 Dynatrace 网格节点、或托管自己的网格节点。
- 能使用 JSON 或 CSV 格式的原始数据,准确地报告单事务级别的描述性统计信息。
- 仅为使用的测试负载架构付费,无需按照测试或模拟的用户数付费
- 可使用自定义的颜色和图标进行标记,用户可以在自己的域中共享测试结果。
- 可将测试结果与 New Relic、以及 Flowdock 等其他云服务集成。
售价:
- 团队版:50 个节点小时,299 美元每月。
- 企业版:需向供应商获取定价信息。
与众不同之处:
- 由于独立于工具平台,因此可与新的工具相集成。
- 无群集、无共享架构,可扩展为大型测试。突破了传统设置中的典型瓶颈。
- 实时的报告和交互式的仪表板,更直观、更易于共享。
- 能长期存储测试结果,以便用户不断地评估性能。
Gatling Frontline
https://gatling.io/
Gatling 是一个基于 Scala、Akka 和 Netty 的开源负载和性能测试框架。该工具可用于分析和测量各种服务的性能,并能重点关注 Web 应用。
为了促进连续性测试,它可以通过与其他构建工具的集成,以提供更多的网络记录器和报告类型。其付费企业版 Gatling Front Line,能够提供更高级的分析与集成。
主要特点:
- 具有独立的 HTTP 代理记录器。
- 提供基于 Scala 的脚本。
- 可用于测试开发用户友好的自解释性 DSL。
- 其异步非阻塞引擎(Asynchronous non-blocking engine),可实现优良性能。
- 支持 HTTP(S)协议,也可用于对 JDBC 和 JMS 的负载测试。
- 提供验证和断言。
- 能够提供全面的 HTML 报告。
售价:
- 其开源版本是免费的。
- Frontline On-premises:不限制测试,起价 400