网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[内部资源] 想拿年薪30W+的软件测试人员,这份资料必须领取~
Python自动化测试全栈+性能测试全栈,挑战年薪40W+
01 前 言
当你想做性能测试的时候,你会选择什么样的测试工具呢?**是会选择wrk?jmeter?locust?还是loadrunner呢?**今天,笔者将根据自己使用经验,针对jmeter、locust、wrk和loadrunner常用的性能测试工具进行简单介绍和对比。
首先,四者基本对比图:
. | loadrunner | jmeter | locust | wrk |
---|---|---|---|---|
分布式压力 | 支持 | 支持 | 支持 | 不支持 |
单机并发能力 | 低 | 低 | 高 | 低 |
并发机制 | 进程/线程 | 线程 | 协程 | 线程 |
开发语言 | C/Java | Java | Python | C |
报告与分析 | 完善 | 简单图标 | 简单图表 | 简单结果 |
授权方式 | 商业收费 | 开源免费 | 开源免费 | 开源免费 |
测试脚本形式 | C/Java | GUI | Python | C |
资源监控 | 支持 | 不支持 | 不支持 | 不支持 |
由于loadrunner为商业收费模式,对于公司级测试使用而言涉及到授权问题,因此,本文暂不对loadrunner进行详细讨论。
02 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等),但若是需要执行get之外的http类型请求需要使用者自行编写lua脚本;
- 只允许单机测试,不支持多机分布式压力测试,因此wrk适合性能基准测试,对于模拟上万的用户并发测试显得有点力不从心;
- 测试结果简单,无详细图表解析,举例如下;
wrk测试结果输出:
03 jmeter
jmeter同样采用线程并发机制,但其**主要依靠增加线程数提高并发量,**当单机模拟数以千计的并发用户时,对于CPU和内存的消耗比较大。
与上述wrk相比,jmeter本身具有以下优点和缺点——
优点:
- 界面可视化操作,可以使用录制脚本方式对较为复杂的用户流建模,还可以创建断言来验证测试行为是否通过;
- 表格、图形、结果树等多类可视化数据分析和报告输出,举例如下;
jmeter聚合报告及表格查看结果:
- 支持http、ftp、tcp等多种协议类型测试;
- 支持分布式压力测试,但对于上万的用户并发测试需要多台测试机支持,资源要求比较大;
- 可以用于测试固定吞吐量下的系统性能,例如在100QPS(QPS:每秒查询率)下系统的响应时间和资源消耗;
缺点:
jmeter的GUI模式消耗资源较大,当需要测试高负载时,需要先使用GUI工具来生成XML测试计划,然后在非GUI模式下导入测试计划运行测试,并且关闭不需要的侦听器(收集数据与展示测量的组件),因为侦听器也会消耗掉本用于生成负载的大量资源。测试结束后后,需要将原始结果数据导入GUI以才能查看结果。
04 locust
locust是一个简单易用的分布式负载测试工具,**主要用来对网站进行负载压力测试。**locust使用python语言开发,测试资源消耗远远小于java语言开发的jmeter。且其支持分布式部署测试,能够轻松模拟百万级用户并发测试。
与jmeter和wrk相比,locust具有以下优缺点:
优点:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
rums/4f45ff00ff254613a03fab5e56a57acb)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!