回顾:
三大部分:
1,RESTful架构风格的特点:
HTTP接口的特点:
请求地址(url):
http://服务器地址(域名或IP地址):端口号/[/项目名称/版本]/资源集合(路径)/单个资源(某个资源文件或者代表某个资源的路径)
请求方式:
增:POST----201 ----- CREATE ---INSERT
删: DELETE---204 ---- DELETE
改: PUT----200/201 ---- UPDATE
查: GET----200 ----- SELECT
状态码:
返回的数据格式:JSON XML HTML等等
2,线程组的属性
名称、解释
出错后的动作
线程数:模拟用户的数目
启动时间:启动所有线程所花费的总时间
循环次数:每个用户执行线程组内的元件的次数
调度器:
1,计算结束时间
2,计算开始时间
为什么:
1,实现批量请求
2,实现时间持续较长的性能测试
3,参数化方式之一:CSV数据文件设置
参数化目的:为了提高效率,减少重复性操作
请求默认值:重复填写项作为默认值,只写了一次。
CSV数据文件设置(很重要的参数化方式,大家一定要掌握):
原理--理解后思路才能清晰
步骤--熟练以后,才能更好的理解原理,提高工作效率。
数据格式:HTML text JSON XML CSV
1,分析过程:
哪里需要参数化,就是对哪里使用变量替代。
显式的分析:
不变
变化
2,处理不变的部分:
创建计划-线程组--请求,
1,只写一次
2,设置循环:线程组属性
3,处理变化的部分:
1,变量替代
2,形成数据源:CSV数据文件---Jmeter外部
4,把数据源和变量联系起来:CSV数据文件设置--配置元件
1,指定路径和文件名
2,指定编码方式----
3,指定变量名:多个变量名使用逗号分隔
1,第几个变量,就从第几列取值
2,第几次循环,就从第几行取值
实现批量请求。
4,几个配置元件:
1,HTTP请求默认值
2,CSV数据文件设置
3,HTTP请求信息头
5,强调:术语一定要能说出来
今天的内容:
1,参数化剩下的3种:
用户参数、用户定义的变量、函数
2,直连数据库
3,关联的方式(3种):1-2种
参数化的第二种方式:用户参数
1,数据源在内部准备:添加前置处理器--用户参数
1 2 3
dptid dfsf sfs
dptname sfs
mastername dsfsf
slogan sdfsf
2,循环取值方式:
注意:用户数要和线程组的线程数保持一致
CSV数据文件:存储参数化的数据(变化的数据)
用户参数:存储参数啊的数据(变化的数据)
使用变量封装变化的数据
前两种方式中,变量封装的是变化的数据
第三种方式中,变量替代的是不变的数据。重复性
场景:api/departments/这个字符串,很可能会写几十次。
api/departments/------- apis/department/
api/departments/ --- path : apis/department/---${path}
Jmeter:用户定义的变量
上午:
CSV数据文件设置:配置元件中 使用变量替代的是变化的数据
用户参数:前置处理器 使用变量替代的是变化的数据
用户定义的变量:配置元件 使用变量替代的是不变的数据
第四种:函数
使用函数替代某种基本功能(过程)
函数:是封装某种功能或者过程的基本形式
计算两个数的和
x + y
def adder(x,y):
几十行代码
return z + m
维护方便,高效,实现重复利用。
函数:计数器
单独一节课讲函数:6种--之一计数器
应用场景:在结果树中区分每一个请求。
1,2,3,。。。。10。
计数器这个函数在Jmeter中被调用
生成函数的调用形式:函数助手
1,打开函数助手:
2,计数器函数:__counter
1,前面是两个下划线
2,第一个参数的值:可以为空,默认是false
false:所有用户共享一个计数器
true:每个用户独享一个计数器
4种参数化总结:
1,相同点:
都是从一个数据源获取数据,对重复的过程进行参数化
2,不同点:
1,CSV数据文件设置:
数据从外部获取,适用于数据量特别多的场景。可以手写,可以使用工具或者代码生成大量测试数据,使用场景较多,频繁。
2,用户参数:
数据在Jmeter内部准备,适用于少量数据的场景。应用频率较低。
3,用户定义的变量:
适用于数据不变但是重复性较高的场景。应用频率较低。
4,函数:
多样、灵活、功能强大。使用较多。
建议:CSV数据文件设置和函数优先考虑使用。用户参数和用户定义的变量作为辅助手段,择机使用。
直连数据库:
什么叫直连数据库:
绕过HTTP接口,直接对数据库进行连接、访问、操作。
为什么要直连数据库:
1,我们的接口测试数据存储在数据库中。
2,通过HTTP接口调用的数据,如果有错误,我们无法判断是接口传递引起的,还是数据库本身的数据有问题。
3,人眼去查看会有问题:
1,看走眼
2,看不过来
怎么直连数据库:
原理:访问数据库:
进入数据库,
1,知道数据库在哪里:定位:类似URL的形式:
2,知道数据库的类型:指定一个数据库驱动的类型
3,用户名、密码:填写相关的信息
以上3个信息,Jmeter中添加配置元件:
JDBC connection configuration
存储到一个变量中。
直连数据库,Jmeter通过一个组件来实现:
JDBC request --取样器,填写直连数据库的信息--${MyData}
4,操作:增删改查---编写sql语句
步骤:
1,添加数据库直连驱动
测试计划中,选择路径:
2,配置数据库直连信息
1,URL
2,类型
3,用户名密码
4,变量名
3,创建数据库直连请求
1,变量名填写
2,选择声明类型:
查询:select statement
更新:update statement
增、删、改
4,编写数据库sql语句:
一、直连数据库
1,为什么直连数据库?
接口调用的数据库数据,是通过接口传递过来的,无法验证数据库的数据信心是否正确的传递。直连数据库,可以验证接口调用传递的数据,是否和数据库中相符。
人工检查:会容易出错,肉眼凡胎容易走眼。数据量巨大时,肉眼凡胎,看不过来,低效。
直连数据库:程序检查,批量查询,高效、安全。
2,什么是直连数据库?
通过jmeter内置的组件,绕过http请求接口,直接对数据库库进行连接、操作和交互。
3,怎么直连数据库?
(1) 添加数据库驱动
① Jmeter是不能直接连接数据库,需要利用第三方的插件安装驱动进行连接
(2) 配置数据库连接信息
连接数据需要获取哪些信息?数据库在哪里,登录用户名、密码
怎么让就Jmeter获取这些信息?使用配置元件:JDBC connection configuration进行配置
怎么进行配置呢?
注意:
1,DataBase URL中前面的jdbc:sqlite:是固定格式,后边跟数据库所在路径。
2,JDBC Driver Class选择org.sqlite.jdbc。因为我们连接的是sqlite的数据库
3,这些连接信息通过我们填写变量名:mySqlite来引用
(3) 创建数据库连接请求
(4) 启动请求
(5) 观察效果:
一、参数化方式之--用户参数
1,参数化的思路:
2,怎么做用户参数的设置,进行参数化:
第一步:准备参数化的数据,填入到用户参数的组件中:
第二步:被参数化的过程:已经构造好的HTTP请求取样器
注意:应用变量的方式是:${变量名}
第三部:设置线程组
注意:线程组里设置为了
3,与CSV数据文件设置区别:
1,CSV的数据是从外部获取,用户参数的数据在Jmeter内部组件内创建
2,用户参数设置线程属性的时候,循环次数要等于线程数。因为线程模拟的是用户,用户参数中获取数据的顺序是以用户数为准。
3,循环不同
4,与CSV数据文件设置相同:
原理和过程是相同的。
三、参数化之用户定义的变量
怎么设置:
第一步,基于测试计划,添加:
第二步,引用变量,在需要引用变量的地方填写变量:
四、参数化方式之--函数
1,什么是函数?
函数:程序中封装代码功能的一种最基本的形式。
封装的是什么:某种基本功能的实现
比如,计数器:计算某个重复过程的次数
2,为什么要用函数?
某种功能的复用频率很高,如果每次使用都写代码,效率很低。封装到一个函数中,只需要每次使用时调用函数,即可实现功能的复用,高效,维护方便。
只要涉及到封装,都会有高效、维护方便的优点
3,怎么用函数进行参数化:
1,创建测试活动
测试计划--线程组--请求--查看结果树
2,在需要参数化地方插入函数调用
1,打开函数助手
菜单栏:
工具栏:
快捷键:Ctrl+Shift+F1
2,选择函数
3,输入选择函数的参数值,第一个参数默认值:FALSE
4,生成调用格式
5,选择复制调用格式
6,2-5步如下图所示
7,粘贴到需要函数的任何地方
3,启动线程组,观察效果:
4,注意:
(1)计数器__counter,前面是两个下划线
(2)地址?后面的内容,http请求不做任何解析。如果服务器收到的是无效参数,会自动视为无效内容而加以处理。
5,第一个参数不同值的区别:
True:每个线程单独拥有一个计时器。False:所有线程共有一个计时器。
如果不填写,默认值为:FALSE