在使用JMeter进行性能测试时,一般情况下要保证样本容量尽可能大,这样才能得到一个比较合理的结果。也就是说,我们不能只对同一个URL进行多次访问,而是要对统一模块下尽可能多的URL进行访问,以取得相对准确的一个结果。举个例子,如果对博客网站进行性能测试,不能只对同一篇文章的URL做性能测试,而是要覆盖尽可能多的文章的URL。本篇文章主要说明一下如何使用变量对这种多个URL的访问做配置。

1.使用JMeter内置变量

通过在JMeter中进行变量配置,实现多URL访问

1)建立“测试计划”及“线程组”,设置线程数为10

2)在“线程组”下,建立一个“ForEach控制器”的逻辑控制器

3)设置ForEach控制器

其中,

输入变量前缀:我们对做ForEach循环时所输入的变量的前缀

Start index for loop (exclusive):从哪个序号的变量开始循环(不包含该序号)

End index for loop (inclusive):从哪个序号的变量结束循环(包含该序号)

输出变量名称:输入变量以什么名称在Http请求中进行调用

Add “_” before number:在前缀和序号之间是否用下划线“_”进行连接

4)设置变量

在ForEach控制器下,添加一个“用户定义的变量”的配置元件

添加两个我们要访问的url。这里我们以chinadjango.com的Django入门文章为例,我们要访问以下两篇文章的URL

http://chinadjango.com/docs/intro/tutorial01/

http://chinadjango.com/docs/intro/tutorial02/

由于域名可以进行统一配置,在JMeter中,我们可以只配置URL的后半部分,这里进行配置如下

5)设置请求

在“ForEach控制器”下,添加一个“HTTP请求”的Sampler

设置服务器域名为chinadjango.com,路径为${returnUrl},其中${returnUrl}就是我们在之前的“用户定义变量”中的输出,这里作为发起HTTP请求时路径的输入进行使用

6)添加监听器并进行测试

在线程组下,添加一个“查看结果树”的监听器,运行测试,在“查看结果树”中检查测试数据。我们可以看到所有请求的性能数据。

查看HTTP请求的“请求”,可以看到每个访问对应的URL

2.使用数据文件

1)建立“测试计划”及“线程组”

2)编写数据文件url.txt,在其中编写我们要访问的url地址如下:

docs/intro/tutorial01/

docs/intro/tutorial02/

docs/intro/tutorial03/

docs/intro/tutorial04/

docs/intro/tutorial05/

3)在工具栏中,打开“选项”-“函数助手对话框”

4)选择“_StringFromFile”函数,设置文件路径,点击“生成”按钮,生成变量函数,赋值函数字符串,在下一步进行使用

5)在“线程组”下,建立一个“HTTP请求”的Sampler,设置服务器域名及路径,服务器域名使用chinadjango.com,路径处,填写我们刚刚获得的从文件中读取变量数据的函数    ${_StringFromFile(D:\urls.txt,,,)}

6)添加监听器并进行测试

在线程组下,添加一个“查看结果树”的监听器,运行测试,在“查看结果树”中检查测试数据。

这里需要注意的是,

在使用ForEach控制器时,线程组数量为10,在10个线程中,均会对我们设置的URL变量做访问,也就是对我们的变量做了总共20次访问;

而在使用外部文件时,线程组数为10,每个线程组只从文件中取了一条数据做访问,虽然我们的数据文件中有5条数据,但是总共做了10次访问,每个URL访问了2次。

使用ForEach控制器和使用外部文件是比较常用的两种变量配置方式。在测试过程中, Http有时还需要附带一些其它参数。下一篇文章,将对如何在HTTP请求中配置参数做介绍。

JMeter性能测试基础 (2) - 变量的使用的更多相关文章

  1. JMeter性能测试基础 (1) - 安装及简单使用

    Apache JMeter是一款开源性能测试工具,全部功能使用Java编写,可用于进行性能测试.JMeter最初被设计用于Web应用测试,之后被扩展至多个测试领域. Apache jmeter 可以用 ...

  2. JMeter性能测试基础 (3) - 使用参数文件做搜索引擎性能对比

    本篇文章主要对如何在JMeter中进行URL的参数进行配置进行介绍,通过CSV文件配置参数数据,对baidu.sogou.haosou进行搜索性能对比测试. 1.建立测试计划.线程组,并在线程组下添加 ...

  3. JMeter性能测试基础 (4)-使用JMeter录制测试脚本

    在进行压力测试时,由于很多web页面包含了Ajax异步请求等内容,为模拟用户真实输入,除了对html的访问外,还需要将其它的访问考虑入内,这时最好的办法就是对实际访问过程中的所有请求进行录制. 例如, ...

  4. Jmeter性能测试基础

    压力测试   压力测试分两种场景:一种是单场景,压一个接口的:第二种是混合场景,多个有关联的接口.压测时间,一般场景都运行10-15分钟.如果是疲劳测试,可以压一天或一周,根据实际情况来定. 压测任务 ...

  5. JMeter性能测试的基础知识和个人理解

    JMeter性能测试的基础知识和个人理解 1. JMeter的简介   JMeter是Apache组织开发的开源项目,设计之初是用于做性能测试的,同时它在实现对各种接口的调用方面做的比较成熟,因此,常 ...

  6. 『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化

    目录 1.用户自定义变量介绍 2.使用"用户自定义变量"实现参数化 (1)测试计划内包含的元件 (2)数据文件内容 (3)测试计划界面内容 (4)线程组元件内容 (5)CSV数据文 ...

  7. Jmeter学习一:Jmeter性能测试环境搭建(Windows下)

    最近刚开始接触Jmeter性能测试,现总结环境搭建如下: 一.windows安装JDK步骤与环境变量配置: 1.先将下载的JDK安装到其默认目录:C:\Program Files\Java\jdk1. ...

  8. Jmeter性能测试

    Jmeter性能测试 入门 Jmeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用Jmeter能大大提高工作效率. 熟练使用Jmeter后, 能用Jmeter搞定的 ...

  9. JMeter性能测试,完整入门篇

    1. Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免费,也越来越流行成为了主流的性能测试工具 ...

随机推荐

  1. 几种交叉验证(cross validation)方式的比较

    模型评价的目的:通过模型评价,我们知道当前训练模型的好坏,泛化能力如何?从而知道是否可以应用在解决问题上,如果不行,那又是哪里出了问题? train_test_split 在分类问题中,我们通常通过对 ...

  2. 8 stark组件 展示数据

    1.编辑按钮构建完成 1.必备知识预习 2.mark_safe模块:将html标签安全传输 3.构造表单数据 4.反向解析 https://www.cnblogs.com/yuanchenqi/art ...

  3. 【AHOI2012】信号塔

    题面 题解 xgzc怒切计算几何 最小圆覆盖板子题 整体算法如下: 枚举第一个点,考虑当前圆是否包含了这个点,如果没有,则把圆变成以这个点为圆心,半径为\(0\)的圆.再枚举第二个点,考虑圆是否包含了 ...

  4. 非局部均值滤波算法的python实现

    如题,比opencv自带的实现效果好 #coding:utf8 import cv2 import numpy as np def psnr(A, B): return 10*np.log(255*2 ...

  5. springmvc 使用jq传递json数据时出现415错误

    出现415错误是因为解析json时出现了错误,通过排查几点就能解决. 样例: <script> function requestByJson() { var datatest = {&qu ...

  6. docker创建image方法以及常用指令介绍

    docker -help    # 显示帮助 docker COMMAND -help    # 帮助信息更详细 docker start “容器名称”    # 启动一个或多个容器 docker s ...

  7. 负载均衡@StackExchange.Redis实现Session外置--纯干货喂饱你

    Redis和StackExchange.Redis redis有多个数据库1.redis 中的每一个数据库,都由一个 redisDb 的结构存储.其中,redisDb.id 存储着 redis 数据库 ...

  8. Html.RenderPartial与Html.RenderAction的区别

    Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的. Html.RenderPartial是直接将用户控件嵌入到界面上: <%Htm ...

  9. 「专题训练」Collecting Bugs(POJ-2096)

    题意与分析 题意大致是这样的:给定一个\(n\times s\)的矩阵,每次可以随机的在这个矩阵内给一个格子染色(染过色的仍然可能被选中),问每一行和每一列都有格子被染色的次数的期望. 这题如果从概率 ...

  10. HT7A6312—— 离线开关电源小功率初级转换开关IC 记录总结

    1. 芯片特性 a. 固定60KHz开关频率: b. 宽Vcc输出电压范围:9V - 38V: c. 宽交流输入电压范围:85Vac - 265Vac: d. 电流模式PWM控制: e. 带迟滞的辅助 ...