性能测试实战 30 讲
高楼
前 HP 高级性能专家,7DGroup 创始人
45941 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 37 讲
性能测试实战 30 讲
15
15
1.0x
00:00/00:00
登录|注册

13丨性能测试场景:如何进行场景设计?

思考题
场景的重要性
分析异常场景结果
异常场景操作步骤
异常场景设计
分析稳定性场景结果
稳定性场景运行情况
稳定性场景设计
测试结果分析
设计容量场景
分析测试结果
基准性能测试
每个业务的最大容量
总结
异常性能场景
稳定性性能场景
容量性能场景
基准性能场景
业务比例、业务目标TPS和响应时间指标
场景的重要性
性能测试场景设计
性能测试场景设计

该思维导图由 AI 生成,仅供参考

我们在前面屡次强调了场景的重要性,今天终于到了要把实际场景拿出来解析的时候了。
在本篇文章中,为了保证数据的连续性,我用之前的项目资料来作明确地说明。同时为了模糊关键业务信息,以及让场景的描述更通用性,我会把所有的业务名隐去。
根据之前我们所说的,基准性能场景是为了测试出单业务的最大容量,以便在混合容量场景中判断哪个业务对整体容量最有影响。
今天的场景设计需要说明两个前提条件:
这些业务都是实时的业务,不涉及批处理、大数据等业务。
因为本篇着重讲场景的设计和具体项目的操作,所以不加系统资源的分析,避免信息混乱。
在这个场景设计中,首先,我们要列出自己要测试的业务比例、业务目标 TPS 和响应时间指标。
在这个项目中,响应时间指标是统一的,就是不大于 100ms。
其实我们在做项目的时候,经常会这样制定一个统一的响应时间指标,这样做也不是完全因为懒,更多的是根本不知道如何定每个业务的时间。但我们性能测试人员要知道,这显然是不对的,因为业务不同,响应时间指标也应该不同,合理的做法是给出每个业务的响应时间指标。下面我们还会遇到响应时间定得不够细致的问题。
有了这个列表,下一步就是做基准性能测试了。

基准性能场景

有很多人做接口测试的时候,觉得接口的 TPS 真是高呀,于是就按照最高的 TPS 跟老板汇报。但我们一定要知道的是,接口的 TPS 再高,都无法说明容量场景的情况,除非这个服务只有这一个接口,并且也只为了测试服务,这时就不必有混合的情况了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了性能测试场景设计的重要性以及设计方法。首先,作者强调了基准性能场景和容量性能场景的设计方法,并突出了业务比例和目标TPS的重要性。通过具体项目数据分析,展示了不同业务的最大TPS和响应时间随用户增加而增加的情况。此外,文章还介绍了稳定性性能场景的设计,强调了稳定性场景的时间长度取决于系统上线后的运维周期。作者还澄清了稳定性测试中使用最大TPS的80%原则的误解,强调了在具体项目实施过程中,完全没有必要遵守这些原则。最后,文章通过具体的数据和图表分析,为读者展现了性能测试场景设计的逻辑和方法。整体而言,本文对性能测试场景设计进行了深入的探讨,为读者提供了宝贵的参考和思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能测试实战 30 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(103)

  • 最新
  • 精选
  • 杜艳
    还是不会做这些结果图啊,能对应jmeter讲解具体点吗?知道怎么分析了,不知道这些数据图怎么来的。

    作者回复: 这个专栏没有规划要讲jmeter的基本使用,所以不清楚你要讲的jmeter具体功能是什么,如果呼声高的话,后面,我可以加餐。

    2020-02-07
    17
    66
  • Coby
    高老师,您好。您的文章让我受益匪浅。这篇文章中有几个问题: 1.不同场景测试方法的问题。以前看到其他的性能书籍中介绍,基准性能场景是使用单线程做,目的是为了获取单线程时TPS值。容量性能场景是按照需测试的业务一个个做,找出最大TPS、线程数或瓶颈点;混合性能场景是按照业务比例(这个比例大多数是拍脑袋决定的)做;稳定性场景一般是按照时间长度,比如连续不断8小时、24小时、3x24小时等等。这样的做法不对吗? 2.针对一个新开发的系统,没有上线使用过,不管是客户方的业务部门或者我方的产品经理均无法给出业务比例,这时这么确定业务比例呢? 3.异常性能场景一般很少会被提及,渐渐大家都忘了这个场景。做这种场景的时候不用考虑单独一个区域中断的情况吗?比如您示意图中区域一、二、三、五都是应用服务器,只中断区域一中一半服务器后的TPS、响应时间情况。

    作者回复: 1. 不知道你看的是什么书籍,从我的理念上来说,那是绝对错误的理念。像你说的: “基准性能场景是使用单线程做,目的是为了获取单线程时TPS值。” 这个都不用测试呀,脚本直接跑一遍,看一下响应时间,就知道TPS了。这还能叫场景这么复杂的词吗?这就是验证一下脚本而已。 ”容量性能场景是按照需测试的业务一个个做,找出最大TPS、线程数或瓶颈点;混合性能场景是按照业务比例(这个比例大多数是拍脑袋决定的)做;“ 这个听起来似乎没有什么不同的逻辑。但是你说的”容量性能场景“和”混合性能场景“,从词的本身含义上来说,你能区分谁做什么吗?我觉得容量性能测试这个词就可以是混合的,按你这样的说法,我只能理解为”容量性能场景“其实就是单业务的最大TPS场景。如果这样的话“容量”这个词就完全不是它本来该有的含义了。而“混合性能场景”是在表达生产场景的含义,要非这么说也没什么,只是字不同。 只是在我的理念中:基准就是测试单业务的最大TPS;容量就是测试生产场景的所有业务混合的场景。这样清晰又简单,字面意思就能理解。 “稳定性场景一般是按照时间长度,比如连续不断8小时、24小时、3x24小时等等。” 在我看来,这样设置时间长度,必然不对。最简单的来说,你测试了24小时的场景,如果让你回答“系统什么时候会死”或者“系统能不能运行一个月”,可以回答得了吗?在我的经历中,我没看到有人敢拍着胸脯保证的。 不是因为时间长度不够,而是因为没有逻辑推算判断就直接拍了一个时间,自己也拿不准。 所以这样配置时间的思路必然是不对的。 2. 这个问题,我觉得好奇怪,很多人问。做为一个性能团队,业务比例也不是自己定的,为什么要把这个责任揽到自己头上呢? 做为一个新开发的系统,如果连参照物都没有,那系统从哪来的呢?项目中没有一个人是有类似项目经验的吗?还是都不敢承担责任呢?就算是从线下搬到线上的系统也必然是有线下业务统计数据的呀。 在我的经验中,如果所有人都没有给的话。那我肯定会给出一个最傻瓜的比例,那就是所有业务都是1:1。这时你拿着1:1的业务比例跟别人讨论时,别人就会有意见了:“你这个1:1配置不合理呀?!” 好吧,那不合理的话,你为什么不给一个?这时肯定会有人说,这个业务应该是比一点,那个应该少一点。你看,这时候是不是业务比例就开始慢慢要形成了。 不过还是奉劝做性能的人,不要背这个锅。 3. 异常场景肯定是从小做到大的。每个区域中的每个组件,甚至到参数,我们都要做的。只是在一个文章中没法尽述,我只能举一个最复杂的最大的例子。如果全写出来,我估计还得来30多篇。

    2020-03-13
    2
    37
  • kubxy
    在容量场景中,您说要控制比例。这里控制的是什么的比例?线程数吗?您这里没有给出Jmeter的配置(具体环境的上下文缺失),很容易导致理解上的误区。

    作者回复: 工具操作类的,觉得在度娘上能找到,所以没有写。不然有些有经验的就认为专栏过于基础了。 你的这个可以在jmeter中用throughput controller实现。直接输入比例值就可以。如果具体不会操作,可以在微信上找我。

    2020-03-14
    7
    10
  • 😂
    老师,您好,目前最大的疑问就是我应该设置多少个线程去压测,递增策略和递交策略,持续时间,这些该如何确定啊?

    作者回复: 这个之所以没有固定的说法是因为它本身就没法固定。 要根据实际的业务场景去做相应的调整才可以。 通常我的做法就是: 1. 先确定单线程时响应时间是多少。假设响应时间在10毫秒以下,我会一个一个线程增加,因为tps在这时增加的很快。这就确定了梯度。 2. 我会用二分法确定系统的上限。比如说,我先加100个压力线程,看系统的tps是多少,如果这时tps没到上限,就用200个压力线程,以此类推。但如果在100个压力线程时就已经达到了tps上限,我会降到50压力线程再看,直到得到合适的压力线程为止。这就确定了压力工具中的线程数。 3. 持续时间在容量场景中,对我来说,我只要看到稳定运行一段时间即可,通常我会用一小时左右的持续时间。

    2021-03-26
    3
    8
  • Geek_f93234
    老师,文中的这段话:在这个示例中,业务 + 运维部门联合给出了一个指标,那就是系统要稳定运行一周,支持 2000 万业务量。运维团队每周做全面系统的健康检查。当然谁没事也不用去重启系统,只要检查系统是否还在健康运行即可。大部分时候运维是等着系统警告的。那么针对前面给出的容量结果,容量 TPS 能达到 3800(业务 1 到业务 6 的容量测试结果 TPS 总和)。所以稳定性场景时间应该是:20000000/3800 = 1.46 小时。 不明白稳定性场景时间为什么要这么计算?能详细分析一下吗? 还有我之前看到的很多都是这么来确定稳定性场景的执行时间的:一般来说,对于正常工作日(8小时)运行的系统,至少应该能保证系统稳定运行8小时以上,对于7*24运行的系统,至少应该能够保证系统稳定运行24小时以上。

    作者回复: 一个系统只有一种情况会需要像你这样来设计场景,就是系统的稳定性只和时间和关,和业务积累量无关。 我说的是用计算业务积累量的角度。

    2020-02-09
    4
    8
  • Geek_65c0a2
    高老师,我有个小白问题哈。为什么容量测试的结果会比单业务测的结果高呢?😄

    作者回复: 走的路径不一样。单业务涉及到的机器也没有容量场景涉及的机器多。

    2020-01-13
    8
  • 村夫
    老师,有几个问题和想法。首先场景不断这个应该怎么理解?其次是老师例子中的业务一到六是一个接口还是多个接口?再次是控制业务比例,如果可以拿jmeter举例子会好很多,让我们能把您的想法落地,前面那几篇工具篇能匀一篇说业务比例如何设计该多好。最后是容量场景下最大tps应该怎么看?我看您的图都是曲线图,难道是看曲线图约摸着得出一个结果?

    作者回复: 场景不断,就是从低到高线程递增。 业务1到6,都是有业务含义的,后端会有很多个接口。 控制业务比例的过程通常是这样的:1. 先是拿线程数和TPS、响应时间来计算业务比例来做;2. 当运行过程中出来业务比例偏差时,就调整线程数;3. 在jmeter中可以有控制吞吐量的控制器。 业务比例设计的后面有一篇是专门描述这个的。 最大TPS,我是通过曲线图的一段来做计算的,你要是“约摸”这个词,也不是不可以。哈哈。

    2020-01-13
    6
  • kubxy
    老师,性能场景中,比例控制这一块您能否结合jmeter等性能工具的具体设置来讲解?这里直接上测报报告,让我们这些性能测试新手理解起来很困难。总有一种是懂非懂的感觉

    作者回复: 另一评论中已回复。

    2020-03-14
    5
  • Geek_588072
    高老师,实在是高

    作者回复: 好好学习,拍马屁也不能让你成长。哈哈

    2021-08-30
    4
  • 月亮和六便士
    高老师,请教一下,容量测试的时候 :假如有三个接口,没有顺序,但是有业务比例,是不是把三个接口放一个线程组里,每个接口添加事物,按照业务比例设置throughput controller控制就可以,如果有顺序,设置一个大事物就可以?

    作者回复: 是的,我理解你说的这样设置没问题。

    2020-04-04
    4
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部