在我们学习接口测试之前首先需要知道两点,什么是接口?HTTP协议的请求过程和请求方法?
一、什么是接口?
接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。
系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,
从而达到数据共享的目的,比如说咱们用的app、网址这些它在进行数据处理的时候都是通过接口来进行调用的。
程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交
互,它就会抛出一个接口,供内部系统进行调用。
总之,接口就是从数据库里面取数据库、插入数据。
二、关于HTTP协议
2.1 HTTP协议用于客户端和服务端之间的通信。
请求访问文本或图像等资源的一端称为客户端,而提供资源响应的一端称为服务端。
注:应用HTTP协议时,必定是一端担任客户端的角色,另一端担任服务端的角色。
2.2 使用方法下达命令
方法的作用在于,可以指定请求的资源按期望产生某种行为。常用的方法有GET和POST。
关于POST和GET方法的区别:
1、get请求只有请求头,没有请求体,它的参数是写在url里面;
2、get请求一般用来向服务器获取数据,post请求呢用来向服务器发送数据;
3、get请求有参数长度限制,post请求没有;
4、get请求没有post请求安全;
三、常用的接口测试工具
常用的接口测试工具主要有Postman和Jmeter。
Postman提供的功能相对比较简单,可以模拟和发送HTTP请求,并返回接口的数据。
Jmeter相比Postman功能更加强大,Jmeter提供用例的批量执行、接口返回结果的断言以及测试报告的生成等,主要用于测试接口的性能,验证接口处理并发的能力。
我们先启动Jmeter,写一个简单的接口测试脚本,这里使用的是Jmeter5.0+1.8JDK(环境配置就不在此讲述了)
1、右击【测试计划】,添加一个线程组(添加——线程——线程组)
右击该线程组,选择取样器——HTTP请求
右击该线程组,选择监听器——查看结果树
2、 点击【启动】运行该脚本,查看响应数据
刚刚完成了一个基础的接口测试脚本,使用的方法是GET方法,而实际上GET请求,不需要借助任何的工具,在浏览器里面就可以发请求。
下面我们使用POST请求做一个登录接口的脚本。
注:除GET请求外,其它请求方法都需要借助工具来实现
还需注意的一点,如果我们添加多个HTTP请求且它们的域名或IP一致时,可以用HTTP请求默认值
当请求的入参方式为key-value时,我们选择底部的【参数】上传即可
入参是json类型时,选择底部的【消息体数据】
如需上传文件,选择【文件上传】
点击【察看结果树】,查看登录接口返回的响应数据
通过上面的两个脚本我们学会了POST和GET请求,那么新问题又来了,如果我再加一个请求,此请求的参数需要用到上面请求的响应数据,那这个脚本该如何去做呢?
示例:学生金币充值接口,这个接口是为了讲添加cookie以及身份验证的,该接口有权限验证,需要admin用户才可以做操作,需要添加cookie,cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign
具体思路:
1、先登录具有admin权限的账号,获取响应数据中的sign,即seesionid,
2、从查询学生信息的接口里面随便找一个学生的stu_id
3、然后把获取到的sign信息和stu_id传入金币充值的接口
在学生金币充值下,添加一个HTTP信息头管理器,名称:cookie,值:登录用户的账号=sign
这里也可使用HHTP Cookie管理器,但不推荐使用
点击【启动】,运行该脚本,我们可以看到,该学生的金币显示为200,充值前为100。
那么问题来了,如果切换登录的用户呢?或者对登录用户进行参数话,那么我们是否每次都要重新添加一次SessionID呢,答案是否定的,我们可以使用Json提取器(因为接口返回的数据是Json格式)来获取SessionID,获取后把sign传入到学生金币充值的HTTP信息头管理器中
查看金币是否充值成功
标签:HTTP,请求,登录,GET,接口,充值,测试,自动化 From: https://blog.csdn.net/weixin_40702604/article/details/143754281