在使用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. 【HNOI2017】单旋

    题面 题解 trajan的spaly是O(1)的(逃 通过看题解手玩发现只要将最值的点放到树根,其他的父子关系不需要变. 于是想到动态连边和断边的数据结构:\(\mathrm{LCT}\),于是用\( ...

  2. SQL Server 创建带返回值的存储过程

    --drop procedure zcstest; create procedure zcstest ( @tableName varchar(max), @dataCount int output ...

  3. R实战:grid包

    grid包是一个底层的绘图系统,能够灵活地控制图形输出的外观和布局,但是grid包不提供创建完整图形的高级绘图系统,例如,ggplot2和lattice,而是提供绘制开发这些高级绘图的基础接口,例如: ...

  4. python-我的第一门编程语言

    一.认识python是一个偶然,由于大学不务正业,混迹于各种电脑维修群(本人专业商务经济专业),了解过C.JAVA.HTML5以及世界上最好的编程语言PHP and so on!了解也仅仅是了解. 二 ...

  5. UART、SPI、I2C协议异同点

    I2C.SPI.UART都是常见的低速板级通信协议,目前主流的SoC都内置了这些通讯协议的控制器,同样,各种传感器.Touch控制器.指纹模块.蓝牙模块.WIFI模块也都兼容这三种通信方式的一种或几种 ...

  6. 【转载】钉钉开发c#帮助类 获取用户信息 DingHelper.cs

    using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using Sys ...

  7. Jmeter+Badboy安装使用文档

                  Jmeter+Badboy安装使用文档       目录   1.jmeter安装    1 2.Jmeter基础使用    3 3. 使用Jmeter进行分布式测试    ...

  8. 我是如何将页面加载时间从6S降到2S的?

    写在前面 生活在信息爆炸的今天,我们每天不得不面对和过滤海量的信息--无疑是焦躁和浮动的,这就意味着用户对你站点投入的时间可能是及其吝啬的(当然有一些刚需站点除外). 如何给用户提供迅速的响应就显得十 ...

  9. kubeadm 线上集群部署(一) 外部 ETCD 集群搭建

      IP Hostname   192.168.1.23 k8s-etcd-01 etcd集群节点,默认关于ETCD所有操作均在此节点上操作 192.168.1.24 k8s-etcd-02 etcd ...

  10. hadoop之定制自己的sort过程

    Key排序 1. 继承WritableComparator 在hadoop之Shuffle和Sort中,可以看到mapper的输出文件spill文件需要在内存中排序,并且在输入reducer之前,不同 ...