04丨JMeter和LoadRunner:要知道工具仅仅只是工具
04丨JMeter和LoadRunner:要知道工具仅仅只是工具
讲述:高楼
时长25:57大小17.80M
性能工程师的三大学习阶段
性能工具学习期
性能场景学习期
性能分析学习期
公司性能团队成长阶段
性能团队初建
性能团队初成熟
性能团队已成熟
对个人以及团队来说,工具应该如何选择
JMeter 和 LoadRunner 的历史兴衰
使用性能测试工具的误区在哪里
如果选择合适自己的工具?
总结
思考题
赞 25
提建议
精选留言(54)
- zuozewei2019-12-23第一个问题: 大概会考虑怎么几个方面: - 学习成本:对人员的水平要求,培训时间成本等; - 脚本编写:能否录制测试脚本,是否支持GUI操作等; - 安装部署成本:是否支持一键安装,是否支持docker等; - 是否免费:开源工具一般都是免费的;但是很多收费工具也的确物有所值; - 是否支持多协议:比如是否支持 HTTP 协议、RPC 协议等等 - 测试场景:是否有链路、场景编排管理,支持支持将请求编排成业务场景,即常见的一串联场景; - 流量控制:支持纵向的,上下游链路的请求量逐渐减少,整体呈现一个漏斗模型;也可以是横向的; - 压力控制:指压测时并发用户数、 TPS 的控制等; - 数据驱动:大量的测试数据的参数化; - 分布式支持:支持压力机集群; - 测试报告:压测结果是否能够图形化展示,提供美观且丰富的测试报告; - 二次开发的成本:由于时间或人力关系,也需要考虑二次开发成本; - 性能开销:执行机开销、软件可靠性、执行效率、业务处理能力等。 .... 第二个问题: 我觉得一个好的监控系统大概需要包括以下几个方面: - 全栈系统监控是前提; - 关注于整体应用的 SLA:主要从为用户服务的 API 来监控整个系统; - 关联指标聚合:把有关联的系统及其指标聚合展示。主要是三层系统数据:基础层、平台中间件层和应用层。并提供一个全局的系统运行数据大盘,帮助快速找到系统瓶颈。 - 快速故障定位:快速定位问题需要对整个分布式系统做一个用户请求跟踪的 trace。 只有做到了上述的这些关键点才能是一个好的监控系统,而显然目前的测试工具监控是不满足的。 另外测试工具本身在做监控也有其局限性,如 jmeter 在压测量较大的情况下回传测试结果 Master 节点会成为容易成为瓶颈。展开
作者回复: 嗯,你说的很对。 我竟没有啥子可以补充的。
共 4 条评论91 - calm2019-12-24高老师,能否推荐一些性能测试这方面的书籍?
作者回复: 这个就比较麻烦了。除了写性能测试工具之外,性能测试基本上没有自己的书籍。 但是写工具也不算是完整的性能测试。 如果你要看的话,我建议你这样开。 OS、DB、存储、语言(java、go、python)、架构等各找一本性能相关的书看。比如说linux性能优化、java性能优化、mysql性能优化,这类的书。
24 - 私人领域2019-12-24现在在公司做的还是不太顺利,概念不理解,大家对并发的不理解,这包括开发,产品,项目,部分运维可以理解;还有就是无理要求要求8000并发,这个怎么跟他们解释都无用,一说就是客户要求的,这8000并发发包出去就几g的流量了,真不明白他们怎么想的,这做技术的人一点基础都没有,真的很难工作
作者回复: 要是你职位高,可以强势一点沟通。如果从历史数据中算到并发度并不高。(就是拿当前的用户和业务的TPS做比对就可以知道并发度。) 那完全可以算得出来。 现在不懂技术的人说的并发,大部分是说的在线。之前我算过一个要支持1000万基础用户(也就是数据库里总共只有1000万用户),再计算到日活,再计算到时、分、秒,才需要200TPS。
共 5 条评论13 - 村夫2019-12-24老师请教一个问题。关于事物的定义,假如有一个兑奖的活动,进去活动页面会请求三个接口,一个个人积分接口,一个是任务列表接口,还有一个是兑奖列表接口。在页面点击兑奖按钮会去请求兑奖接口,兑奖成功页面会去调用用户接口刷新用户当前积分。这样的情况应该怎么去定义事物?
作者回复: 这就是之前的一个文中所写的。 事务的定义取决于测试的目的: 1. 如果你想测试的是单个接口的容量,那显然,一个接口一个事务,并且都是直接连接口就行了。但是要注意的是,其实在测试兑奖接口的时候,后面的几个接口也都会调到,所以这时会把后面几个接口都压了。这时,如果你的目标只是测试兑奖接口本身,并不想测试关联的其他接口,那就mock掉。 2. 如果你要测试的兑奖的这个流程,那显然是从兑奖接口进去。事务定义到兑奖整个流程上。
11 - 小老鼠2019-12-24要测试一个在线运行的网站性能,应该使用什工具比较好?设置的被测网站的IP地址可以是公网IP吗?
作者回复: 使用什么工具取决于什么样的工具最适合应用场景。如果是HTTP协议的,那有很多工具都适用。没有谁比谁更好,只有哪个应用在团队中成本最低。 关于压力工具我从来不纠结,就算自己写一个多线程工具也无所谓,只要能让我看到TPS、响应时间、错误率之类的数据就可以。 从技术上说,不管是公网IP、内网IP,对性能测试的过程来说都无所谓,只要路由可达就可以测试。 只是用公网IP要考虑出口流量,以及架构上的各种网络设备,像WAF、SLB、广域网设备等。并且如果是按流量付费的带宽,还要先计算下费用。 还有客户端如果也在公网上,还要考虑客户端的出口带宽。 但是这些都和性能测试技术本身无关。
6 - Geek_0813772019-12-24支持高老师,希望听完能成为公司的性能大牛,哈哈
作者回复: 要是完全能在工作中落地的话,那就不是大牛了,是猛牛。哈。
共 2 条评论5 - 律飛2019-12-23第一个问题: 企业选择性能测试工具无外乎两种策略,一是性价比优先,花最少的钱最快地完成最多最需要完成的任务,比如租用云压测平台,属于头痛医头,脚疼医脚的临时策略,小公司、发展初期公司等常采用的策略,可以快准稳完成压力测试。二是结合长期发展目标,分阶段规划测试工具购买及测试人员培养,甚至自己开发测试工具,积累并形成自己的压测能力。这个策略与公司测试人员以及测试团队能力也有很大的相关性。其实老师已经讲得很清楚了。 第二个问题,我个人认为不应该在测试工具中做监控。现在处于一个分工很细的世界,术业有专攻,专业人做专业事,一来可以保持工具的简洁,二来可以保持工具的通用性,增加使用的灵活性。当然这对做性能测试的人的能力要求就更高了。不过工作的乐趣不就在于此吗?展开
作者回复: 理解的非常到位。完全领会了精髓。
5 - 罗辑思维2020-04-05最近在得到学习《薄世宁·医学通识50讲》 08丨病与症:为什么这些“病”不用治?文中对病与症的解读,让我能理解工具,性能指标,性能分析人员之间的关系。 比如风寒感冒(症状是怕冷,流稀鼻涕),吃风寒感冒颗粒,热水泡脚。 风热感冒(症状是咽喉肿痛,发烧),吃退烧片,热水泡脚,多喝淡盐水。 对应性能分析 性能指标 <---> 症 性能分析者的判断 <---> 病 性能优化 <---> 药 而工具只是观察性能指标(症)的手段,就像医生用仪器测量血压。展开
作者回复: 理解的很是合理。
共 2 条评论4 - 小呀么小二郎2020-03-12思考题: 你觉得企业选择性能工具应该考虑哪些方面呢? 1、企业规模及性质 2、系统性能目标(想要支持多少TPS) 3、系统架构 4、员工的学习成本 5、工具的优势是否满足要求,工具的缺点是否对性能测试没有影响或影响不大 (感觉自己的思维还是不够开阔呀,需要继续努力) 性能测试工具中是否必须做监控呢? 1、如果压测工具中必须做监控,那么大概率也就不会有监控工具了吧。因此监控工具的存在本身就表示了压测工具做监控这件事儿不是必须的。 2、第二点就是文中说的,数据流向不同,不符合真实的场景。 本文虽然是讲工具,但并非单纯的讲工具。老师不断强调的一个点都是,性能测试一个完整的流程是测试验证、分析和调优。(可能是有太多人以为性能测试=会工具的使用吧) 性能测试工具,本质上还是个工具,工具都是人发明的,为的是解决某个问题,同时都有自己的优势和不足。比如交通工具,上班的时候可以选择步行、骑自行车、骑电动车、开车、坐公交、坐地铁等等,开车肯定是最舒服的,但是可能会堵车;骑自行车是最健康的,但是耗时会长一些而且还要风吹日晒。其实选哪个都可以,只要能到公司就行。但是每个人的向往、喜好和财力不同,比如有人不怕日晒雨淋,更向往健康的生活方式,那我就选择骑自行车上班;有人讨厌堵在路上的感觉,所以选择地铁出行;有人没钱,买不起车,那就只能选择相对便宜的交通工具。 因此,不用过分纠结用哪个性能测试工具,只要我们能拿到需要的数据就行。展开
作者回复: 理解的很对。这样认真的话,我觉得看完专栏就是高手。
4 - 要不要菜2020-03-16说的太对了,目前就是到了尴尬的第三个阶段,会用工具会执行场景,就是不会分析调优
作者回复: 数据都看得懂,就是连不起来的感觉对不对?哈。 那就来着了。
共 2 条评论2 - slark2020-01-07Jmete和Locust都学过,J感觉有GUI,L是Python,编写测试脚本更便捷
作者回复: 喜欢什么用什么。只要压力能发起来就行了。
2 - 月亮和六便士2019-12-24高老师,推荐几款监控Java语言接口和方法执行时间的工具,比响应时间细分到Java某个工程的jar包,我怎么监控这个jar包里的接口执行时间,方法执行时间,还有算法执行效率,等等
作者回复: 这有很多呀。像jvisualvm/jmc/arthus/btrace......。开源免费。
共 2 条评论2 - piboye2021-05-08jmeter对go开发者不友好,go的程序比较容易改和扩展,部署也方便,性能也强很多,老师可以推荐一款golang的性能测试工具不?
作者回复: 工具嘛,自行搜索一下吧。
共 2 条评论1 - 一步2020-12-28对性能测试工程师的职责有了清晰的认知
作者回复: 这样的认识就是我想达到的效果呀。
1 - 莫西 👫 小妞儿 ...2020-01-15老师,想问一下前端性能的测试工作都有哪些呢?比如想知道实际用户看到页面中所有元素都加载完的时间
作者回复: 每个浏览器都有开发者工具。
1 - 莫西 👫 小妞儿 ...2020-01-14老师,我们单位属于国企,现在是用jmeter来压测,用nomn作为监控工具,这样是否可行。或者有什么更好的推荐么?
作者回复: 无所谓用什么样的工具,只要看到想看的数据即可。
共 2 条评论1 - Geek_0849d22020-01-07什么样的业务可以线上直接压测,什么样的业务不可以?如何控制线上的性能测试?我遇到的项目都不能直接压测线上,直接线上压测,万一压塌了,影响正常用户使用怎么办?
作者回复: 在线下准备不出来足够的硬件设备。业务又很重要的。只能在线上做了。 线上肯定会控制容量,不影响正常用户。
共 2 条评论1 - Geek_alair俊2019-12-29工具只是工具,通过工具的使用,分析出性能瓶颈,并且给出解决方案,这才是王道!神马各种压测工具,监控工具,看得见的没多少价值,分析这部分看不见的过程才是最有价值的!高老师一语中的。
作者回复: 多谢支持。希望理念传递给更多人。
1 - 苦行僧2019-12-23我们单位基本用jemter来压测,主要的测试为接口级测试,接口基本为数据给出接口,属于查询类事务
作者回复: 测试目标如果明确,怎么实现都是阔以滴。
1 - Geek_6156882022-07-06 来自北京我看到这里,说压测都是用TPS来计算,为啥我们每次要压测,都是QPS计算,比如上次压测,研发说我期望你们压到1000QPS
作者回复: 我不建议用QPS这个描述,我更习惯用TPS这个描述。 不过没有关系,只要说出来所有人都能理解是什么即可。