《应用程序性能测试的艺术(第2版)》—第2章 2.2节如何选择性能测试工具

简介: 由于对工具本身的技术评估不够,很多性能测试项目在脚本编写阶段就陷入问题的泥潭。很多测试服务供应商都支持来自各种工具供应商的解决方案,他们通常根据特定的客户性能测试需求来选择合适的性能测试工具。

本节书摘来自异步社区《应用程序性能测试的艺术(第2版)》一书中的第2章,第2.2节如何选择性能测试工具,作者【新西兰】Ian Molyneaux(莫得尼克斯),更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 如何选择性能测试工具
由于对工具本身的技术评估不够,很多性能测试项目在脚本编写阶段就陷入问题的泥潭。很多测试服务供应商都支持来自各种工具供应商的解决方案,他们通常根据特定的客户性能测试需求来选择合适的性能测试工具。

Web技术如日中天,几乎每个性能测试供应商都提供HTTP/S的支持。然而,在Web技术里面还有很多特别的设计,尤其是客户端。如果你在应用中使用了大量的JavaScript、JSON或者微软的Silverlight,你就得充分考虑所选工具的功能以及技术限制。下面是一些关于如何选择工具的建议。

协议支持
选择性能测试工具最重要的一点就是确保你所选的工具能够支持你的应用协议栈,也就是说你的应用客户端如何同服务端进行通信。比如,在绝大多数情况下,一个典型的浏览器会使用HTTP或者HTTPS作为它的通信协议。

授权模式
在工具满足应用协议栈需求的前提下,还要看工具的授权模式。大多数性能测试供应商通过下列模块进行收费。

允许执行的最大规模负载测试(用虚拟用户数来衡量)
这个计价方式通常会采用区间收费,比如以100个虚拟用户作为入门价,虚拟用户数越多,收费越贵。也有一些供应商会以一个较高的固定价格来提供无上限的虚拟用户数。有一些供应商会提供一种短期授权,允许用户临时提高工具允许的最大虚拟用户数,来获得更大的负载。

工具支持的额外协议种类
当用户购买工具的时候,也许只选择了HTTP协议。但是后来由于项目需要,需要测试其他协议,比如Citrix,这样就需要支付额外的协议费用。新购买的额外协议是否适用已经购买的虚拟用户数,不同供应商会有不同的做法。

额外的集成和监控插件
工具供应商通常会有一些可选插件,用户可以在购买基础软件授权后按需购买可选插件。插件通常包括一些特定技术栈的监控工具,比如Oracle、MS SQL Server和IIS等;同时测试工具还可以和应用性能管理工具(Application Performance Monitor,APM)或者持续集成(Continuous Integration,CI)工具进行集成。这些集成通常会收取一定费用。当考虑购买这些插件时,你需要清楚这些功能通常需要在目标服务器上安装相应的代理软件,并且允许它们访问网络;你必须确保这些需求在被测环境(System Under Test,SUT)是可接受的。

在确定采购工具的候选名单时,确保你对各种工具的授权模式是非常清楚的。

脚本能力
很多性能测试工具提供商声称他们工具产生的脚本基本或者完全不需要手工编辑。对于一些简单的页面浏览,或许可以做到完全不需要手工编辑脚本。但事实是你总会遇到需要手工编辑脚本的场景(或许是插入一些JavaScript或者一些代码模块来处理复杂的客户端逻辑)。

你也许会发现你不得不对录制的测试用例进行手工编辑以让它能够正确回放。一个工具可能需要你在每个脚本上耗费几个小时的时间来让它正确运行,而另一个工具基本可以自动化你刚才的操作,因此在选择工具的时候你就必须充分考虑这部分额外工作对你的性能测试项目和测试团队带来的影响。

测试团队的技术能力也是一个需要考量的因素。如果队员有着很强的开发背景,那么让他们在测试脚本中进行一些手工编码应该不成问题。但如果你的队员不熟悉编码,尽管前期投入比较大,你还是更应该考虑一款提供具有向导功能的性能测试工具来帮助测试人员更容易地创建脚本。

解决方案还是压测工具
有些供应商只提供性能测试工具,有些供应商提供整套的性能测试解决方案。解决方案通常要比单纯的性能测试工具贵,但是它可以提供更完善的分析。除了性能测试,解决方案供应商通常提供:自动化需求管理、自动化数据构造和管理、性能测试前的应用性能调优、响应时间预测和容量评估、细到类和方法级别的APM应用性能分析、应用发布后的终端用户体验(EUE,End User Experience)监控以及测试结果/测试资产的可视化的数据看板。

自研还是外包
如果你的资源有限或者项目周期非常紧张,那还是考虑将性能测试项目外包给一个供应商会更加合适。一些工具供应商会提供一整套服务,从带有实施支持的工具采购到全方位的性能测试服务。这些公司在测试领域非常专业,能够使用合适的性能工具集来提供专业的性能测试服务。使用外包模式的优势在于用户不用为自己的应用专门购买一个性能测试工具,节省了时间和资源成本。但如果用户的场景需要进行多次性能测试,使用外包模式来完成性能测试会比自己购买或者研发性能测试工具贵得多。

其他可选项
如果你的应用是基于Web的,而且它也是面向消费者的,你也许有一个更好的选择——软件即服务(Software as a Service,SaaS)的性能测试服务。现在有很多供应商通过Web提供性能测试服务,他们帮你实现整个测试流程:编写关键测试用例,然后通过分布在各地的施压引擎来对你的应用施加压力。采用这种方式,用户不需要自己提供足够数量的施压机器,性能测试服务供应商的施压节点通常部署在主干网络,能够真实地模拟大量终端用户。对于低频的大规模性能测试,SaaS化的解决方案非常有吸引力,而且性能测试服务供应商通常还提供终端用户体验监控。

采用SaaS化性能测试服务的一个不足之处在于你需要为每次测试付钱,对被测服务器和网络的监控也需要用户自己来负责。当测试过程出现问题,用户需要通过重复测试来排查时,整体开销就相当可观了。

总而言之,SaaS化的性能测试服务还是非常值得调研的。附录C列举了一些提供这类服务的供应商。

相关文章
|
10月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
826 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
10月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
772 6
|
11月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
2148 10
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1658 23
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
11月前
|
监控 Java 数据挖掘
利用Jmeter工具进行HTTP接口的性能测试操作
基础上述步骤反复迭代调整直至满足预期目标达成满意水平结束本轮压力评估周期进入常态监控阶段持续关注系统运转状态及时发现处理新出现问题保障服务稳定高效运作
1364 0
|
数据可视化 测试技术 Go
Go 语言测试与调试:`go test` 工具用法
`go test` 是 Go 语言内置的测试工具,支持单元测试、基准测试、示例测试等功能。本文详解其常用参数、调试技巧及性能测试命令,并提供实际项目中的应用示例与最佳实践。
|
弹性计算 JavaScript Ubuntu
WebSocket协议相关的测试命令工具使用简介
本文介绍了针对WebSocket的测试工具wscat和websocat的基本使用方法,以及通过curl命令测试HTTP/HTTPS协议的方式。对于WebSocket,直接使用curl测试较为复杂,推荐使用wscat或websocat。文中详细说明了这两种工具的安装步骤、常用参数及连接示例,例如在ECS上开启8080端口监听并进行消息收发测试。此外,还提供了curl命令的手动设置头部信息以模拟WebSocket握手的示例,但指出curl仅能作为客户端测试工具,无法模拟服务器。
4030 5
|
人工智能 数据可视化 测试技术
UAT测试排程工具深度解析:让验收测试不再失控,项目稳稳上线
在系统交付节奏加快的背景下,“测试节奏混乱”已成为项目延期的主因之一。UAT测试排程工具应运而生,帮助团队结构化拆解任务、清晰分配责任、实时掌控进度,打通需求、测试、开发三方协作闭环,提升测试效率与质量。本文还盘点了2025年热门UAT工具,助力团队选型落地,告别靠表格和群聊推进测试的低效方式,实现有节奏、有章法的测试管理。
|
测试技术
软考软件评测师——可靠性测试测试方法
软件可靠性是指软件在规定条件和时间内完成预定功能的能力,受运行环境、软件规模、内部结构、开发方法及可靠性投入等因素影响。失效概率指软件运行中出现失效的可能性,可靠度为不发生失效的概率,平均无失效时间(MTTF)体现软件可靠程度。案例分析显示,嵌入式软件需满足高可靠性要求,如机载软件的可靠度需达99.99%以上,通过定量指标评估其是否达标。