java接口测试学习_接口测试学习笔记(一)

第一课主要关于接口测试,涉及到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请求 :

获取所有学生信息

简要描述:

这个接口是为了说明怎么添加header信息的

请求URL:

http://URL地址/api/user/all_stu

请求方式:

get

需要添加header信息,key为Referer value 为http://XXXX/

参数:

返回参数说明

参数名类型说明

error_code

int

错误编码,0为操作成功

msg

string

提示信息

参数及返回示例

ca602bd6991c5dd822db9309e909202e.png

示例2: POST请求:

登录接口

简要描述:

登录接口

请求URL:

http://URL地址/api/user/login

请求方式:

post

参数:

参数名必选类型说明

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

登录时间

参数及返回示例

af17c624c727f6a84b07839321e430a3.png

示例3:POST请求,添加Cookie

学生金币充值

简要描述:

学生金币充值接口,这个接口是为了讲添加cookie以及身份验证的

请求URL:

http://URL地址/api/user/gold_add

请求方式:

post

参数:

该接口有权限验证,需要admin用户才可以做操作,需要添加cookie

cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign

参数名必选类型说明

stu_id

int

学生id

gold

int

金币数量

返回示例

{

"error_code":0,

"msg":"充值成功!"

}

返回参数说明

参数名类型说明

error_code

int

错误编码,0为操作成功

msg

string

提示信息

请求参数及返回参数示例

f3dcdbeef7659bdf6c669d8efd1eac33.png

三、Jmeter接口测试 :jmeter 开源的java开发的一个压力测试工具。

为什么要使用JMeter

开源免费,基于Java编写,可集成到其他系统可拓展各个功能插件

支持接口测试,压力测试等多种功能,支持录制回放,入门简单

相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试

多平台支持,可在Linux,Windows,Mac上运行

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、放到第二个接口里面来用。

一、添加线程组 :

如下图所示,右击“测试计划”>添加>Threads(Users)>线程组。这里xmeter君需要解释一下“线程组”的意思:JMeter是由Java实现的,并且使用一个Java线程来模拟一个用户,因此线程组(Thread Group)就是指一组用户的意思,换句话说一个线程组就是一组虚拟用户(virtual users),这些虚拟用户用来模拟访问被测系统

25a0075a290dc5a7ab3f6d8b2a22920a.png

二、添加HTTP请求:加入实际被测页面

171adb023ae32b8ad2cdd61e4cc64516.png

服务器名称或IP:被测服务器的网站名字,也可以是IP地址。剩下的属性可以按照被测系统的属性按需配置

5ce397aa2a63c165e7f257e7489c9a7d.png

三 、用户定义的变量:

99294cbf73c265294eda2717bd625b2c.png

b20a4d5718771ebbeae56fa429c4f4a0.png

四,添加结果监听器:察看结果树 :来查看性能测试过程中请求和响应信息 ,你可以看到一些测试期间一些有用的信息,比如发送的请求的信息和响应数据等

5cf35c5262d7d1d8e946cd6d8009eafc.png

请求数据:HTTP请求的相关信息,有raw和HTTP两种类型展示。

响应数据:HTTP请求所得到的响应数据。响应数据有正确和错误。

4764db57ba654cd1171968832aa8fa60.png

五、HTTP信息头管理器

定义信息头,在其覆盖下的所有元件都会使用该信息头。例如定义在测试计划中的信息头,即该测试计划所有请求的信息头。比如添加Cookie

02be1950cfa2dfbe3040c2293facbfc2.png

c597d9bc741f783cad9fdcf1db315651.png

六.jp@gc - JSON Path Extractor插件,该插件可以应用到关联接口上

这个东西相当于正则表达式提取器

2b240c58b69e54d406cbb61694a06174.png

Destination Variable Name: 变量名,就是下个http请求需要用到的名字,相当于正则表达式提取器中的引用名称

JSONPath Expression: json表达式,这个是根据返回的json来写的。如图,例如后台返回的数据如下,那么取sign 的表达式就应该写成$.login_info.sign

第一个$是固定写法,后面用.和不同层级的字段名来表达取哪个字段。如果有多个相同的字段名,则在字段后面加上索引以区分,例如$.login_inf[0].sign

Default Value: 默认值,当没有取到值时的默认传入值。

01d4566715d8622e9210261e54ce95bf.png

七.参数化

a. 使用时间戳${__time(,)}

1bfb4c5aea6ecec0de0a3345cac45eeb.png

b.使用当前时间${__time(YYYYMMdd-HH:mm:ss,)}

236577d10c478d98511c0ed25b772212.png

c.随机数${__Random(,)}

c525f31762b682bd0788437ab1b3e21b.png

d.按顺序的${__counter(1,10)}

注:${__counter(,)}的初始值默认从1开始,设置起始值无效,设置结束值也无效。可以根据线程数控制。

e428ea6834e118c1bf43dac8ecbf1010.png

e.通过文件进行参数化

添加配置元件 CSV Data Set Config

27daa5d865a9e4a2a8955932218049ad.png

e37519fad3b202ea61c44f3b185b8640.png

示例文件:

ba3388dacced63652ef5fc77e2fd7516.png

00cf6154692c9165520250e79321478d.png

573ff35d7106c770a593e8232fb0a202.png

4cd4582f8a96a615b35a5cd3116f29f7.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值