一、接口测试
1、什么是接口?
硬件接口:USB接口(作用就是外部设备和电脑交换数据)
软件接口:统称为API,比如微信提现的接口,充值接口。
内部接口:开发人员自己开发的接口对自己的系统提供数据交互。(模块之间)
外部接口:开发系统调用外部的接口。(调用微信接口、支付宝接口等)
总结:接口就是软件提供给外部的一种服务,主要是用于交互数据。
2、为什么需要接口?
接口能够让内部的数据被外部进行修改。
3、为什么要做接口测试?
1)项目都是前后端分离(mock server)
2)基于安全考虑:前端的JS认证很容易绕过直接攻击后端接口,身份证,银行卡,金钱交易(接口鉴权)
3)测试左移
二、接口以及接口测试本
质
接口的本质是:函数,动作。
接口测试的本质就是:测试接口(函数)能否正常实现数据交互,异常场景,权限控制。
三、接口返回的数据格式
1、json格式
开发规则:{error_code:0,message:返回说明,data:返回数据}
error_code:错误码,0表示成功,错误码40001
message:错误码的中文说明
data:接口具体的返回数据
json只包含两种数据格式:
1) 键值对{key:value}
2) 数组[arr1,arr2,arr3]
2、html格式
3、xml格式
四、市面上接口架构
SOAP架构:webservice协议。接口地址:http://………...?wsdl
wsdl 表示 web service dictionary language
RPC架构:dubbo协议。接口地址:dubbo://开头
SpringCloud技术微服务。
RestFul架构:http协议。http://……….
面试题1:你对http协议了解吗?
回答技巧,超出面试官的预期:
http协议是超文本传输协议,主要作用是用于浏览器和服务器之间交互数据,交互数据分为请求和响应两部分。
1)
请求:
请求行(请求方式,请求地址,协议版本),
请求头
Host:请求的主机
Connection:keep-alive 保持活跃
Content-length:内容长度
Accept:客户端接收的数据格式:application/json
X-Requested-with:XMLHttpRequest(异步请求,一般用于登录)
User-Agent:客户端的类型
Content-Type:客户端请求的数据格式,x-www-form-urlencoded,
Cookie:cookie信息,服务器返回给客户端并且保存的cookie信息
请求正文
2)响应:
响应行(状态码),
响应状态码:
Successful -2XX:成功类,行为被成功地接收、理解和采纳
1)200 OK
服务器成功返回用户请求的数据
往往为了简化处理
POST创建成功后应该返回201的 创建
2)304 重定向
3)404 NOT FOUND
找不到资源
4)500 INTERNAL SERVER ERROR
服务器内部错误
最常见的原因是:服务器挂了
比如你传递参数中有些参数是空,而导致后台代码无法解析,出现异常而崩溃
响应头(Set-Cookie)
响应正文(响应数据)
面试题2:Cookie,Session,Token的相同点和不同点
相同点:都是服务器产生的。
不同点:Cookie保存在客户端,Session保存在服务器内存,Token保存在服务器的数据库或者文件里边
五、真实企业接口测试流程
1、拿到API接口文档(抓包),熟悉接口业务流程,接口地址,鉴权方式,入参,出参,错误码
2、编写计划和方案
3、编写接口用例并且评审
4、执行接口测试
5、输出接口测试报告
六、接口测试工具
Postman的实用
showdoc,swagger 接口文档项目。
接口测试工具:
postman,jmeter,soupui,apipost,fiddler,charles
Postman安装方式:
1.通过谷歌浏览器的扩展程序。(不推荐,需要翻墙)
2.下载安装包安装。 .exe或.dmg
七、Postman界面功能
1.请求页面
params:get方式传参
Authorization:鉴权
headers:请求头
Body:
Post方式传参:
none:没有参数
form-data:表单传参(可以传键值对文件)
X-www-form-urlencoded:传键值对
raw:text,json,html,xml,javascript
binary:传二进制文件
Pre-request-Script:请求之前的脚本
Tests:请求之后的断言
状态断言
业务断言
Settings:设置请求的一些信息
Cookie:用来自动化管理cookie信息。
Documentation:对请求的中文说明。
Comments:接口的备注信息。
Code:导出接口自动化脚本。
Info:创建接口的一些信息。
Related collections:
2.响应页面
Body:返回的数据格式
Pretty:JSON,XML,HTML,Text,Auto
raw:文本
preview:网页
Cookie:响应的cookie信息。
Headers:响应头
Test Results:断言结果
Status:响应码
Time:响应时间
Size:响应的字节数
Save Response:保存响应数据
3.Console,
控制台
控制台,必用,主要用于接口调试。
面试题3:get请求和post请求的区别?
1.get请求一般是获取数据,post一般是提交数据。
2.post比get安全
3.本质的区别:传参方式不一样
get在地址栏之后以?方式传参,多个参数之间用&相隔
post请求是通过表单传参
工作中的token是自己发get请求获取还是开发给的文档里面有?
1.开发给的文档里有 开发可能会给,有这种情况,很少
2.发get或post请求获取。
3.调用登录接口获取。
作业:接口测试工具postman实用post传参时最主要的四个传参选项名称以及对应的传参类型是什么?
Post方式传参:
form-data:表单传参(可以传键值对文件)
X-www-form-urlencoded:传键值对
raw:text,json,html,xml,javascript
binary:传二进制文件