09.14,09.15jmeter知识点

1.1loadrunner介绍

 1.2jmeter介绍

 相同点:

        都能模拟大量用户

        都能支持多协议(常见的协议都支持)

        都有监控及分析报表功能

 不同点:

2.jmeter功能概要 

2.1汉化

 2.2修改主题

 3.jmeter元件和组件

3.1元件的基本介绍

 3.2组件的基本介绍

 

 3.3元件的作用域

 

 4.jmeter使用案例

4.1线程组

作用:线程组就是控制jmeter用于执行测试的一组用户

位置:右键点击"测试计划"-->添加-->线程(用户)-->线程组

4.2特点

模拟多人操作

线程组可以添加多个,多个线程组可以并行或者单行

取样器和逻辑控制器必须依赖线程组才能使用

线程组下可以添加其它元组下组件

4.3线程组的分类 

普通线程组,常用的线程组,可以看做是一个虚拟用户组,线程组中每一个线程都可以理解为一个虚拟用户

setup线程组:一种特殊类型的线程组,可用于执行预测试操作.

teardown线程组:一种特殊类型的线程组,可用于执行测试后工作

 

 5.http请求

作用:向服务器发送http和https请求

位置:进入线程组-->右键-->添加->取样器-->http请求

6.监听器 

作用:监听器可以动态的监控jmeter测试执行的过程,实时查看测试结果

位置:在线程组>>添加>>监听器>>聚合报告/查看结果树

 

 

 聚合报告

7.jmeter参数化

7.1jmeter介绍

本质:是用参数的方式代替脚本中的固定的测试数据

实现方式:文件定义的方式/数据库的方式/定义变量

7.2:jmeter参数化

参数化测试:把测试数据组织起来,用不同的测试数据调用相同的测试方法.

jmeter中常见的参数化方式:

7.3用户定义的变量

作用:定义全局变量

位置:测试计划>>线程组>>配置元件>>用户定义的变量

 

 

 7.4用户参数

作用:针对同一组参数,当不同的用户来访问时,可以获取到不用的值

位置:测试计划>>线程组>>前置处理器>>用户参数

 7.5csv数据文件设置

作用:让不同用户在多次循环时,可以取到不同的值

位置:线程组>>配置原件>>csv数据文件设置

保存文件格式是txt

 断言正确

 保存文件格式是csv

7.6函数参数化 

作用:计数函数,一般做执行次数统计使用

方式一:counter函数

位置:选项>>函数注释对话框>>_counter

 方式二:CsvRead函数

操作:选项>>函数注释对话框>>_CsvRead

 方式三:randomstring函数

操作:选项>>函数注释对话框>>_randomstring

 8.jmeter断言

8.1断言

让程序判断预期结果和实际结果是否一致

jmeter在请求的返回层里面有个自动判断机制(响应状态码)
但是请求成功了,并不代表结果一定正确,因此需要检测机制提高测试准确性
常见断言
响应断言./json断言/xpath断言/持续断言

8.2响应断言

作用:对http请求的任意格式的响应结果进行判断

位置:测试计划>>线程组>>htpp请求>>右键添加断言>>响应断言

 

 8.3json断言

作用:对http请求的json的响应结果进行判断

位置:测试计划>>线程组>>http请求>>右键添加断言>>json断言

 

 8.4xpath断言

定义:xpath基于xml的树状结构,提供在数据结构树中寻找节点的能力

位置:测试计划>>线程组>>http请求>>右键添加断言>>xpath断言

 

 区别:响应断言(使用任何的返回类型)

        json断言(只适用于json的返回类型)

        xpath断言针对返回信息为xpath的数据类型进行断言

8.5断言持续时间

作用:检查http请求的响应时间是否超出要求返回

位置:测试计划>>线程组>>http请求>>右键添加断言>>持续时间断言 

9.jmeter关联

9.1为什么使用关联

 9.2关联

当请求之间有依赖关系,比如请求的入参是另一个请求返回的数据,这时候就需要用关联处理

常见的关联

正则表达式提取器        --提取任意格式的数据

json提取器                  --提取html格式的数据

xpath提取器                --提取json格式的数据

9.3正则表达式

就是一个公式,或者是一套规则,使用这套规则可以从任意字符串中提取想要的数据内容

公式格式:左边界(匹配符号)有边界:可以提取出想要获取的数据内容
.:是通配符,可以代表任意字符(除换行回车)
*:代表前面的字符出现0或者多次
.*匹配规则:找到左边界值后,往右查找有边界,找到最后面的有边界,中间的所有的数据都被记录下来
?:代表非贪婪匹配,找到左边界后,往右查找匹配走边界,只要右匹配的右边界就停止继续查找;再次查找
左边界的右边界
公式格式:左边界(.*?)有边界
<title>(.*?)</title>
<title>百度一下,你就知道</title>

案例:

 结论:

通过一个正则表达式可以提取出多组数据,每组数据设置对应的左边界和有边界即可

每一组数据又可以由一个或者多个值

作用:针对任意格式的响应数据进行提取

位置:线程组>>添加>>后置处理器>>正则表达式提取器

案例:我们以手机号码归属地返回的归属地传递第二个接口查询所属地的天气情况

 

 

案例
实现接口查询登录用户--查询余额
在登录的接口中提取数据

 

 

 9.4json提取器

json提取器 :就是json表达式提取数据,从返回格式是json中提取想要的数据内容
位置:线程组>>添加>>后置处理器>>json 提取器

 

 

 9.5xpath提取器

xpath提取器 :针对于HTML格式的响应结果数据进行提取
位置:线程组>>添加>>后置处理器>>xpath提取器
案例:在百度搜索中提取数据,传递第二个百度搜索中进行搜索

9.6:jmeter属性

为什么使用jmeter属性

当有关联关系的两个请求在同一线程组中时,可以使用三种提取器的变量来实现数据传递

jmeter属性的配置函数

__setProperty函数:将值保存成jmeter属性
__property函数:在其他线程组中使用property函数读取属性

jmeter属性的函数执行
__setProperty函数执行(保存jmeter属性),需要通过beanShell取样器来执行
__property函数(读取属性),在其他线程组中使用property函数

案例 

实现手机号归属地查询之后城市传递城市天气中
在第一个线程组的接口中提取数据

 将提取的数据设置属性,保存在beanshell采样器中,全局使用

 在第二个线程组中的接口去引用

话术:在第一个线程组使用三种提取器把需要的数据提取出来,将提取出来的数据赋值给jmeter属性
-- setproperty,在第二个线程组中引用jmeter属性--property,执行时,注意控制线程组的执行的顺序

十:jmeter直连数据库

10.1:直连数据库的场景

 10.2配置

10.2.1:添加Mysql的驱动jar

方式1:在测试计划面板点击游览按钮,将jdbc驱动添加进来

Variable Name:连接池名称。JDBC Request会通过此名称来获取连接池的配置,名称可以随意填写,但
是最好具体实际的业务意义,方便理解和记忆。
其他的可以默认,可以根据实际情况来调节优化性能。
Database URL:数据链接url,格式:jdbc:mysql://localhost:3306/host
注释:数据库的ip地址+端口/数据库名(查询数据库端口号show global variables like 'port'
jdbc:mysql://127.0.0.1:3306/mydb2?serverTimezone=UTC& allowMultiQueries=true
JDBC Driver Class:驱动器名称。固定:com.mysql.jdbc.Driver
Username:用户名
Passowrd:密码
添加一个JDBC Request
右键线程组【添加】-Sampler-JDBC Request

 
Select Statement:查询语句
只能执行查询语句select,执行第一条sql语句,而且第一条必须是select语句,否则报错
Updata Statement:更新语句
支持测试非select语句,并且支持测试多条,若其中夹杂select语句,自动忽略,若第一条语句为select
语句,报错
Callable Statement:所有语句
只要语法正确,任何语句,再多的条数都能支持
Prepared Select Statement:预编译查询语句。(长时间执行效率更高,支持占位符)
Prepared Update Statement:预编译更新语句。(同上)
Commit (立即提交)Rollback(回滚)

 

Parameter values:参数值。参数化sql语句中的值
Paramter types:参数类型。数据库的参数你可以去查看一下。这里是varchar类型。
Variable names:变量名字,也就是将筛选出来的值放在变量里面。例如这三列数据分为放在变量:A,B,C
中(实际操作中命名一定要有实际意义)。
Result variable name:存储变量名。将整个结果存储在变量中。取名:rs
Query timeouts :超时时间。

十一:逻辑控制器

11.1作用

逻辑控制器:可以按照设置的逻辑控制取样器的执行顺序

11.2常见的逻辑控制器

如果if控制器

循环控制器

ForEach控制器

11.2.1if控制器

作用:

if控制器来控制它下面的测试元素是否运行

位置:

测试计划>>线程组>>逻辑控制器>>如果if控制器

 参数介绍

 练习

1:使用'用户定义的变量'定义一个变量name,name的值可以是'苹果'或者是'香蕉'
2:根据name的变量实现百度搜索对应的信息

用户定义变量

 第一个if控制器中添加条件

 第二个if控制器中添加条件

11.2.2:循环控制器

作用

通过设置循环次数,来实现循环发送请求

位置

测试计划>>线程组>>逻辑控制器>>循环控制器

参数讲解

 

控制的作用域不同:线程组控制的是线程组下的所有的请求,循环控制器是该控制器下的所有请求

如果线程组循环次数为M,循环控制器循环次数为N

11.2.3:ForEach控制器

作用

一般和用户定义变量或者正则表达式提取器一起使用,读取返回结果中一系列相关的变量值

位置

测试计划>>线程组>>逻辑控制器>>循环控制器

 其中name的数据可以来源于用户定义的变量,命名规则是变量名_数字/正则表达式提取器的数据

用户定义变量维护数据

 ForEach数据维护

 引用

 十二:定时器

12.1:同步定时器

定义

同步定时器:堵塞线程(积累一定的请求),当在规定的时间内达到一定的线程数量,这些线程会在同一个时间点一起释放,瞬间产生很大的压力

提示:在jmeter中叫做同步定时器,在loadrunner中叫集合点

位置

测试计划>>线程组>>http>>定时器>>Synchronzing Timer

参数讲解

 

12.2:常数吞吐量定时器

作用

让jmeter按指定的吞吐量执行,以每分钟为但单位

位置

测试计划>>线程组>>http请求>>定义器>>Constant Throughput Timer

参数讲解

 案例:

 

 

 使用场景

需要被指定的吞吐量发送请求时,可以使用常数吞吐量定时器

规定好每个用户每分钟发送的请求数

12.3:​​​​​​​固定定时器

作用

固定定时器:定时器负责定义请求之前添加延迟间隔

位置

测试计划>>线程组>>http请求>>定时器>>固定定时器

参数讲解

 

 十三:jmeter分布式

jmeter 分布式执行原理

 分布式的注意事项

关闭防火墙
所有的控制机,代理机,服务器都在同一个网络上
所有机器的jmeterJava版本都必须一致
关闭RMI中的SSL开关
jmeter 分布式的配置和执行
配置 --- 修改 bin/jmeter.properties 文件

 

 十四:html测试报告

作用
jmeter支持生成html测试报告,以便从测试计划中获得图表和统计信息
命令:

 

( ̄▽ ̄)~*------ ٩(๑❛ᴗ❛๑)۶谢谢阅读!!!!!!!!!!!!!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值