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

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

本节书摘来自异步社区《应用程序性能测试的艺术(第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列举了一些提供这类服务的供应商。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
2月前
|
前端开发 测试技术 Python
【Selenium全攻略】掌握这一工具,实现自动化测试的所有梦想
本文分享了使用Selenium进行UI自动化测试的全过程,包括开发环境部署、代码实现、思路分析和难点解析。作者通过一个实际案例,讲述了如何利用Selenium处理前端生成报告失败的问题,以及在UI自动化中定位元素和处理元素不唯一的情况。同时,文章强调了解决问题思路的重要性,鼓励读者开拓思维,寻找不同的解决方案。
93 4
【Selenium全攻略】掌握这一工具,实现自动化测试的所有梦想
|
22天前
|
缓存 Java 测试技术
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
使用JMeter对项目各个接口进行压力测试,并对前端进行动静分离优化,优化三级分类查询接口的性能
谷粒商城笔记+踩坑(11)——性能压测和调优,JMeter压力测试+jvisualvm监控性能+资源动静分离+修改堆内存
|
8天前
|
监控 中间件 测试技术
『软件测试5』测开岗只要求会黑白盒测试?NO!还要学会性能测试!
该文章指出软件测试工程师不仅需要掌握黑盒和白盒测试,还应该了解性能测试的重要性及其实现方法,包括负载测试、压力测试等多种性能测试类型及其在保证软件质量中的作用。
『软件测试5』测开岗只要求会黑白盒测试?NO!还要学会性能测试!
|
16天前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
30 4
|
1月前
|
监控 安全 Linux
如何利用Kali Linux进行网站渗透测试:最常用工具详解
如何利用Kali Linux进行网站渗透测试:最常用工具详解
70 6
|
1月前
|
安全 Linux 测试技术
Kali Linux预装的自动化渗透测试工具
Kali Linux预装的自动化渗透测试工具
43 2
|
2月前
|
测试技术
基于LangChain手工测试用例转Web自动化测试生成工具
该方案探索了利用大模型自动生成Web自动化测试用例的方法,替代传统的手动编写或录制方式。通过清晰定义功能测试步骤,结合LangChain的Agent和工具包,实现了从功能测试到自动化测试的转换,极大提升了效率。不仅减少了人工干预,还提高了测试用例的可维护性和实用性。
47 4
|
2月前
|
消息中间件 Kafka 测试技术
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
|
2月前
|
测试技术 API
软件测试:Postman 工具的使用。开发及测试均需要掌握的测试工具
这篇文章详细介绍了Postman工具的各个模块功能,包括创建请求、集合、环境、自动化测试等,并解释了如何使用Postman进行GET、POST、PUT和DELETE等常见HTTP请求的测试。
|
2月前
|
JSON jenkins 测试技术
Python接口自动化测试框架(工具篇)-- 接口测试工具HTTPRUNNER
本文介绍了Python接口自动化测试框架HTTPRunner,包括其安装、使用方法,并通过实际操作演示了如何利用HTTPRunner进行接口测试,同时还探讨了HTTPRunner作为接口自动化测试解决方案的可能性和实用性。
44 0
下一篇
无影云桌面