性能测试实战30讲
高楼
前HP高级性能专家,7DGroup创始人
立即订阅
3700 人已学习
课程目录
已更新 13 讲 / 共 30 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词丨“老板,之前咱TPS是100,我优化完是10000”
免费
第一模块:性能测试基础篇 (6讲)
01丨性能综述:性能测试的概念到底是什么?
02丨性能综述:TPS和响应时间之间是什么关系?
03丨性能综述:怎么理解TPS、QPS、RT、吞吐量这些性能指标?
04丨JMeter和LoadRunner:要知道工具仅仅只是工具
05丨指标关系:你知道并发用户数应该怎么算吗?
06丨倾囊相授:我毕生所学的性能分析思路都在这里了
免费
第二模块:性能测试工具及性能场景篇 (6讲)
07丨性能测试工具:如何录制脚本?
08丨案例: 手把手教你编写最简单的性能脚本
09丨关联和断言:一动一静,核心都是在取数据
10丨案例:在JMeter中如何设置参数化数据?
11丨性能脚本:用案例和图示帮你理解HTTP协议
12丨性能场景:做参数化之前,我们需要考虑什么?
性能测试实战30讲
登录|注册

10丨案例:在JMeter中如何设置参数化数据?

高楼 2020-01-06
今天我们来做一个实例,看下在 JMeter 中,如何合理地设置参数化数据。

正式场景前的基准测试

在没有做业务混合场景之前,我们需要先做 Benchmark 测试,来确定一个登录业务能支持多少的业务量,这样就可以在业务混合场景中,根据场景中各业务的比例来确定登录的数据需要多少真实的数据。
我们继续用上一篇文章中用户登录的例子,单独测试登录业务,结果如下:
Java
summary + 125 in 00:00:04 = 31.0/s Avg: 28 Min: 0 Max: 869 Err: 0 (0.00%) Active: 1 Started: 1 Finished: 0
summary + 3404 in 00:00:30 = 113.2/s Avg: 31 Min: 0 Max: 361 Err: 0 (0.00%) Active: 6 Started: 6 Finished: 0
summary + 4444 in 00:00:30 = 148.4/s Avg: 57 Min: 0 Max: 623 Err: 10 (0.23%) Active: 11 Started: 11 Finished: 0
从上面的结果可以看到登录业务能达到的 TPS 是 113 左右,这里我们取整为 100,以方便后续的计算。

在测试工具中配置参数

在上面的试探性测试场景中,不需要观察系统的资源,只需要根据 TPS 做相应的数据统计即可。
前面我们知道,在这个示例中只做了近 10 万条的用户数据,为了方便示例进程。
下面我们从数据库中查询可以支持登录 5 分钟不重复的用户数据。根据前面的公式,我们需要 30000 条数据。
Java
100x5mx60s=30000条
接下来连接数据库,取 30000 条数据,存放到文本中,如下所示:
Java
username,password
test00001,test00001
test00002,test00002
test00003,test00003
test00004,test00004
test00005,test00005
test00006,test00006
test00007,test00007
...................
test30000,test30000

参数化配置在 JMeter 中的使用说明

我们将这些用户配置到测试工具的参数当中,这里以 JMeter 的 CSV Data Set Config 功能为例。配置如下:
在 JMeter 的参数化配置中,有几个技术点,在这里说明一下。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《性能测试实战30讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(3)

  • 律飛
    JMeter 的 CSV Data Set Config 功能用来从文件中读取数据行,并将它们拆分后存储到变量中。个人理解,Recycle on EOF的优先级高于Stop thread on EOF,也就是说,需要先判断Recycle on EOF,如果是Flase,直接在文件结束时就停止了线程,根本不考虑Stop thread on EOF参数值;如果是True,就要根据Stop thread on EOF参数值来确定线程是否停止运行。在明白组合逻辑关系后,可以更高效的设置参数、更准确的达到测试目的。
    各种测试工具有各种测试功能,可能其中就会存在有关联的参数配置,这也需要我们特别关注。如果查阅资料还不能清晰认识,就按老师的做法,通过对不同组合进行实验,最终弄清楚组合关系,归纳总结出优先顺序,从而在平时测试中帮助我们快速有效地找到最优的组合。

    作者回复: 我觉得你写的比我写的好。哈。

    2020-01-07
    1
    1
  • 晴空
    1、为什么参数化数据要符合生产环境的数据分布?
    尽可能少的数据应用覆盖到尽可能多的测试场景中。
    2、为什么参数化数据要关注组合逻辑关系,而不是随意设置组合?
    关注组合逻辑关系,可以理解为了解数据生成规则,换句话说也就是有效的数据是有哪些实际业务场景产生的。

    无论是问题1还是问题2,都是以实际业务场景为基础进行展开测试与规划的

    作者回复: 理解的很对。

    2020-01-08
  • 善行通
    感谢老师总结;
    1、罗列出需要参数化的数据及相对应的关系;
    2、将参数化数据从数据库中取出或设计对应的生成规则;
    3、合理地将参数化数据保存在不同的文件中;
    4、在压力工具中设置相应的参数组合关系,以便实模拟真实场景

    之前做行测不太去理解:
    Recycle on EOF? :这里有三个选择,False、True 和 Edit。
    Stop thread on EOF?:这里有三个选择,False、True 和 Edit。含义和上面一致。
    Sharing mode : 这里有四个选择,All threads、Current thread group、Current thread、Edit。
    这几个用户,经过老师这样一步一步分析,收获很大,谢谢老师分享

    第一个问题:为什么参数化数据要符合生产环境的数据分布?
    1、减少数据命中率;
    2、减少缓存命中率;
    3、符合性能压测价值,测试结果更真实;

    第二个:为什么参数化数据要关注组合逻辑关系,而不是随意设置组合?
    1、业务规则决定参数文件不能随便组合;
    2、如果随意组合参数,会影响事务成功率;

    作者回复: 有收获我就值得了。

    2020-01-06
收起评论
3
返回
顶部