专栏首页搜狗测试软件性能测试方案-性能测试工具选型

软件性能测试方案-性能测试工具选型

前言

在往期文章《软件性能测试方案-性能测试准备》介绍了前期性能测试准备的要点,本文主要介绍性能测试工具的选型。

想象下,如果不使用工具进行性能测试会怎么样?我们可以从性能测试的定义的角度来分析,性能测试是指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。如果不使用工具,仅靠人工进行性能测试会存在以下的弊端:

  • 测试需要投入大量的资源:

  为了模拟多种负载、并发的场景需要多人协同工作,通常测试没有很多的资源,而且就算有资源人工的效果也会大打折扣,甚至于某些场景仅凭人工是无法完成的。

  • 可重复性非常差:

  性能测试经常需要反复调优和测试执行,如果没有工具的帮助,全靠人工实在不敢想象。

  • 测试准确性较差:

  由于需要模拟多种负载和并发场景,如果由人工来操作,难免会存在误差,而且相对工具或程序来说这种误差会更大,对测试结果影响也非常大。

  • 结果的收集、整理和呈现形式差:

  如果没有工具,全凭人工采集数据相对工具来说也会存在较大的误差。

性能测试工具选型参考

1.成本:

  • 工具成本:工具通常分为商业(闭源)和非商业(开源)两种,商业工具通常功能比较强大、收费、可提供售后服务。开源工具通常是免费的、功能有限。
  • 学习成本:使用任何工具都需要进行学习,我们需要从工具上手难易程度、资料丰富程度等维度考量工具是否适合自己和测试需求。

2.调度能力:

因为性能测试不可能由一台压力机完成或者说大部分情况下,我们不能不可能由一台压力机来完成,凡是对压力真正有所要求的场景,往往是多台压力机共同施加压力完成性能测试;因此,性能测试工具必须有很好的调度能力,能够由一个主控机同时管理多台代理机完成性能测试任务,而不是由人去一台一台的代理机上操作来完成这个任务。

3.线性扩展能力:

调度能力有好有坏,有些性能测试工具调度能力特别强,具备很好的线性扩展能力,当压力不够的时候能够通过增加压力机数量的方式来线性的增加吞吐量、并发量,从而实现目标。

4.稳定的并发能力

我们在实际性能测试当中往往不是按照传统流程进行的,实际测试中往往需要做对比测试。比如,不同的系统版本,不同的系统,或者数据库参数的调节、超时时间调整等。实际测试中,我们的策略是对比吞吐量相同的情况下CPU利用率的差异,因为吞吐量我们是可以控制的,而CPU我们是不能控制的。使用工具发出来100QPS就是100QPS,200QPS就是200QPS。而CPU是操作系统和CPU共同控制的,它不在我们的控制能力范围。所以,工具的稳定性(“稳定”控制吞吐量)显得尤为重要。

5.单机高吞吐能力

相同资源的服务器如果能发更多的业务压力,就能节省不少的环境资源,并且,压力机数量的减少,直接影响是维护这些工具的工作量减少了,整体测试效率提高了。

6.二次开发的能力

工具支持二次开发,能够更好地契合测试需求,更方面地统计结果数据,并能很好地与公司现有系统做集成。

常用的性能测试工具

下面是对Jmeter、locust、wrk、Loadrunner、vegeta不同维度的对比以及简单介绍

LR

Jmeter

locust

vegeta

wrk

短时间内大并发

支持

支持

支持

支持

支持

UI界面

资源监控

支持

支持

不支持

学习成本

是否开源

多协议支持

图形化展示报告

是否支持场景录制

wrk

wrk是轻量化的http性能测试工具,采用线程+网络异步IO模型,网络异步IO可以使得系统使用很少的线程模拟大量的网络连接以增大并发量、提高压力。

优点

  • 操作简单、易于使用 使用方式例如:
./wrk -c 1000 -t 8 -d 10s http://www.baidu.com

主要包括以下参数:

-t(--thread) 需要模拟的线程数; -c(connection) 需要模拟的连接数; --timeout 超时的时间;-d(--duration) 测试的持续时间

缺点

  • wrk只支持http协议类型请求(如get、post等);
  • 只允许单机测试,不支持多机分布式压力测试;
  • 测试结果简单,无详细图表解析。

vegeta

Vegeta 是一个用 Go 语言编写的多功能的 HTTP 负载测试工具,它提供了命令行工具和一个开发库。与上述wrk相比,vegeta本身具有以下优点和缺点:

优点:

1.安装、操作简单,易于使用; 2.单机支持能力强; 3.支持分布式压力测试; 4.可以用于测试固定吞吐量下的系统性能。

缺点

同wrk一样,vegeta的测试结果输出较为简单,不支持图形化结果展示(如果你是iTerm用户另当别论)。

jmeter

jmeter同样采用线程并发机制,但其主要依靠增加线程数提高并发量,当单机模拟数以千计的并发用户时,对于CPU和内存的消耗比较大。与上述wrk、vegeta相比,jmeter本身具有以下优点和缺点:

优点

1.界面可视化操作; 2.表格、图形、结果树等多类可视化数据分析和报告输出; 3.支持http、ftp、tcp等多种协议类型测试; 4.支持分布式压力测试; 5.可以用于测试固定吞吐量下的系统性能。

缺点

jmeter的GUI模式消耗资源较大,非GUI模式下需要将原始结果数据导入GUI才能查看结果。

locust

locust是一个的简单易用的分布式负载测试工具。locust使用python语言开发,测试资源消耗远远小于java语言开发的jmeter。与jmeter、wrk、vegeta相比,locust具有以下优缺点:

优点

1.不同于wrk和jmeter使用线程数提高并发量,locust借助于协程实现对用户的模拟,相同物理资源(机器cpu、内存等)配置下locust能支持的并发用户数相比jmeter可以提升一个数量级; 2.locust的界面干净整洁,可以实时显示测试的相关细节。

缺点

同wrk、vegeta一样,locust测试结果输出不如jmeter的测试结果展示类型多。

总结

本文主要介绍了主流的服务端性能测试工具,希望大家能够根据不同的测试需求和自己对工具的理解,选取适合自己的测试工具。

  • 如果你想做场景的压测,而不是单个接口的压测,可使用jmeter、locust,支持接口串联,接口body参数化,思考时间等复杂场景。
  • 如果你压测要求的并发比较高,需要使用分布式压测,可使用jmeter、locust、vegeta。
  • 如果你关注接口的返回,多维度压测报告统计,可使用jmeter。
  • 如果你想对http的rest接口进行性能测试,只关注接口的发送、QPS和错误率,可使用vegeta、wrk。
  • 如果你想体验编程的乐趣,自己编写脚本进行性能测试,可使用wrk、locust。
  • 如果你想系统保持在一定QPS情况下,一段时间的性能指标,可使用vegeta、jmeter。



本文分享自微信公众号 - 搜狗测试(SogouQA),作者:cp

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 测试策略模型探索

    测试作为软件质量的把控,经常存在这样的一个误区:所有提测的功能都需要进行全面的测试,否则上线后就可能存在质量风险。而此时,也会迎来项目经理的质疑,此需求开发一周...

    用户5521279
  • 【问题意识】问题从哪里来?

    问题意识的高低对个人未来发展具有深远影响。问题意识高的人,由于其拥有比现在状态更高的目标,所以会感觉到现状存在问题。问题意识低的人,其自身目标与现状水平处于一致...

    用户5521279
  • 测试全程度量探索

    测试左移:有数据分析,单元测试可以发现代码中60%~70%的问题。测试左移即将测试工作前置,提前发现问题。

    用户5521279
  • 软件测试之性能测试

    性能测试是通过自动化的测试工具模拟各种正常、峰值以及异常负载条件来对系统的各项性能指标的测试。

    测试开发社区
  • 张老师聊面试(二)

    小梅,毕业一年,从实习到现在都在一家外包单位工作,做的是手机测试和定制软件的测试,由于工作单调,且没有成长空间,因此考虑换一份工作。但几次面试都不太顺利。

    张树臣
  • 工具篇 - JMeter性能测试基本过程及示例05

    前言 性能测试是我们日常测试过程中,必须掌握的技能。通过进行性能测试,我们能分析服务端的整体性能、负载等,以便进一步评估我们的业务系统是否能满足当前运营生产及未...

    苦叶子
  • 渗透测试概述·什么是渗透测试

    渗透测试(penetration test,pentest)是实施安全评估(即审计)的具体手段。

    周俊辉
  • 自动化测试框架Cucumber和RobotFramework的实战对比

    一、摘要 自动化测试可以快速自动完成大量测试用例,节约巨大的人工测试成本;同时它需要拥有专业开发技能的人才能完成开发,且需要大量时间进行维护(在需求经常变化的情...

    企鹅号小编
  • V咖分享会第二十四期-自动化通用架构

    在上周日我们进行了V咖分享会第二十四期的分享,这是分享是这次由大咖陈耿老师给大家分享的“自动化通用架构”,传授他在多年测试职业生涯过程中实践经验的。

    Criss@陈磊
  • 数据中心假负载验证测试实战指导方案

    前言 数据中心作为一个由多个系统高度结合的复杂工程,在基础设施建设全部完成,各系统调试结束后,就具备了开展假负载验证测试的基本条件。一场规模宏大的数据中心规划、...

    腾讯数据中心

扫码关注云+社区

领取腾讯云代金券