前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高级性能测试系列《11.如何实现动态属性?关闭jmeter后,就自动释放了》

高级性能测试系列《11.如何实现动态属性?关闭jmeter后,就自动释放了》

作者头像
清菡
发布2022-06-21 15:35:46
1.2K0
发布2022-06-21 15:35:46
举报
文章被收录于专栏:清菡软件测试清菡软件测试

目录

  • 一、函数
    • 1.jmeter工具属性
    • 2.属性、参数、变量的区别
  • 二、如何实现动态属性
    • 1.设置属性
    • 2.查看属性显示
    • 3.跨线程组传递参数
    • 4.为什么不直接定义全局变量
    • 5.用setProperty设置属性,运行脚本后,从属性显示中可以看到,属性的值变化不及时,测试的时候会不会出错
  • 三、扩展
    • 1.动态属性:一直存在,还是朝生夕死
    • 2.顺序
    • 3.接受属性的线程请求tps比设置属性的线程请求tps大,会出现问题吗

一、函数

${__RandomDate(,,,,)}随机日期。不包括结束日期。

${__P(,)}获取属性。

${__property(,,)}获取属性。

P只是property这个函数的简写。

${__setProperty(,,)}设置属性。设置jmeter的动态属性。

${__V(,)} 拼接函数

.properties结尾的文件,都是jmeter的属性配置文件。

属性是什么?是jmeter工具自身带有的标签。

1.jmeter工具属性:

  • jmeter属性:可能被改变。包括:
    • 1.静态属性: 写在properties文件中的属性信息,都是静态属性。
    • 2.动态属性: 运行过程中,动态定义的属性。
  • 系统属性:osjdk,这些是系统属性信息,不可改变的。

2.属性、参数、变量的区别:

属性是jmeter工具具有的。所有jmeter中的线程组要使用属性,都可以使用。 参数、变量,有局限访问。

用户定义变量:可以跨线程组,但是只限于线程组

用户参数:只限于当前自己的线程组。

二、如何实现动态属性?

1.设置属性

{__setProperty(proper_par,{par},)}

随便取个属性名称。

随机生成的值给了用户参数par,用这个${par}的值给到这个proper_par属性。

这个proper_par属性的值就是par的随机结果。

2.查看属性显示

设置属性:

运行结果是3367

属性显示中该属性的值也变成了3367

3.跨线程组传递参数

跨线程组使用的时候,可以使用获取属性的功能。用{__P(,)}或{__property(,,)}。

${__P(proper_par,)}

获取属性

实现了跨线程组传递参数:

比如一个接口里面要用这个${__P(proper_par,)}参数,线程组3的用户参数生成的动态值,实现了跨线程组传递参数。

线程4的运行结果是6923

线程3的运行结果是6923

属性显示中该属性的值也变成了6923

4.为什么不直接定义全局变量?

全局变量: 整个运行过程中,值都不可能变,值只会固定一个。

5.用setProperty设置属性,运行脚本后,从属性显示中可以看到,属性的值变化不及时,测试的时候会不会出错?

功能测试: 作为功能测试、自动化测试,非性能测试时,把多个接口写在一个线程组下面。

就不会使用属性来实现跨线程组传参,所以他们不会遇到这个问题。

性能测试

多个人要请求一段时间,会请求很多次。多个人在做这件事,万一有少量的人没有得到这个值,例如一万次请求有10次出错,对总体的性能结果的影响是可以忽略不计的。

三、扩展

1.动态属性:一直存在?还是朝生夕死?

动态属性是在运行过程中产生的,即使保存了脚本,关闭jmeter后,就自动释放了。

重启jmeter,打开该脚本,属性显示中就没有刚才设置的属性了。

2.顺序?

jmeter中,多个启用的线程组,在执行时,默认是并行执行。

如果执行线程3的时候,设置属性还未设置完成,线程4就要用这个属性,就取不到。

性能测试的时候,多用户并发,第一次就会取不到。最开始的时候出现那么几次取不到值。对于整体的性能测试结果是没有影响的,因为请求数量是比较多的。

如果勾选了这个,就会从上往下先后执行线程组

性能测试中不会勾选测试计划中的“独立运行每个线程组”。

混合场景设计:因为在实际的企业中,混合场景是不同数量的人对不同的接口同时得进行请求。

3.接受属性的线程请求tps比设置属性的线程请求tps大,会出现问题吗?

比如有一个部门是生产写字用的笔,你专门用这个笔写字。你写字的速度比它生产笔芯的速度快。

只要你的笔里有墨水,就可以一直写。写十个字的时候,它生产出一支笔。它生产出的一支笔可以写好多字呢。

只要接受属性的线程可以拿到值,设置属性的线程的tps是小是大,是没影响的。

只要有值就行,不管值的对错?

这个值的对与错,是功能测试人员关注的。对于性能测试人员,如果加了断言,就会去关注。

如果没加断言,关注的是服务器处理能力、处理的指标值

出错的情况只是判断的依据。比如请求过去,没处理完毕,处理的里面有某个字段的值计算错误,并不关心这个。

处理的结果有没有问题,这个是功能测试人员所关注的。

在整个性能测试的过程中,错误率要在0.01%~0.1%的这样一个标准下。

脚本链接:

链接:https://pan.baidu.com/s/1fWzMYelXMEYD2RRL8CWNYA?pwd=1234 提取码:1234

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 清菡软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 一、函数
    • 1.jmeter工具属性:
      • 2.属性、参数、变量的区别:
      • 二、如何实现动态属性?
        • 1.设置属性
          • 2.查看属性显示
            • 设置属性:
          • 3.跨线程组传递参数
            • 4.为什么不直接定义全局变量?
              • 5.用setProperty设置属性,运行脚本后,从属性显示中可以看到,属性的值变化不及时,测试的时候会不会出错?
              • 三、扩展
                • 1.动态属性:一直存在?还是朝生夕死?
                  • 2.顺序?
                    • 3.接受属性的线程请求tps比设置属性的线程请求tps大,会出现问题吗?
                      • 只要有值就行,不管值的对错?
                      • 脚本链接:
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档