第一课主要关于接口测试,涉及到postman和jmeter两个工具
一、基础知识:
1、接口就是把client(前端)和server(后端)端联系起来的(或者说各种花式操作数据库)。服务器也是一台电脑,只是性能比较高的一台电脑。
2、接口返回的数据都是json,(json,是一种通用的数据类型,以键值对 key-value 的数据形式来保存的)。
3、接口测试其实就是 功能测试,在接口测试之前,得要有接口文档。(问开发要的)
4、post请求和get请求没有很大的区别,get请求一般用于获取数据,post请求一般用于发送数据:
如果是get请求:不借助任何的工具,用浏览器就可以发请求,如:http://118.00.0.00/api/user/stu_info?stu_name=小黑
5、cookie:就是放在你本地的一个键值对。如:
niuhanyang hahaha12345
niuhanyang:sfjsksdf4234sdfw34
session:就是放在服务端的一个键值对。 如:
niuhanyang:sfjsksdf4234sdfw34
比如 登录, 登录成功后,本地(浏览器)就会保存键值对
浏览器发送请求的时候,就会自动把键值对发过去服务端进行对比
若对不上服务端的键值对,就会让你重新登录
session过期 也会让你重新登录
默认永久生效的。不过一般都会设置过期时间限制。
token 其实就是Cookie里面保存的一个键。
6、http请求分为两个部分:请求头和请求体
请求头里面呢是一些额外的信息,比如说用的什么浏览器,cookie
请求体里面传的是具体的数据。
请求头 header :
额外的信息
浏览器
cookie
需要什么样的数据
请求体 body :
username=xxx
file=aa.py
7、
get请求只有请求头,是没有请求体的。
它的数据直接放在url里面的,post请求数据是放在body里面的,get请求有长度限制,post请求没有。
在以前的时候技术不好,有长度限制。
现在早就没有了。
get请求没有post请求安全。
只要通过抓包,post请求的数据一样也可以看到。
8、
功能测试测的就是业务逻辑。
server端测试。
1、接口测试就是功能测试。
2、关注业务逻辑
3、正常、异常的,就不是按照接口文档上要求的来
http 状态码:
200 请求成功
302 重定向
404 客户端发出去的请求不合法
500 服务端有问题
9、、进行接口测试,必需的是接口文档,文档主要包含以下几个部分:
1、URL
2、请求方式(一般为post或者get)
3、请求参数说明
4、返回参数说明
5、请求、返回示例
6、状态码说明
二、postman接口测试
示例1 :GET请求 :
获取所有学生信息
简要描述:
请求URL:
http://URL地址/api/user/all_stu
请求方式:
需要添加header信息,key为Referer value 为http://XXXX/
参数:
无
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
error_code | int | 错误编码,0为操作成功 |
msg | string | 提示信息 |
参数及返回示例
示例2: POST请求:
登录接口
简要描述:
请求URL:
http://URL地址/api/user/login
请求方式:
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
username | 是 | string | 用户名 |
passwd | 是 | string | 密码 |
登陆用户名:XXXXX
密码:aA123456
返回示例
{
"error_code": 0,
"login_info": {
"userId": 1,
"sign": "d58e3582afa99040e27b92b13c8f2280",
"login_time": "20171207113501"
}
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
error_code | int | 错误编码,0为操作成功 |
login_info | object | 登录对象信息 |
userId | int | 用户id |
sign | string | 签名 |
login_time | string | 登录时间 |
参数及返回示例
示例3:POST请求,添加Cookie
学生金币充值
简要描述:
请求URL:
http://URL地址/api/user/gold_add
请求方式:
参数:
该接口有权限验证,需要admin用户才可以做操作,需要添加cookie
cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
stu_id | 是 | int | 学生id |
gold | 是 | int | 金币数量 |
返回示例
{
"error_code": 0,
"msg":"充值成功!"
}
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
error_code | int | 错误编码,0为操作成功 |
msg | string | 提示信息 |
请求参数及返回参数示例
三、Jmeter接口测试 :jmeter 开源的java开发的一个压力测试工具。
jmeter查看结果树乱码
1、在jmeter的bin目录下找到jmeter.properties这个文件
添加上
sampleresult.default.encoding=utf-8
2、重启jmeter
jmeter body data里面有乱码怎么解决
1、在jmeter的bin目录下找到jmeter.properties这个文件
添加上
jsyntaxtextarea.font.family=Hack
2、重启jmeter
jmeter参数化
1、用户定义的变量
2、函数助手里面的
__random
__counter
__time
3、从文件里面读
如果文件不写绝对路径,只写一个文件名,那么你就把你的文件
放到jmeter的bin目录下就ok了
4、
关联:
1、调用第一个接口,然后从这个接口的返回数据里面拿到某个值
2、放到第二个接口里面来用。
5、
表示时间
1、格式化好的时间 20180506185922
2、时间戳 从计算机发明那一天到现在过了多少秒
jmeter是java开发的,Java里面的时间戳默认是精确到毫秒
所以你要除以1000才是真正的时间戳
关联:
1、调用第一个接口,然后从这个接口的返回数据里面拿到某个值
2、放到第二个接口里面来用。
一、添加线程组 :
二、添加HTTP请求:加入实际被测页面
服务器名称或IP:被测服务器的网站名字,也可以是IP地址。剩下的属性可以按照被测系统的属性按需配置
三 、用户定义的变量:
四,添加结果监听器:察看结果树 :来查看性能测试过程中请求和响应信息 ,你可以看到一些测试期间一些有用的信息,比如发送的请求的信息和响应数据等
请求数据:HTTP请求的相关信息,有raw和HTTP两种类型展示。
响应数据:HTTP请求所得到的响应数据。响应数据有正确和错误。
五、HTTP信息头管理器
定义信息头,在其覆盖下的所有元件都会使用该信息头。例如定义在测试计划中的信息头,即该测试计划所有请求的信息头。比如添加Cookie
六.jp@gc - JSON Path Extractor插件,该插件可以应用到关联接口上
这个东西相当于正则表达式提取器
Destination Variable Name
: 变量名,就是下个http
请求需要用到的名字,相当于正则表达式提取器中的引用名称
JSONPath Expression
: json
表达式,这个是根据返回的json
来写的。如图,例如后台返回的数据如下,那么取sign 的表达式就应该写成$.login_info.sign
第一个$
是固定写法,后面用.
和不同层级的字段名来表达取哪个字段。如果有多个相同的字段名,则在字段后面加上索引以区分,例如$.login_inf[0].sign
Default Value
: 默认值,当没有取到值时的默认传入值。
七.参数化
a. 使用时间戳${__time(,)}
b.使用当前时间${__time(YYYYMMdd-HH:mm:ss,)}
c.随机数${__Random(,)}
d.按顺序的${__counter(1,10)}
注:${__counter(,)}的初始值默认从1开始,设置起始值无效,设置结束值也无效。可以根据线程数控制。
e.通过文件进行参数化
添加配置元件 CSV Data Set Config
示例文件:
原文:https://www.cnblogs.com/tanzitanzi/p/9490140.html