自动化测试】jmeter怎么解决不同slave机器的参数化问题

2021-03-05 15:48发布

2条回答

在使用Jmeter进行性能测试时,需要并发多个用户,模拟真实用户行为,此时就需要模拟多个不同用户同时请求,每个用户请求中的imei或uuid动态变化。Jmeter提供了参数化的功能,配置元件、函数助手以及前置处理器中的用户参数,均能够帮助我们解决这个问题。

配置元件-CSV Data Set Config

        配置元件是最常使用的一种方式,CSV Data Set Config 可以从指定的文本文件或csv文件一行一行的读取文本内容,通过分隔符拆解每行内容,并把内容与变量名一一对应起来,每个请求取文件中不同行的值,实现并发多个用户的需求。我们可以在配置元件中找到它。CSV数据文件设置页面如下:

cb81fc56f9166800e41f17117ddb075a.png

其中,参数含义如下:

Filename:引用文件地址,可以填相对路径或绝对路径。相对路径的根节点是Jmeter的启动目录,如果测试执行是分发到多台远程负载机上的,使用相对路径能够避免因Jmeter安装路径不同导致的参数化文件无法取到的问题。另外,也可以利用Jmeter的变量来参数化参数文件的路径,使用${paraUrl},同时在元件【User Defined Variables】中设置文件路径。

File encoding:读取参数文件时的编码格式,建议填写UTF-8,避免打开乱码情况。

Variable Names(comma-delimited):即HTTP请求中希望随请求变化的变量名称。如果有多个变量,需使用符号隔开,该符号应与引用文件中变量之间的符号一致。若该处填写的变量名称多余引用文件中的参数列数,则多余的参数将无法取到值。

Ignore first line(only used if Variable Names is not empty):忽略首行,当引用文件中首行设置了变量名时,该项设为 true,此时每次请求读取文件时会自动忽略首行,直接读取第二行的数据。

Delimiter(use '\t' for tab):即用来分隔引用文件中的分隔符,如果引用文件中使用tab分隔,此处填写'\t'。

ad8f4d5e6758b916837e2d2f26a14e6c.png

Allow quoted data?:是否允许引用的数据,如果选择true,则表示可以允许拆分完成的参数之间有分隔符出现。比如,引用文件中的值为:"31,celling",998d9e385a0c25b0e750,如果此处选择true,则拆分后的参数为31,celling和998d9e385a0c25b0e750。

Recycle on EOF?:参数文件是否循环遍历。

Stop thread on EOF?:当读取到参数文件末尾时,是否停止读取线程,默认为 false。当 Recycle on EOF?  设置为 true 时,此项不起任何作用。当且仅当 Recycle on EOF? 为 false 时,此项配置才生效。

Sharing mode:参数文件共享模式。主要有以下三种模式:

  • All threads:参数文件对所有线程共享,包括同一测试计划中的不同线程组;

  • Current thread group:只对当前线程组中的线程共享;

  • Current thread:仅对当前线程获取。

函数助手

        CSV Data Set Config元件可以动态替换指定数据的参数值,如果我们想让某个值的内容是随机生成的,可以使用函数来生成。位置在快捷工具栏的倒数第二位:

5a920f27d6b54a5a80d5436c0fda0248.png

介绍一个生成随机字符串的函数,__RandomString。Random string lengh:生成的字符串长度。

Chars to use for random string generation:指定用哪个字符作为种子进行随机生成,可支持中文、数字、字母。

Name of variable in which to store the result (optional):可选项,填了之后,运行脚本后可以在Debug Sampler中看到这个变量的值。

填写好参数之后,点击Generate,会生成一串字符${__RandomString(30,abt2345函数kji助手,)},可直接作为请求中的参数化数据,如下图所示。

07af15c5ad0e3e5a2e3c8aaa6b495be9.png

运行结果可以看到,每次请求时携带imei参数均为随机生成的字符串:

7689f19e104f6aa07d841c23c611e7fd.png

88d5dd086c4f6cad531e27544bf63056.png

当然,函数助手中有很多强大的函数,在此不一一列举。

访问地址参数化

在实际测试过程中,有时测试地址会发生变化,将访问地址参数化之后,只需改动参数对应的值就可以改变访问地址。具体过程如下:

       -在HTTP请求中设置参数URL和PORT

007335a5827849f4f7e937fa742b4482.png

        -在User Defined Variables中定义URL和PORT具体值

3226c97906a85c02cd961c64dbdaac34.png

用户参数

在该元件中,可以看到有“Add Variable”、“Add User”、“Delete Variable”、“Delete User”,在进行参数化取值时,根据用户进行区分。

bc943ab77e8a4ecb90adc0a997781333.png

比如,有两个线程,分别要取变量imei的值,则可以分别从此处取值,效果与其他方法相同。

 

嘿呦嘿呦拔萝卜
3楼 · 2021-04-19 17:11

在使用Jmeter进行性能测试时,需要并发多个用户,模拟真实用户行为,此时就需要模拟多个不同用户同时请求,每个用户请求中的imei或uuid动态变化。Jmeter提供了参数化的功能,配置元件、函数助手以及前置处理器中的用户参数,均能够帮助我们解决这个问题。

配置元件-CSV Data Set Config

        配置元件是最常使用的一种方式,CSV Data Set Config 可以从指定的文本文件或csv文件一行一行的读取文本内容,通过分隔符拆解每行内容,并把内容与变量名一一对应起来,每个请求取文件中不同行的值,实现并发多个用户的需求。我们可以在配置元件中找到它


相关问题推荐

  • 回答 6

    1.分析测试需求测试需求其实就是测试目标,也可以看作是自动化测试的功能点。自动化测试是做不到100%盖率的,只有尽可能提高测试覆盖率。条测试需求需要设计多个自动化测试用例,通过测试需求分析判定软件自动化测试要做到什么程度。一般情况下,自动化测试优...

  • 回答 7

    第一,需求稳定,不会频繁变更第二,研发和维护周期长,需要频繁执行回归测试第三,需要在多种平台上重复运行相同测试的场景。第四,某些测试项目通过手工测试无法实现,或者手工成本太高。第五,被测软件的开发较为规范,能够保证系统的可测试性。另外,某些...

  • 回答 14

    自动化测试对于软件测试工程师来说十分重要。是软件测试人员必备技能。自动化测试框架是为自动化测试脚本提供执行环境的脚手架。框架为用户提供了各种优势,帮助他们有效地开发、执行和报告自动化测试脚本。它更像是一个专门为自动化组织的测试而创建的系统。...

  • 回答 7

    自动化测试的成本高,效果差,是一个相对的,而针对某些具体项目,是必须要接入自动化测试的。首先说一些什么时候会需要自动化测试首先咱们讨论这个问题之前要带着一个疑问:决定要不要做自动化测试的因素有哪些?应该说时间才是一个衡量比重比较大的因素。假...

  • 回答 11
    已采纳

    Serenity:国内使用的比例貌似不是很高,所以首先被我pass掉了。       Gauge:这是一个较新的测试框架,还在开发中,不是很成熟,所以也不太利于我的学习使用。       Galen Framework:这个框架就像我图中写的一样,主要关注于用户体验设计,也就是...

  • 回答 7

    1

  • 回答 3
    已采纳

    1. Web自动化测试工具:selenium、QTP。2. 性能自动化测试工具:loadrunner、jmeter。3. 接口自动化测试工具:SoapUI、postman。4. 手机自动化测试工具:robotium、appium。

  • 回答 5

    selenium

  • 回答 3

    做梯度压力测试,当你发现响应时间下降超过10%的那个压力点,基本上就是性能瓶颈点了。当然还可以直接压崩。然后给一个极值。但是通常这个值 没用。

  • 回答 2

    主要从架构上登录过程的实现,能否支持同一账号多处登录,是架构考量的,一般的系统除非对session做持久化和帐号绑定。否则肯定同一账号多个会话是支持的。更多详细还要看你的架构实现。不过一点可以确认从数据库和中间件缓存来看,命中一定会比不同数据要高...

  • 回答 4

    、修改jmeter.properties文件,打开一些输出内容开关(下图根据需要选择相关项,具体就不用多说了吧)2、制定一份自己的输出模板。(不用默认的jmeter_home/extras/jmeter-results-detail-report.xsl模板,也可以网上自己找份。)3、最后执行,生成对应的HTML...

  • 回答 3

    一、Jmeter关联的方式:Jmeter中关联可以在需要获取数据的请求上 右键–>后置处理器 选择需要的关联方式,如下图有很多种方法可以提取动态变化数据:  在LR中有自动关联跟手动关联,但在我看来手动关联更准确,在jmeter中,就只有手动关联为什么要进行关联:...

  • 回答 4

    1) 配置元件(config elements):http请求默认值、http信息头管理器、CSV Data Set Config  2) 前置处理程序(Pre-processors):用户参数  3) 定时器(timers):同步定时器和常量吞吐定时器  4) 取样器(Sampler):http请求、JDBC Request、FTP请求....  5) ...

  • 回答 5

    首先第一步要导入mysql驱动包一、添加JDBC Connection Configuration设置链接Database URL: jdbc:mysql:// 数据库地址 /库名JDBC Driver class:com.mysql.jdbc.DriverUsername:账号Password:密码二、添加JDBC Reques三、在http请求中加入变量username_id_N...

  • 回答 3

    再今天重新学习,从数据库中取数据,并作为变量传到下一个请求中。首先第一步要导入mysql驱动包  一、添加JDBC Connection Configuration设置链接Database URL: jdbc:mysql:// 数据库地址 /库名JDBC Driver class:com.mysql.jdbc.DriverUsername:账号Pass...

  • 回答 5

    一、CSV 参数化1、我们做性能测试需要并发多个用户,为了真实模拟用户行为,我们需要模拟多个不同的用户登录,这是我们就需要进行参数化。这里我们选择比较常用的参数化方法-CSV Data Set Config首先打开CSV Data Set Config2.新建cvs文件放在和脚本同一个目...

没有解决我的问题,去提问