IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> jmeter基本操作 -> 正文阅读

[开发测试]jmeter基本操作

1.测试计划

测试计划是使用jmeter进行测试的起点,它是其他jmeter测试原件的容器。

2.线程组

(1).thread group(线程组)

这个就是我们 通常添加的线程,通俗的讲一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。

2)setup thread group

一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行;类似LoadRunner的init,测试开始时进行初始化的工作。

(3)teardown thread group

一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组;类似LoadRunnner的end,测试结束时进行回收工作。

线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程 组包含。可以在“测试计划->添加->线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp- Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有 的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开 始不会对服务器有太大的负载。线程组是为模拟并发负载而设计。

测试计划—线程组—线程组属性中的线程数
并发执行:多个线程同时执行,特点:执行结束的顺序与开始的顺序不一致
顺序执行:按照线程的启动顺序挨个执行
默认情况下,线程组中的线程是并发执行
每一个线程都要执行组内的http请求
设置线程组顺序执行:勾选测试计划中的(独立运行每个线程组)
线程组用来模拟用户的并发访问
进程:具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程序,数据集合和进程控制块三部分组成。程序用于描述进程要完成的功能,是控制进程执行的指令集;数据集合是程序在执行时所需要的数据和工作区;程序控制块包含进程的描述信息和控制信息是进程存在的唯一标志
?
线程:在早期的操作系统中并没有线程的概念,进程是拥有资源和独立运行的最小单位,也是程序执行的最小单位。任务调度采用的是时间片轮转的抢占式调度方式,而进程是任务调度的最小单位,每个进程有各自独立的一块内存,使得各个进程之间内存地址相互隔离。后来,随着计算机的发展,对CPU的要求越来越高,进程之间的切换开销较大,已经无法满足越来越复杂的程序的要求了。于是就发明了线程,线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。
?
一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)。一个标准的线程由线程ID,当前指令指针PC,寄存器和堆栈组成。而进程由内存空间(代码,数据,进程空间,打开的文件)和一个或多个线程组成。
?
进程与线程的区别
1. 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线
3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其他进程不可见;
4. 调度和切换:线程上下文切换比进程上下文切换要快得多

12.1.3 取样器

模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。如:HTTP 、ftp请求等等

12.1.4 监听器

负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显示、统计一些数据(吞吐 量、KB/S……)等。

12.1.5 逻辑控制器

允许自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

案例1:循环控制器

  1. 新建循环控制器,循环次数设置为2

  2. 在循环控制器下面建http请求---福利

  3. 点击运行福利接口运行的次数计算公式为:循环控制器次数 * 线程组 线程数 * 线程组 循环次数

案例2:事务控制器

作用: 事务控制器会生产一个额外的采样器,用来统计该控制器子结点的所有时间。在线程组下创建事务控制器 参数: · Generate parent sample:(选中这个参数结果展示如下图红框,否则显示为下图蓝框) · Include duration of timer and pre-post processors in generated sample:选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间

  1. 创建事务控制器

  2. 创建两个http请求

  3. 运行

未勾选Generate parent sample,聚合报告如图所示:

勾选了聚合报告如下:

12.1.6 断言

    断言(Assertions)用于来判断请求响应的结果是否如用户所期望,是否正确。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。两个重要断言:响应断言和JSONAssertion

响应断言

  1. http请求右键,断言-->添加一个响应断言

  2. 测试模式中添加内容,如果响应中有输入的内容,则请求成功,如果不包含,则失败,会显示自定义的失败消息

Json断言

  1. http请求右键,断言-->添加一个json断言

  2. 如下图可以添加需要判断是否存在的json键值对,然后在结果树中查看,不包含对应的键值对则会请求失败

12.1.7 配置元件

配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。

12.1.8 前置处理器

在生成请求之前完成工作,前置处理器常常用来修改请求的设置

12.1.9 后置处理器

在生成请求之后完成工作,后置处理器则常常用来处理响应的数据,我们主要在动态关联中用到后置处理器的正则表达式提取器。

12.1.10 定时器

负责定义请求之间的延迟间隔,模拟对服务器的连续请求。

12.2 Jmeter组件参数化

12.2.1 参数化是什么

动态的获取并设置数据

12.2.2 为什么使用参数化

执行批量操作,批量添加批量删除,人工效率太低
运用程序代替人工获取并设置数据,安全高效
比如:对被测系统的用户名和密码进行参数化,来模拟多个用户同时登录系统

12.2.3 参数化实现之用户自定义变量

通过这个功能,能实现多接口共享数据,修改一条即可修改全部,用户自定义变量,一般用于test plan中不需要随请求迭代的参数设置

线程组右键-->添加-->配置元件-->用户自定义变量

在http请求的时候就可以使用了

12.2.4 参数化实现之CSV Data Set Config

CSV配置文件,适用于参数取值范围较大的时候使用,该方法具有更大的灵活性

通过这个组件可以动态获取并设置数据,实现批量添加操作 名词解释:

Filename:所需数据文件的路径。如和脚本同一路径,可直接填写文件名
File encoding:编码和文件保持一致即可,默认为ANSI。如有中文,建议为UTF-8
Variable Names:引用变量时的变量名,对应数据文件中的每一列,以逗号分隔。Delimiter:在.txt、.dat文件中,可以用逗号(,)或者Tab键(\t)来区分列与列
Allow quote data:选项选为“true”的时候对全角字符的处理出现乱码
Recycle on EOF:到数据文件结尾时是否循环读取。设置为True时,线程数过多,数据文件读取到最后一行时,会再次从第一行开始读取。设置为False,到达文件结尾时如继续读取,则值会默认为<EOF>,可通过设置jmeter属性csvdataset.eofstring来改变该值。
Stop thread on EOF:Recycle on EOF设置为False,Stop thread on EOF设置为True,则读取数据文件最后一行后,停止测试,不管还有多少线程组未执行。
Sharing mode:共享模式。默认在所有线程组中使用,可选择每个线程组单独打开

操作如下:

  1. 新建一个文件,里面添加需要批量处理的参数值,多个参数值使用“,”隔开,多组参数使用回车分割

  1. 在CSV配置文件界面关联文件,添加编码格式,字段名称

  1. 在http请求中使用字段

4.如果文件中有多组参数,可以将线程数量或者循环次数修改到和参数组数相同

5.运行,在结果树中查看结果

12.2.5 使用Jmeter函数助手(文件中不要出现中文):

1、点击 选项-->函数助手 调出函数助手对话框
2、选择 _CSVRead 函数(下图第一个框)
3、函数参数:
 1)第一个参数:填写文件路径。
 2)第二个参数:文件列号是从0开始的,第一列0、第二列1、第三列2、依次类推,然后点击【生成】按钮,则会自动生成我们需要的参数化函数。
  3) 复制生成的参数化函数, copy过程需要使用的地方即可。
  4) _Random函数是从某数据段随机读取数据替换参数,当需要添加多条数据记录且某些字段需要唯一性时使用。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-11-24 08:14:59  更:2021-11-24 08:17:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 5:40:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码