性能测试实战30讲
高楼
前HP高级性能专家,7DGroup创始人
立即订阅
4054 人已学习
课程目录
已更新 24 讲 / 共 30 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词丨“老板,之前咱TPS是100,我优化完是10000”
免费
第一模块:性能测试基础篇 (6讲)
01丨性能综述:性能测试的概念到底是什么?
02丨性能综述:TPS和响应时间之间是什么关系?
03丨性能综述:怎么理解TPS、QPS、RT、吞吐量这些性能指标?
04丨JMeter和LoadRunner:要知道工具仅仅只是工具
05丨指标关系:你知道并发用户数应该怎么算吗?
06丨倾囊相授:我毕生所学的性能分析思路都在这里了
免费
第二模块:性能测试工具及性能场景篇 (9讲)
07丨性能测试工具:如何录制脚本?
08丨案例: 手把手教你编写最简单的性能脚本
09丨关联和断言:一动一静,核心都是在取数据
10丨案例:在JMeter中如何设置参数化数据?
11丨性能脚本:用案例和图示帮你理解HTTP协议
12丨性能场景:做参数化之前,我们需要考虑什么?
13丨性能测试场景:如何进行场景设计?
14丨性能测试场景:如何理解业务模型?
15丨性能测试场景:如何进行监控设计?
春节策划 (2讲)
春节策划丨性能评估和性能分析试题,等你挑战!
春节策划丨快来挑战一下自己的分析逻辑吧!
第三模块:性能监控分析工具篇 (6讲)
16丨案例:性能监控工具之Grafana+Prometheus+Exporters
17丨CentOS:操作系统级监控及常用计数器解析(上)
18丨CentOS:操作系统级监控及常用计数器解析(下)
19丨Java & C ++:代码级监控及常用计数器解析(上)
20丨Java & C ++:代码级监控及常用计数器解析(下)
21丨Tomcat:中间件监控及常用计数器解析
性能测试实战30讲
登录|注册

12丨性能场景:做参数化之前,我们需要考虑什么?

高楼 2020-01-10
在性能测试中,我们要关注的数据主要有以下几类,分别是参数化数据、监控数据和基础铺底数据。
我们今天先描述第一种参数化数据,在后面的文章中再描述其他数据。
首先我们需要了解,为什么要关注性能场景中的参数化数据呢?我以下面的两个例子说明一下。
在我的工作经历中,见过很多初级性能测试工程师不知道如何设置合理的参数化数据,以至于数据会出现这两种情况。
1. 数据不均衡
有些人直接用同一个数据执行混合场景测试,在这种情况下对服务器的压力和真实环境下的完全不一样。有时我们不得不造很多参数化数据,也有很多工程师不考虑数据库表中的数据直方图,就直接在少量的参数化数据中创建了大量的相关记录。比如说,在电商系统中造出大量的购买记录;在银行系统中造出大量的个人流水记录。
这些都不能满足真实用户场景的需要,导致的结果就是整个测试结果都毫无意义。
2. 参数化数据量不足
有时候,如果我们选择用非常少量的数据运行大量业务操作的场景,就会导致压力和真实生产环境完全不一致。比如说,用 100 个数据运行出上万甚至上亿的业务操作。
那么到底该怎样才能合理地设置参数化数据呢?

参数化数据的疑问

根据我的经验,在参数化测试数据的获取和考虑上,我们一般会有以下四个常见的疑问。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《性能测试实战30讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(10)

  • @zzw

    小结一下,在性能测试中,我们关注的参数化数据主要有以下几个方面:

    1)参数化数据应该用多少数据量?
    我们需要保证测试时间足够长、满足测试的负载请求需求,根据「目标tps x 持续时间(秒级)」可以计算出参数化数大概的量级。

    2)参数化数据从哪里来?
    大概分为两大类型:
    - 死水数据,即out-of-box(事先创建测试数据),数据存在后台的数据库中;
    - 活水数据,即On-the-fly(实时创建),数据库不存在这些数据,构造参数化数据需要符合业务特点。

    构造测试数据通常有以下两种方法:
    - 通过 API 调用生成测试数据;
    - 通过数据库操作生成测试数据。

    3)参数多与少的选择对系统压力有什么影响?
    满足测试的负载请求足够多和数据足够多样化,从而最大限度地减少或者掩盖缓存等其他因素的影响。参数取得过多,对系统的压力就会大;参数取得过少,不符合真实场景中的数据量,则无法测试出系统真实的压力。

    4)参数化数据在数据库中的直方图是否均衡?
    参数化数据需要符合真实业务数据分布情况,这样更符合业务真实场景。

    作者回复: 总结的很好。

    2020-01-22
    2
  • 善行通


    参数化数据应该用多少数据量?
    1、之前做性能测试,不会计算使用多少数据,反正找几千条数据做性能测试,如果可以重复使用,就用几个用户做压测。经过老师这样讲解,1、循环场景使用【用户数据=线程个数】2、不可循环使用的数据Tps * 持续时间如【100(pts)x30*60(时间)=180000(条用户数据】 ;明白(配置参数之前,我们需要先判断这个参数是什么类型的数据)

    参数化数据从哪里来?
    1、后台数据库中;
    2、在脚本执行成功后会将这些数据 insert 或 update 到数据库中;
    3、通过模拟业务接口把数据跑进去;
    明白:参数化时需要确保数据来源以保证数据的有效性。

    参数多与少的选择对系统压力有什么影响?
    1、明白:如果压力工具使用的数据量少,那么应用服务器、缓存服务器、数据库服务器,都将使用少量的缓存来处理,相应消耗资源比较少,测不实际效果;
    2、如果压力工具使用的数据量少,那么应用服务器、缓存服务器、数据库服务器,都将使用少量的缓存来处理,导致命中率高,响应实际块;
    3、参数取得过多,对系统的压力就会大;
    4、参数取得过少,不符合真实场景中的数据量,则无法测试出系统真实的压力
    感谢老师总结:对一个系统来说,获取的参数化数据是否合理,会直接影响压力测试的结果有没有意义。

    参数化数据在数据库中的直方图是否均衡,这一层学到【如果数据取自于数据图,我们通常要检查一下数据库中的数据直方图。 对于直接从生产上拿的数据来说,数据的分布更为精准。】性能测试,性能测试数据之间影响测试结果。

    感谢老师总结的【参数化数据的合理性对性能场景有着举足轻重的作用。通常,我们在做参数化数据之前,需要先分析实际业务的逻辑】


    参数化数据的分析重点是哪些?
    1、参数化数据的分析重点是业务逻辑,只有符合逻辑的参数化,对性能测试结果会之间影响。

    在不同的场景中为什么参数化数据有如此大的差异?
    1、电商下单压测,如果用重复数据,完全不符合实际业务情况,会导致大量缓存,结果不真实;
    2、如果是登录后操作其他业务,就可以用几个用户登录后,进行其重复业务操作压测

    参数化数据的来源和获取要符合哪些规则?
    1、通过数据库之间查出来做参数文件
    2、通过接口把数据跑出来这样不会破坏表,更真实

    当不符合获取规则时,会产生什么问题?
    1、压测结果不真实;
    2、影响压测判断;

    作者回复: 觉得真传!!

    2020-01-10
    1
  • 律飛
    1.参数化数据的分析重点是哪些?在不同的场景中为什么参数化数据有如此大的差异?
    分析重点是获知数据量。一是通过业务模型分析计算,获得初步的数据量要求;二是根据限制条件和业务场景,确定数据类型;三是结合上述两点,最终确定参数化数据的数据量。
    不同场景中,数据使用对业务的完成是不一样的,比如某一场景中数据可以反复出现,不影响业务,自然能实现预期的场景;而另一场景中,反复出现的数据却不能多次实现同一业务,这种情况下,当时无法实现预期的场景。
    2.参数化数据的来源和获取要符合哪些规则?当不符合获取规则时,会产生什么问题?
    参数化时需要确保数据来源以保证数据的有效性,千万不能随便造数据。这类数据应该满足两个条件:要满足生产环境中数据的分布;要满足性能场景中数据量的要求。
    产生的问题:1.不合理的数据分布,会干扰测试结果,增加后续分析和测试的工作量;2.数据取得过多,对系统的压力就会大;数据取得过少,不符合真实场景中的数据量,则无法测试出系统真实的压力。

    作者回复: 理解的很对。这样下去,看完专栏就超过我了。

    2020-01-10
    1
  • 杜艳
    老师,首先,参数化数据要用到多少取决于场景,举例来说,对一个压力工具线程数为 100,TPS 有 1000 的系统,如果要运行 30 分钟,则应该取得的参数化数据是下面这样的。 我想咨询下,系统的TPS=1000,这个数值最初是怎么得来的?

    作者回复: 这只是个假设的tps。

    2020-02-07
  • songyy
    思考题
    - 参数化数据的分析重点是哪些:看具体的业务逻辑,决定数据的具体分布情况
    - 在不同的场景中为什么参数化数据有如此大的差异:因为业务逻辑不通,使得数据分布对应的不同
    - 参数化数据的来源和获取要符合哪些规则:要满足生产环境中数据的分布;要满足性能场景中数据量的要求。
    当不符合获取规则时,会产生什么问题:性能测试出来的结果,不能代表真实场景

    作者回复: 理解的很对。

    2020-01-16
  • 月亮和六便士
    老师,怎么看数据库中数据分布直方图?

    作者回复: 根据关键列做groupby。

    2020-01-16
  • 小老鼠
    参数化直方图📊介绍下,本章讲得很好
    2020-01-11
    1
  • 土耳其小土豆
    学完
    2020-01-11
  • 新思维
    请问在性能测试过程中对验证码如何处理?开发屏蔽调还是写成固定值?

    作者回复: 写成固定值,不还是开发要改代码的吗?
    我通常是把校验去掉或加万能验证码。

    2020-01-10
  • A周黑鸭
    怎么去测量一个接口的tps是多少?比如登录接口 我要知道这个接口的tps是多少才知道要使用多少参数化数据吗?老师

    作者回复: 这是个反复验证的过程。看测试的阶段和目标。

    2020-01-10
收起评论
10
返回
顶部