Jmeter核心知识点

1. 参数化

1.1 什么是参数化

动态获取并设置数据,不用重复操作

1.2 为什么要参数化(使用场景)

例子:学院-新增100条数据

手动实现要重复操作,效率低下

使用参数化可以动态获取并设置数据,提升效率

1.3 如何实现参数化

  1. CSV Data SetConfig
  2. 函数助手
  3. 用户参数
  4. 用户自定义变量

2.CSV Data SetConfig

2.1 csv文件及准备数据

Txt excel csv mysql

id1,张三,master1,sl
id2,Lisi,master2,sl2
id3,王五,master3,sl3

2.2 具体实现

  1. 搭建架构
  2. 再在测试计划中添加一个组件,负责循环读取文本文档
  3. 将获取的字段对应的值设置进

3. 用户参数

A、是什么?

是参数化的实现方案之一,和 CSV Data Set Config 实现思想一样,流程也类似

B、为什么?

提高效率: 批量操作

C、怎么用?

实现:

1)、将数据存入第三方(不是文件,而是Jmeter内置的一个组件)

​ a、前置处理器 ---> 用户参数

​ b、设置用户参数组件

2)、设置线程组的循环次数(循环读取数据)

3)、直接从第三方组件取数据,然后应用在 取样器(http请求)

​ 格式: ${变量名}


4. 函数助手

4.1 什么是函数助手

jmeter封装好的一些功能,可以直接调用

4.2 好处

提升效率

4.3 如何实现

1)、打开内置的 函数功能 模块

​ 方式1:菜单栏 ---> 选项 ---> 函数助手对话框 (ctrl + shift + f1)

​ 方式2:工具栏 ---> 记事本图标

2)、选择要使用的函数(计数器函数),并设置(主要设置参数)

3)、生成调用格式(Jmeter 自动生成)

4)、在需要的位置调用该 函数格式


5. 用户定义变量

A、为什么?

场景:

某些 取样器中使用了相同的数据,且这个数据可能要被多次改变,比如 模板中:改 查 删操作根据 id 执行的,可能操作 idA,再操作 idB .... 如果每次改数据,繁琐,且

容易出错

可以使用: 用户定义的变量来优化

C、怎么用?

实现思想:

1)、创建一个组件(公共盒子),存储变量,变量名 = id值

配置元件 -----> 用户定义的变量

数据设置: 属性名和属性值

2)、在 http 请求中使用调用变量名的方式获取变量值

格式: ${变量名}

3)、以后修改时,只需要修改组件中的变量值即可


2.连接数据库

2.1 是什么

直接关联数据库,和数据库进行数据交互

2.2 为什么

可以直接和数据库交互,然后再和接口数据比对, 比原来通过接口操作数据库更安全

2.3 怎么用

  1. 使用第三方jar包,已经发

  2. 设置数据库的登录信息(ip,端口号,账号,密码) ----> 数据库连接池组件

    配置元件 -----> JDBC Connection Configuration

  3. 通过 Jmeter 内置的组件发送 SQL 语句,查看响应结果

    Sampler ---- > JDBC Request

3. 关联

3.1 什么是关联

一个请求的结果作为了另一个请求的提交的数据,像这种情况称之为关联

3.2 为什么要学习关联

项目有些敏感数据是要前后一起才能实现的,所以要有关联

3.3 怎么实现

  1. 搭建框架
  2. 第一次发起请求, 对于响应的结果,进行数据解析(xpath。re), 解析出要传递的参数(?)
  3. 拿到传递的参数再次发起请求
  4. 使用后置处理中的-正则表达式解析器/xpath解析器
  5. 参数的传递

4. 断言

4.1 什么是断言

断言就是让程序代替人工去判断程序响应数据是否达到预期结果.

4.2 为什么学习断言

在request的返回层面增加一层判断机制,检测是否符合预期,来保证测试过程中数据交互与预期是一致的.

4.3 断言种类

响应断言、size assertion、Duration Assertion

4.4 实现

1. 测试计划-线程组
2. 线程组-HTTP请求
3. HTTP请求->断言->想要用的断言
4. 测试计划->监听器->察看结果树
5. 测试计划->监听器->断言结果

5. 集合点

5.1 什么是集合点

集合点也叫定时器

5.2 集合点的使用场景

大规模并发时使用,比如秒杀,但是我们只是模拟,不能真正实现此场景。

5.3 怎么实现

设置定时器,阻塞线程的释放,直到线程数量达到后再一起释放,产生瞬时并发来模拟

具体步骤

1. 测试计划->线程组
2. 线程组->Sampler->HTTP请求(学院查询-所有)
3. 线程组->Sampler->HTTP请求(学院查询-指定)
4. HTTP请求(学院查询-所有)->定时器->Synchronizing Timer
5. 测试计划->监听器->察看结果树

6.函数助手

6.1 为什么使用函数助手

可以被认为是特殊值,可以填充测试树任何采集器或其他元素的字段.

6.2 常用的函数助手

了解:
1. __CSVRead
2. __counter 
3. __Random
4. __time

掌握:
5. __setProperty
6. __property

6.3 _setproperty_property

setproperty作用: 用于把指定数据设定成Jmeter属性,可以理解为是把指定数据设置成全局变量 
property: 获取Jmeter属性值

1. 需求

线程组A访问数据库dep_name,线程B根据获取的标题进行百度

2. 实现

1、创建线程A, 创建http请求访问传智播客官网
2、使用正则表达式解析器或xpath解析器解析出标题
3、使用———setproperty把标题设置为变量
4、使用BeanShell Sampler声明全局变量
4、创建线程B,创建http请求
5、使用————property获取全局的变量
6、创建查看结果树

3.小结

set_property把第一个请求响应的数据声明为属性,beanshell sampler 把属性提升为全局的变量,

第二个线程组使用property获取声明为全局的变量值,从而达到第一个线程组的结果作为第二个线程组的参数的传递.

https://www.baidu.com/s?wd=itcast



def add_func(num, num2):
  pass

http://www.itcast.cn/



a = b
c = a

c
最后修改:2021 年 08 月 12 日
如果觉得我的文章对你有用,请随意赞赏