| |
|
开发:
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:循环控制器
案例2:事务控制器 作用: 事务控制器会生产一个额外的采样器,用来统计该控制器子结点的所有时间。在线程组下创建事务控制器 参数: · Generate parent sample:(选中这个参数结果展示如下图红框,否则显示为下图蓝框) · Include duration of timer and pre-post processors in generated sample:选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间
未勾选Generate parent sample,聚合报告如图所示: 勾选了聚合报告如下: 12.1.6 断言断言(Assertions)用于来判断请求响应的结果是否如用户所期望,是否正确。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。两个重要断言:响应断言和JSONAssertion 响应断言:
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 ConfigCSV配置文件,适用于参数取值范围较大的时候使用,该方法具有更大的灵活性 通过这个组件可以动态获取并设置数据,实现批量添加操作 名词解释: 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:共享模式。默认在所有线程组中使用,可选择每个线程组单独打开 操作如下:
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 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |