想做性能测试不知道怎么选顺手的工具?

原文链接:http://www.51testing.com/html/49/n-3721249.html

前言

当你想做性能测试的时候,你会选择什么样的测试工具呢?是会选择wrk?jmeter?locust?还是loadrunner呢?

今天,笔者将根据自己使用经验,针对jmeter、locust、wrk和loadrunner常用的性能测试工具进行简单介绍和对比。首先,四者基本对比图:

由于loadrunner为商业收费模式,对于公司级测试使用而言涉及到授权问题,因此,本文暂不对loadrunner进行详细讨论。

wrk

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

wrk操作简单、易于使用,使用方式例如:

./wrk -c 1000 -t 8 -d 10s http://www.baidu.com

主要包括以下参数:

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

其中:

①参数-c(connection,线链接数)与操作系统文件句柄数相关,-c不能超过文件句柄数设置,开始测试前应保证系统可用端口数大于-c设置;

②参数-t(--thread,线程数)与操作系统cpu核数有关,-t不宜设置过大,过大的线程数设置反而会因线程调度反而使性能降低。如下图所示,操作系统为8核cpu:相同连接数和测试时长条件下,不同线程数对同一系统REST接口测试,从测试结果可以看出当thread=8(与cpu核数一致)时系统性能测试结果最佳,性能波动最小;

8核cpu:相同连接数和测试时长条件下,不同线程数对同一系统REST接口测试结果对比图

其他说明:

①wrk只支持http协议类型请求(如get、post等),但若是需要执行get之外的http类型请求需要使用者自行编写lua脚本;

②只允许单机测试,不支持多机分布式压力测试,因此wrk适合性能基准测试,对于模拟上万的用户并发测试显得有点力不从心;

③测试结果简单,无详细图表解析,举例如下;

wrk测试结果输出:

jmeter

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

优点如下:

①界面可视化操作,可以使用录制脚本方式对较为复杂的用户流建模,还可以创建断言来验证测试行为是否通过;

②表格、图形、结果树等多类可视化数据分析和报告输出,举例如下;
jmeter聚合报告及表格查看结果:

③支持http、ftp、tcp等多种协议类型测试;

④支持分布式压力测试,但对于上万的用户并发测试需要多台测试机支持,资源要求比较大;

⑤可以用于测试固定吞吐量下的系统性能,例如在100QPS(QPS:每秒查询率)下系统的响应时间和资源消耗;

缺点:

jmeter的GUI模式消耗资源较大,当需要测试高负载时,需要先使用GUI工具来生成XML测试计划,然后在非GUI模式下导入测试计划运行测试,并且关闭不需要的侦听器(收集数据与展示测量的组件),因为侦听器也会消耗掉本用于生成负载的大量资源。测试结束后后,需要将原始结果数据导入GUI以才能查看结果。

locust

locust是一个的简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试。locust使用python语言开发,测试资源消耗远远小于java语言开发的jmeter。且其支持分布式部署测试,能够轻松模拟百万级用户并发测试。

与jmeter和wrk相比,locust具有以下优缺点:

优点:

①不同与wrk和jmeter使用线程数提高并发量,locust借助于协程实现对用户的模拟,相同物理资源(机器cpu、内存等)配置下locust能支持的并发用户数相比jmeter可以提升一个数量级;

②相比wrk对复杂场景测试的捉襟见肘和jmeter需要界面点击录制复杂场景的麻烦,locust只需用户使用python编写用户场景完成测试;

③不同与jmeter复杂的用户使用界面,locust的界面干净整洁,可以实时显示测试的相关细节(如发送请求数、失败数和当前发送请求速度等);

④locust虽然是面向web应用测试的,但是它可以用来测试几乎所有系统。给locust编写一个客户端,可以满足你所有的测试要求;

缺点:

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

locust测试结果:

总结

本文简单介绍和对比了wrk、jmeter及locust三种性能测试工具,希望能给大家带来基础的认识。此外让我们最后一起来看看面临以下测试需求,我们应该如何在三者中进行选择:

①我想使用界面操作的形式对我的系统做性能测试,并且希望我的测试数据有个良好的可视化展示方式;

——建议使用jmeter工具

②我想要对我系统的http rest接口进行性能测试,但是我之前没有进行过任何测试,我不知道我的系统QPS是个什么样的水平;

——建议使用wrk工具

③我想对我的系统模拟用户操作进行复杂场景的性能测试;

——建议使用locust工具

④我想测试我的系统在一定QPS情况下,一段时间内的性能指标(cpu消耗、内存消耗等);

——建议使用jmeter工具

⑤我想使用匀速请求的方式,对我的系统进行性能测试;

——建议使用jmeter或locust工具

⑥我想体验编程的乐趣,自己编写脚本进行性能测试;

——http请求:wrk,使用lua语言编写脚本;

——locust,使用python语言编写脚本;

——或者,just do it by yourself,自己选择编程语言编写性能测试脚本。

原文地址:https://www.cnblogs.com/Detector/p/8684658.html

时间: 2024-07-30 10:09:39

想做性能测试不知道怎么选顺手的工具?的相关文章

服务器性能测试,你选哪种工具

众所周知,服务器是整个网络系统和计算平台的核心,许多重要的数据都保存在服务器上,很多网络服务都在服务器上运行,因此服务器性能的好坏决定了整个应用系统的性能. 现在市面上不同品牌.不同种类的服务器有很多种,用户在选购时,怎样从纷繁的型号中选择出所需要的,适合于自己应用的服务器产品,仅仅从配置上判别是不够的,最好能够通过实际测试来筛选.而各种的评测软件有很多种,你应该选择哪个软件测试?下面就介绍一些较典型的测试工具:  (一)服务器整机系统性能测试工具 一台服务器系统的性能可以按照处理器.内存.存储

【转】在做性能测试之前需要知道什么

最近群里来了很多新朋友,大都是新做测试或准备做测试工作的,见好多新来上来就问关于LoadRunner的使用上的问题.对性能测试的理解也不是太清楚.公司说让他们对系统做个性能测试,他们听说LoadRunner是做性能测试的,在网上找了点了LoadRunner的使用说明就开始对系统下刀了.对于一些大公司的专业性能测试人员来说,这个很可笑,但这是种情况是存在的,我当初也到公司时也这么干的. 那时还真把性能测报告给整出来了,现在看来那报告没有任何意义.虽然,虽然对现在的我来说性能测试也只是只懂皮毛.但还

性能测试分层模型-选自书籍:小强软件测试疯狂讲义

百度搜索:小强测试品牌 新书推荐 本书终于在前段时间出版了,现在已经可以在各大网店购买了,搜索书名即可.书籍购买地址:https://detail.tmall.com/item.htm?id=547310727717 这里我特别提前说一句:任何东西都有一定的受众群体,世界上也没有任何东西可以让所有人100%满意.So,本书也是.只要本书中有一个篇章的内容给你带来了影响那就是这本书的价值!感谢大家的支持. 引子 我为什么会把这个话题放到最开始呢?就是因为这些年在企业工作中.在教育领域培训中接触过不

为什么想做测试,我的测试开端

这个问题曾经纠结了我很久,开发还是测试?最终出于自己内心的渴望与求知决定我要从事软测这个行业. 从本科我就开始接触主流的编程语言,也一直以为自己以后会从事软件设计这份工作,直到大三找实习的时候接触到软测,加上身边很多人都说女孩子适合做软测,不累,当初就抱着这么单纯的想法,懵懵懂懂的就想往测试这个方向走了,算是在心里种下了一颗种子.当时也是为了增加项目经历和拥有开发经验(当时觉得有开发经历能找到好工作)就选择了现在所在的实验室,进入实验室后才发现这个环境和我所想的不一样,不到半年,我就对自己的前途

sysbench的安装和做性能测试

sysbench的安装和做性能测试 http://imysql.cn/node/312 sysbench是一个模块化的.跨平台.多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况. 关于这个项目的详细介绍请看:http://sysbench.sourceforge.net. 它主要包括以下几种方式的测试: 1.cpu性能 2.磁盘io性能 3.调度程序性能 4.内存分配及传输速度 5.POSIX线程性能 6.数据库性能(OLTP基准测试) 目前sysbench主要支持 MyS

【思考】真的找得到那个你真正想做的工作吗?

距离2016年6月份毕业已经半年有多, 加上毕业前的实习,实际做游戏测试也已经大半年了. 干了这么几个月,我难过的是我却始终对这份工作热衷不起来. 我并不觉得我是在做一件很有意义的事. 学了点皮毛代码,我承认在错误找出来,代码执行的时候能给我很大的成就感. 可是然后呢.过了两三天这点热情就消失殆尽. 我依旧还是那个望着代码会发晕的Girl. 而对于游戏本身,我也提不起太大的兴趣,同类型的游戏不愿意去玩, 对一些真正的游戏玩家而言显而易见的设计问题我也看不出来. 这种感觉在7,8月份的时候很明显,

如何做性能测试

偶然间看到了阿里中间件Dubbo的性能测试报告,我觉得这份性能测试报告让人觉得做这性能测试的人根本不懂性能测试,我觉得这份报告会把大众带沟里去,所以,想写这篇文章,做一点科普. 首先,这份测试报告里的主要问题如下: 1)用的全是平均值.老实说,平均值是非常不靠谱的. 2)响应时间没有和吞吐量TPS/QPS挂钩.而只是测试了低速率的情况,这是完全错误的. 3)响应时间和吞吐量没有和成功率挂钩. 为什么平均值不靠谱 关于平均值为什么不靠谱,我相信大家读新闻的时候经常可以看到,平均工资,平均房价,平均

解密小米:到底想做什么?

即使估值已经超过450亿美元,小米依然是一家很饥渴的公司. 这家公司的创始人兼首席执行官雷军在最近的一个月中,带着他的自拍杆多次出现在了全球媒体的镜头中,46岁的他看上去意得志满.3月15日,他在朋友圈中贴出了李克强总理答记者问的一段话——“最近互联网上流行的一个词叫风口,我想站在‘互联网+’的风口上顺势而为,会使中国经济飞起来.” 雷军成功地将他的“风口”和“顺势而为”理论输出到了国家领导层.他的另一个身份是全国人大代表,根据耶鲁大学Rory Truex的调查,如果一家公司的CEO当上全国人大

作为程序员我是怎么想做一个网站的?

原文地址:http://www.cnblogs.com/phphuaibei/p/3364469.html 本身作为一个网站开发者,做网站本来是件很容易的事情,但是真正到了给自己做一个网站的时候,却不知道该如何下手了! 事件描述: 本来想做一个简单的活动日历,可以在月历视图里面查看每周活动,就怎么简单!-----一个网页的需求 突然我想到,每周的活动详情还是要一个页面,还需要对应的后天发布,管理--------一个CMS的需求 如果有活动,那么他们可能要跟帖讨论问题,还有她们也可以发活动的---