| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> jmeter(2)--功能使用 -> 正文阅读 |
|
[开发测试]jmeter(2)--功能使用 |
-bin文件夹 存放启动文件 ? 保存项目脚本文件 ? -docs文件夹 java二次开发,接口文档 ? -extras文件夹 持续集成脚本 -lib文件夹 源码包 第三方插件(负载测试)放在里面的ext文件夹里 junit文件夹-单元测试脚本 ? ?不要直接从jmeter里引入库,否则可能会出现问题 可以把库放到lib或者第三方库放在lib/ext文件夹里 Jmeter功能jmeter不是通过工具栏进行功能操作,而是通过右键测试计划进行操作 ? ? 工具栏右侧 -脚本的运行时间 ?日志面板里是工具本身的日志 线程数,并发用户数 脚本结构树--项目文件夹(根目录) ? ?编辑区-不同元件的编辑区不同 ? 元件(主要组成:线程组,取样器,监听器)?元件放在线程组目录下,就表示线程组目录下的子目录都能使用,如果放在线程组下某个接口目下,就表示只有那个接口能使用 线程组-性能场景设计 ? 取样器-根据不同的协议编写脚本的元件 ? 监听器-可以查看接口响应结果 jmeter使用过程-http协议?先编写功能脚本,再设计性能场景 配置元件(优先级别最高)-添加请求头需要的元件 1,在线程组添加http信息头管理器 ?信息头管理器放在线程组目录下表示该线程组所有请求都能使用,放在某个接口目录下,表示只有该目录能使用 2,在消息头管理器的编辑区编写请求头的信息 ? 与postman和自动化requests库不一样,如果接口需要的请求参数是json格式的话,在jmeter的请求头中一定要手动配置content-type 如果不添加则是默认的请求格式x-www-form-urlencoded 3,编写脚本 ? 4,请求参数 Get 请求 当参数有中文,或者有特殊符号的时候,要点编码 post请求 json格式的请求体要写入消息体数据中 ? 4,查看结果树 ? ? ?Cookie管理器 ?放在线程组的最上方,能储存和发送cookie消息 数据参数化-线程组添加用户自定义变量 ? ? 设置之后,每次接口需要的数据都能通过自定义变量获取 用户定义变量,在启动运行时获取一次值,在运行过程中,不再动态获取值,不管并发多少人,不管执行几次 引用参数 -设置用户参数? ? 用户参数,在启动时会获取一次值,在运行过程中,每次使用该参数都会动态获取一次值 勾选每次迭代更新一次 每次迭代更新一次,表示每次执行完一次线程组里完成一次循环之后才动态获取一次值,就是每次执行完一次循环之前,这个变量只会获取一次值,直到开始第二次循环执行,比如2个用户(线程组)要循环5次,那么每循环一次就会获取一次参数 CSV数据文件设置首先要准备好数据,可以存放在一个txt文件中,或者csv文件,从性能测试来说,最好用txt格式 ?然后在线程组下添加csv数据文件的配置元件 设置变量名,中间用逗号隔开 分隔符要跟文件里的分隔符相同 ?使用参数变量 ? ?相对路径-保证jmx脚本文件跟csv数据文件实在同一个目录 ?那么就可以在配置中写相对路径 ? 遇到结束符停止循环 ? ? 表示在文件中最后一行之后,就是结束,但是如果有3个线程(并发用户),停止循环后会导致第三个用户获取不了数据,开启循环之后就表示第三个用户会获得第一组数据,如此类推 这里停止线程选项T或者F都可以进行所有线程获取到数据 遇到结束符停止线程 ? 如果有10个线程(并发用户),在遇到文件结束符之后停止线程,那么最后得到响应的就只有2个线程 这里停止线程选项要选择T才能实现效果,如果停止线程也选F的话,就表示之后的进程都获取不到数据 获取响应结果的数据json获取器 在所需获取数据的接口处右键选取后置处理器,选择json获取器 ?定义变量,输入jsonpath表达式,之后就能定义好变量的值 ? 然后需要输入变量值的地方填入变量名称${变量名} ? ?一个json提取器可以获取多个结果,需要用;号隔开,而且default values也要填入数据 ? ? Match No. 是指在获取json指定名称的值中,可能会有多个同名的值获取到,如果想要获取里面其中的一个,就要配置match no. 比如Match No.=1就是找到一个结果 ?如果是多个的话,就会显示一个有规律的变量,比如有5个是这个名字的属性,那么就要把Match No.的属性设置为5 ? 如果设置成-1,代表获取全部 如果需要取某个值,就可以用拼接函数,把num的值换成想要属性的值 正则表达式提取器 正则表达式选取左右边界,中间加上(.*?)表示获取边界之间的值 模板表示选取第一个()分组,如果表达式有多个分组就能写$1$ $2$ 函数-random随机数/随机字符串 ? ?利用函数生成变量,然后可以填入用户参数中,每次迭代后进行一次随机生成 ? -digest 加密函数 ? -property 获取配置表里的属性 -threadGroupName/threadNum 线程组名称/线程数 ?线程组数,从开始运行时候才会变化 ?-time 时间戳 -V 拼接函数? Name = 柠檬班 ?num = 1 两个变量合并 ${name}${num} = 柠檬班1 使用V函数拼接 ${__V(${name}_${num})} 就等于一个新的变量,它的变量名称就变成name_num,里面的name和num是在运用函数的时候去定义 而name和num都可以动态去获取,还需要对这个新的变量赋值 比如vphone_1 = 1, vphone_2 = 2,之后使用函数就能动态获取这些变量 ?默认值是线程数(根据线程组设置动态变化) ?关联函数要把逗号去掉 当线程数为3的时候,就会按顺序取关键字为函数参数的值(vphone)相关的值,这个变量是有一定的规律,比如**_1,**_2 ? ? ? 用户参数VS拼接函数 用户参数:每次迭代的时候调用一次,可以使用随机函数,在每次迭代的时候生成一个随机数,比如2个用户(线程组)要循环5次,那么每循环一次就会获取一次参数,2个用户的话就是一共获取10次参数,可用于注册接口,同时模拟多个用户进行注册 拼接函数:多个线程组的时候使用,要先定义多个(跟线程组数相同),前缀相同(变量名相同),后缀有一定规律(1,2,3)的变量,比如3个用户(线程组)循环5次,那么第一个用户执行的5次循环中,这个参数都是**_1,而第二个用户执行的5次循环中,这个参数都是**_2可用于注册之外的接口,比如登录接口,可以同时模拟多个不同用户登录多次.或者充值接口,多个用户充值多次 再多的用户的时候,可以使用CSV数据文件,循环使用参数 jmeter代理录制脚本1,在测试计划添加线程组 2,在测试计划添加代理服务器 ? 3,代理服务器里选择目标控制器为新增加的线程组 ? ?设置之后 录制的脚本都会生成在指定的线程组中 4,请求过滤器 ? ?过滤不需要的信息 5,启动代理,手工设置电脑的代理服务 地址一定要是127.0.0.1 6,打开页面开始录制 ? 禁用,删除css,js结尾的接口,删除域名不是指定项目的接口,删除重复接口 ? ? |
|
开发测试 最新文章 |
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 4:50:39- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |