回顾:
两个环境
工具环境:Jmeter的下载、启动、基本使用
项目环境:学生信息管理系统

两种接口:
天气预报:4个接口----GET方法
学生信息管理系统:
被测软件的学院信息接口:
4类:
查询接口:6个
新增接口
更新接口
删除接口

数据库:三个表:学院信息、班级信息、学生信息
sqlite:执行语句是通用的sql语句。

两个数据格式:常见的web应用的数据格式

XML
标签语言,数据中有前后的标签
只存储和传输数据,不显示数据
标签是自定义的,不是预定义的
JSON(记住)
什么JSON数据:
名称:值 对:名称是包裹在双引号中的。
值可以是:
数字
字符串
布尔值
JSON对象:花括号括起来的 JSON数据,JSON数组,JSON对象
JSON数组:方括号括起来的 JSON数据,JSON数组,JSON对象
空:NULL
JSON数据之间通过逗号分隔

Jmeter的基本使用步骤:
调用1.1方式的查询接口,使用Jmeter查询所有学院信息:
1,新建测试计划
2,新建线程组
3,基于线程组添加取样器--HTTP请求,填写如下信息:
协议、域名、端口号、路径---请求地址
方法--请求方法
参数--请求参数,传参的2种方式:
1,URL后边填写:URL?参数名=参数值&参数名=参数值
2,参数列表中填写参数名和参数值
3,以上只能二选一
编码方式:UTF-8
4,基于测试计划添加监听器---察看结果树
5,启动脚本,运行,观察结果

今天的内容:
1,RETTful风格的特点
2,熟悉学院信息的四类接口:增删改查,并使用Jmeter进行调用
3,Jmeter的几个配置元件
4,线程组的基本属性:Jmeter的初级使用
5,Jmeter的核心知识点之一:参数化(4种)----学完所有的核心知识点,就可以Jmeter的中级使用

一,RESTful风格:
HTTP接口的四大要素具有的特点:
1,请求地址(URL):http:// 服务器地址(域名或者ip地址):[端口号]/[项目名称/版本]/资源集合(路径)/[/单个资源](单个文件名)
2,请求方式:
增:新增--POST--在服务器新建一个没有的资源。----CREATE
删: 删除--delete--在服务器删除一个已有的资源。----DELETE
改:更新--PUT---在服务器更新已有的资源。---UPDATE
查:查询--GET--从服务器获取资源(单个或者多个)
3,返回值
1,返回的状态码:
GET----200
PUT----201或者200
post---201---学生信息管理系统
delete--204
2,返回的数据格式:XML、JSON,HTML
4,参数:传参的方式:
GET:两种方式
POST:两种方式:
1,URL后边跟参数:URL?参数名=参数值&参数名=参数值
2,请求的消息体中携带数据:
xml格式或者json格式

学生信息管理系统的接口,就属于RESTful风格架构的。

二、使用Jmeter熟悉学院信息的四类接口:

查询:

dep_id : 学院id
dep_name: 学院名
master_name : 院长名
slogan: 口号

6个请求:
1.1: http 域名 端口号 路径 方法
1.2: http 域名 端口号 路径 方法
1.3: http 域名 端口号 路径 方法
1.4: http 域名 端口号 路径 方法
1.5: http 域名 端口号 路径 方法
1.6: http 域名 端口号 路径 方法

新增:
1,按照接口文档创建HTTP请求:
1,注意方法是:post
2,数据是json串,并且填写在消息体数据中
2,需要添加配置元件---HTTP信息头管理器
添加的字段名为:Content-Type
添加的字段值为:application/json

三,配置元件:
1,请求默认值
1,为空的地方取默认值
2,不想取默认值,就不能为空
3,不能通过如下方式:
为空?$dep_id_list=ghi,gkl,def2
实现:
api/departments/?$dep_id_list=ghi,gkl,def2

2,HTTP信息头管理器:修改请求的头部字段值。

1,新建线程组01,在本线程组中,创建http请求,使用1.1的方式,查询所有学院信息10次。
解决方案01:低效
创建10个请求

解决方案02:循环
1,1个用户循环10次
2,5个用户,每个用户循环2次。2个用户,每个用户循环5次。

四、线程组的属性:初级使用者
1,线程组的基本属性
线程数:用户数
启动时间:启动所有线程花费的总时间
循环次数:每个线程执行本线程组中所有的元件的,次数。勾选永远,将做死循环,直到手动停止

调度器:
持续时间:用来计算线程组停止运行的时间节点
启动延迟:用来计算线程组开始运行的时间节点

2,线程组的执行顺序:默认是并行执行的,如果要顺序执行,我们需要在测试计划中勾选独立运行每个线程组。
并行:先开始的不一定先结束,后开始的不一定后结束。
顺序:沿着左侧树形结构,从上往下顺序执行。

五、Jmeter的核心知识点之一:参数化

参数化之CSV数据文件设置:

1,新建线程组02,在本线程组中,创建1个http请求,使用1.2的方式,查询数据库中的前30个学院信息

原理:

问题:写一个pytho代码,实现:连续输出如下语句:
这是第1次打印:hello,world
这是第2次打印:hello,world
这是第3次打印:hello,world
。。。。。
这是第10次打印:hello,world

解决方案01:
print("这是第1次打印:hello,world")
print("这是第2次打印:hello,world")
print("这是第3次打印:hello,world")
....
print("这是第10次打印:hello,world")

解决方案02:高效
For i in range(1,11):
print("这是第"+i+"次打印:hello,world")

分为两部分:
1,不变的部分:如何处理
1,只写了一次
2,使得它循环
2,变化的部分:1,2,3,4,5,。。。10
1,使用一个变量来代替它的位置:i
2,它的所有值形成一个数据源:range(1,11)
3,联系不变的部分和变化的部分,使用for循环,将变化的数据源循环赋值给不变的部分。

CSV数据文件设置:Jmeter中实现如上参数化步骤的元件。

新建线程组01,在本线程组中,创建1个http请求,使用1.2的方式,查询数据库中的前3个学院信息

解决方案01:
第1个请求:http://127.0.0.1:8000/api/departments/ghi/
第2个请求:http://127.0.0.1:8000/api/departments/gkl/
第3个请求:http://127.0.0.1:8000/api/departments/abc233/

分为两部分:
1,不变的部分:如何处理
1,只写了一次:http://127.0.0.1:8000/api/departments,http请求只添加1个
2,使得它循环:3次---设置线程组的属性:1个用3次,3个用户1次。
2,变化的部分:ghi,gkl,abc233
1,使用一个变量来代替它的位置:
变量名:dptid
引用变量的形式:${变量名}---${dptid}
2,它的所有值形成一个数据源:
三个id存放到一个文件中:csv文件--逗号分割值文件
注意:
1,csv每列数据要用英文逗号分隔
2,UTF-8编码
3,最好不要有空行

3,联系不变的部分和变化的部分,使用CSV数据文件设置将变化的数据源,通过线程组循环赋值给不变的部分中的变量。

步骤:四大步骤
1,分析参数化的过程:
1,不变的部分
2,变化的部分
2,创建测试计划---线程组---HTTP请求:
1,填写请求的信息:不变的部分
2,设置线程组的循环次数:3
3,变化的地方使用变量替代:${变量名}---引用到任何你想引用的地方。
3,变化的数据形成一个外部的数据源:CSV数据文件
4,添加配置元件:CSV数据文件设置:
1,CSV数据文件的路径和文件名
2,编码
3,变量名:要和请求中的变量名保持一致

2,新建线程组02,在本线程组中,创建1个http请求,新增3个学院信息

1,分析参数化的过程:
1,不变的部分:
{
"data": [
{
"dep_id":"",
"dep_name":"",
"master_name":"",
"slogan":""
}
]
}
2,变化的部分
dptid dptname mastername slogan
1
2
3

2,创建测试计划---线程组---HTTP请求:
1,填写请求的信息:不变的部分
2,设置线程组的循环次数:3
3,变化的地方使用变量替代:${变量名}---引用到任何你想引用的地方。
3,变化的数据形成一个外部的数据源:CSV数据文件
4,添加配置元件:CSV数据文件设置:
1,CSV数据文件的路径和文件名
2,编码
3,变量名:要和请求中的变量名保持一致

一、RESTFul风格架构

(1) 是一种标准的实现,而不是标准本身。体现这种架构设计的风格,叫做RESTful风格

(2) 常见形式:http://服务器地址:端口号/[服务名]/[版本]/资源集合/单个资源

(3) 常用方法:GET(获取资源);POST(新增资源);PUT(更新资源);DELETE(删除资源)

(4) 常见返回码(状态码):GET:200;POST:200/201;PUT:200/201;DELETE:204

(5) 常见数据格式:JSON

1,常见形式:

http://服务器地址:端口号[/项目名称/版本]/**资源**集合[/单个资源]

- http://:为我们HTTP协议的访问头标准

- 服务器地址:为我们项目服务器IP地址

- 端口号:为我们服务器内项目访问的指定编号

- [/项目名称/版本]:可选

- 资源:互联网-图片、音乐、视频、文本、数据

2,方法名:

GET(SELECT):从服务器取出资源(一项或多项)。

POST(CREATE):在服务器新建一个资源。

PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。

DELETE(DELETE):从服务器删除资源。

3,响应(返回值):

序号

状态码

动词

说明

01

200 OK

[GET]

服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)幂等:无论执行操作多少次,结果都会执行1次结果相同

02

201 CREATED

[POST/PUT/PATCH]

用户新建或修改数据成功

03

202 Accepted

[*]

表示一个请求已经进入后台排队(异步任务)

04

204 NO CONTENT

[DELETE]

用户删除数据成功

05

400 INVALID REQUEST

[POST/PUT/PATCH]

用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的

06

401 Unauthorized

[*]

表示用户没有权限(令牌、用户名、密码错误)

07

403 Forbidden

[*]

表示用户得到授权(与401错误相对),但是访问是被禁止的

08

404 NOT FOUND

[*]

用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的

09

406 Not Acceptable

[GET]

用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)

10

410 Gone

[GET]

用户请求的资源被永久删除,且不会再得到的

11

422 Unprocesable entity

[POST/PUT/PATCH]

当创建一个对象时,发生一个验证错误

**12

500 INTERNAL SERVER ERROR

[*]

服务器发生错误,用户将无法判断发出的请求是否成功**

总之,RESTful风格的特点:

序号

名称

01

定义

一种软件架构风格、设计风格,而不是标准

02

RESTful风格

http://服务器地址:端口号/[服务名]/[版本]/资源集合/单个资源

03

请求方法

GET(获取资源);POST(新增资源);PUT(更新资源);DELETE(删除资源)

04

状态码

GET:200;POST:200/201;PUT:200/201;DELETE:204

05

[JSON]

是一种轻量级的数据交换格式;JSON是已键/值对组合方式,键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值: 1 {"name": "张三","age":18}

问题:查询参数值中有汉字,请求失败,解决方法:

修改Jmeter.proptery文件

1,bin目录下打开:

2,搜索:sampleresult.default.encoding,去掉前面的#号,将等号后边的值改为:utf-8。注意:记得保存

3,修改属性文件,需要重启Jmeter,才能生效。

1,添加请求默认值:

1.1,什么是默认值:

就是缺省的信息,填写以后,新构造请求时可以不用填写,默认取默认值里的数值。

1.2,为什么使用默认值:

将经常使用的一些信息,以缺省默认值的形式使用。好处:维护方便,构造新请求方便。

构造和维护比较高效。

1.3,怎么使用默认值:

2,添加HTTP信息头管理器,作用:添加请求的头部信息:

一、线程组

1,基本属性

(1) 线程数:模拟的用户数

(2) Ramp-up 时间(秒):启动所有的线程数所花费的时间

(3) 循环次数:每个线程循环的次数。勾选永远将不停的循环,直到手动停止

(4) 多个线程可以有两种执行方式:

① 并行:同时进行。特点:先执行不一定先结束,后执行也不一定后结束。

② 顺序:按照树形结构的上下顺序,先后依次执行

③ 如何设置并行还是顺序执行:

在测试计划中设置:

(5)基本属性的作用:可以实现批量的请求

(6)调度器:配置线程组的启动时机和运行持续时间,见名知意。注意:如果启用调度器,则持续时间不能为空,也不能为零。

一、参数化方式之--CSV(重点)

1,参数化的思路:

1,怎么做CSV数据文件设置,进行参数化:

分析过程:

1,分析并找到需要被参数化的过程,并构建这个过程,确定需要被参数化的数据

2,根据第一步确定的数据,准备测试数据,CSV格式的数据。

注意:

逗号必须是英文半角

文件编码必须是UTF-8

3,Jmeter中创建配置元件--CSV数据文件设置。引入存储测试数据的文件,选择编码格式,自定义参数名,其他默认即可

4,在需要被参数化的过程中,引用第三步自定义的参数名。引用格式为:${参数名}

第一步:准备一个数据源:自己在Jmeter外部准备

注意:

1,必须是CSV数据,变量值用逗号隔开,逗号必须是半角逗号(英文逗号,重要)

2,读取数据时,以行为单位读取,每行分割的值对应参数化组件里的变量

3,保存时,选择UTF-8编码格式(重要)

第二步:被参数化的过程:已经构造好的HTTP请求取样器和线程组

注意:应用变量的方式是:${变量名}

第三部:设置参数化的组件

3,CSV文件:

逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)

4,为什么:

(1) 高效:可以批量传递不同的数据

(2) 安全:先准备数据,比手动填写请求数据,更准确。尤其是软件生成的数据

(3) 便利:测试数据和测试脚本分离。相互不干扰,维护方便。

 

d03的更多相关文章

  1. D03——C语言基础学习PYTHON

    C语言基础学习PYTHON——基础学习D03 20180804内容纲要: 1 函数的基本概念 2 函数的参数 3 函数的全局变量与局部变量 4 函数的返回值 5 递归函数 6 高阶函数 7 匿名函数 ...

  2. 区块链学习笔记:D03 区块链在各行业领域的应用(一)

    今天主要是学习了区块链在金融和供应链领域的应用,重点体现了区块链多方参与.透明可信.防篡改防抵赖的技术优势 区块链的应用场景最早是在金融行业应用较多,后续逐步扩展到传统行业,如:供应链.政务服务.物联 ...

  3. 中阶 d03.5 (正篇)完整的Dao 操作数据库

    1.目录结构: util---JDBCUtil.java(工具包,整合建立链接和释放资源的方法) dao---UserDao.java(接口,定义方法) impl---UserDaoImpl.java ...

  4. 中阶d03.4 JDBC_DAO

    1.环境准备(单项目下用,在大jdbc项目下只用配置一次) jdbc的驱动(mysqlxxjdbc.jar).util工具(包装释放资源.建立连接.访问properties文件等方法) 2.dao的概 ...

  5. 中阶d03.3 JDBC_CURD_Util --- 使用 junit执行单元测试(增删改查)

    1.单元测试环境准备 https://www.cnblogs.com/longesang/p/11399010.html 2.测试 3.结果返回 4.代码 新建一个test目录统一存放测试案例 查: ...

  6. 中阶d03.2 JDBC联合properties使用,通过读取本地配置文件为代码传递参数

    * 使用properties读取本地配置文件为代码传递参数 * url.用户名.密码.驱动地址等配置可以在配置文件中使用 main package zj_1_JDBC.properties; impo ...

  7. 中阶d03.1 JDBCDemo

    1. jdbc使用查看驱动的doc文档<connector-j.html> 2.代码实现:1. 注册驱动---2. 建立连接---3. 创建statement ,跟数据库打交道--- -- ...

  8. 中阶d03 JDBC 使用

    1.首先在数据库中创建表 2.安装mysql驱动 java开发环境中导入jdbc连接mysql的jar包 mysql-connector-java-5.1.7-bin.jar 下载地址:https:/ ...

  9. MongoDB学习笔记~对集合属性的操作

    回到目录 $unset清除元素 请注意在单个数组元素上使用$unset的结果可能与你设想的不一样.其结果只是将元素的值设置为null,而非删除整个元素.要想彻底删除某个数组元素,可以用$pull 和$ ...

随机推荐

  1. js全局属性/函数

    全局函数 eval () isFinite ()             检查某个值是否为有穷大的数 isNaN () 检查某个值是否是数字                     返回true或fa ...

  2. Office批量打印助手(Excel 批量打印、Word 批量打印)

    最新版本:1.0.6664.34636(更新日期:2018年3月31日) 下载地址:点击下载  程序简介: 本程序能批量打印 Word 文件.Excel 工作簿. 使用程序前请先安装 .NET Fra ...

  3. Docker和ASP.NET Core

    Docker和ASP.NET Core Docker 正在逐渐成为容器行业的事实标准,受到 Windows 和 Linux 生态系统领域最重要供应商的支持. (Microsoft 是支持 Docker ...

  4. Redis令牌桶限流

    一 .场景描述 在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进行调用次数的限制.比如对于某个 用户,他在一个时间段(interval ...

  5. 基于appium的fixture应用之代码重构

    一.痛点分析 在appium自动化中,会话启动参数较多,我们使用了yaml配置文件来进行管理,并使用了PyYaml模块进行yaml文件内容的读取,我们知道,在测试场景中,不可能只会用到一种启动类型的参 ...

  6. Delphi xe 10.3.2-快递接口封装-【快递鸟(即时查询和单号识别)】

    编译环境:Windows 7 +Delphi xe 10.3.2 封装了快递鸟接口,注意的坑:MD5要转为小写. function TKDniaoAPI.StrtoMd5(const str: str ...

  7. R3环申请内存时页面保护与_MMVAD_FLAGS.Protection位的对应关系

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html 技术学习来源:火哥(QQ:471194425) R3环申请内存时页 ...

  8. [Abp vNext 源码分析] - 5. DDD 的领域层支持(仓储、实体、值对象)

    一.简要介绍 ABP vNext 框架本身就是围绕着 DDD 理念进行设计的,所以在 DDD 里面我们能够见到的实体.仓储.值对象.领域服务,ABP vNext 框架都为我们进行了实现,这些基础设施都 ...

  9. 常用类-CSV---OLEDB

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  10. python-Redis模块常用的方法汇总

    Redes模块常用的方法汇总 一.创建建Redis对象 1.直接使用 import redis r = redis.Redis(host='127.0.0.1', port=6379) 2.连接池使用 ...