接口测试01
一:接口的定义:统称为API,程序与程序之间的对接,又称为灰盒测试,偏逻辑测试
为什么做接口测试:当界面功能没有出来时,测试人员可以尽早做接口测试,可以节省时间,可以突破前端的一些限制测试不到的场景
二:测试接口主要测哪方面:
前端和后端:测试前端显示后端的数据是否正确
系统内部的组件:测试相关逻辑是否处理正确
系统与系统之间(内部与外部)测试相关联的逻辑处理是否正确
三:为什么要做接口测试(接口测试的好处)
1.接口通过工具来测试,它可以发现我页面发现不了的问题
2.可以检查系统异常处理能力
3.在接口测试完备的情况,页面改动不会影响后端的功能
4.可以检查系统的安全性,稳定性
5.可以模拟多用户或者单用户对同一个接口发起并发请求操作
6,可以修改参数,突破前端对接口的入参的限制,利用各种条件组合对接口进行测试
四:如何设计接口用例
1.业务逻辑覆盖(包括正常,异常场景)
2.参数的验证-------边界,等价
2.1、参数的类型要求(数字,浮点型,字母、符号、空格、日期)
2.2、参数的长度、取值范围
2.3、日期格式
2.4、参数的配合说明,有些参数会与其他参数存在关联
2.5、参数是否必填
3.数据的验证=====返回的参数数据要与数据库的数据是否一致
4.性能测试(响应时间、吞吐量、并发数、资源要求)
5.安全测试(权限验证、SQL注入、病毒)
6.翻页器中翻页页码和页面是否一致
7.同一个请求不同时间操作返回的内容是不是一样
8.接口中包含图片或者视频检查是否被压缩
五:TCP/IP的五层协议模型
物理层-数据链路层-网络层-传输层-应用层
传输层中的TCP和UDP有什么区别:
1.连接方面的区别:
TCP面向连接(在传输的时候需要建立连接),建立的过程是三次握手和四次挥手
三次握手:客户端请求连接---服务端确认---客户端确认---可以开始连接
四次挥手:客户端请求断开---服务端同意----服务端释放连接---客户端确认断开---byebye
UDP是无连接(在传输的时候不需要连接)比如:广播,音频
2.传输效率方面
TCP传输效率较低,适用于要求比较高的内容传输
UDP效率较高,适用于要求内容和实效性较高的通信或者广播
3.安全方面
TCP传输数据是无差错、不丢失、不重复、按照先后顺序传输
UDP只是尽最大努力交付,不保障可靠交付
六:http和https的区别:
1.http是超文本传输协议,默认端口号是80
https是超文本传输安全协议,默认端口号是443
2.传输内容:
http不加密传输
https加密传输
3.安全性
http连接简单,没有状态,明文传输,不安全
https采用http+SSL/TLS协议加密传输、安全
4.http免费
https需要申请ca整数,需要付费
七:常用的接口测试工具:
单接口:fiddler 、 postman、 jmeter soapui
接口自动化:fiddler、postman、jmeter、python、java
八:请求头
1.接口请求方式:post 接口的域名Host: cms.duoceshi.cn
接口名称:/cms/manage/loginJump.do
域名加接口名称就是接口地址:http://cms.duoceshi.cn/cms/manage/loginJump.do
HTTP/1.1:请求协议版本号
Connection: keep-alive 保持连接状态
Content-Length: 33 请求信息正文的长度
Accept: application/json, text/javascript, */*; q=0.01 接口可接受的MIME类型
X-Requested-With: XMLHttpRequest 使用什么格式的请求
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.60 Safari/537.36 浏览器的类型
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 传输文件的类型
x-www-form-urlencoded:表示表单类型
Origin: http://cms.duoceshi.cn 本地域名网址
Referer: http://cms.duoceshi.cn/cms/manage/loginOut.do 包含一个URL。表示该接口的上一个接口
Accept-Encoding: gzip, deflate 浏览器能够解释的编码格式
Accept-Language: zh-CN,zh;q=0.9 浏览器能够解释的语言
Cookie: JSESSIONID=2FFBA8A84A3106EA8995DA85A636A27F 请求时服务器生成的一个标识
九:请求体===请求参数--以键值对存在的
userAccount=admin&loginPwd=123456
十:响应头
HTTP/1.1 200 请求协议版本号 200===状态码(代表请求成功)
Server: nginx 服务器
Date: Mon, 27 Mar 2023 09:01:58 GMT 时间
Content-Type: application/json;charset=UTF-8 传输文件类型和编码格式
Connection: keep-alive 保持连接状态
Set-Cookie: JSESSIONID=EB8A2B91632F9B7569B0A861E2DD9C00;path=/cms;HttpOnly
请求时服务器生成的一个标识Set-Cookie
{"code":"200","msg":"登录成功!","model":{}} 响应体(返回参数) json格式
十一:接口的状态码:
2xx 表示接口请求成功,服务器有响应
3xx 表示重定向,访问的接口不存在但是重定向到其他接口去了
4xx 表示客户端错误,客户端请求的url地址错误或者请求的资源不存在,常见的报错状态码有403,404
5xx 表示服务器端错误,应用场景,网关错误,服务器端异常等
十二:post和get请求的区别
1.url可见性:
get,参数url可见
post,url参数不可见
2.数据传输上:
get,通过拼接url进行传递参数
post,通过body体传输参数
3.缓存性:
get请求时可以缓存的
post请求不可以缓存
4.后退页面的反应:
get请求页面后退时,不产生影响
post请求页面后退时,会重新提交请求
5.传输数据大小:
get一般传输数据大小不超过2k-4k(根据浏览器不同,限制不一样,但是相差不大)
post请求传输数据大小根据php.ini配置设定,也可以无限大
6.安全性:
get参数在url可见,安全性比较低
post参数放在body,安全性比较高
十三:postman组件get请求,或者说get请求是怎么样的?
1.请求方式get
2.网址写入接口url
3.在params输入入参
4.发送send请求
5.查看响应的报文(响应头和响应体)
十四:postman组件post请求,或者说post请求是怎么样的?
1.请求方式post
2.网址写入接口url
3.在body输入入参(有form表单,text文件,josn文本)
4.发送send请求
5.查看响应的报文(响应头和响应体)
post请求中的body传参表单和row的不同点
1.表单格式有form-data,可以传文本键值对和文件,当选择这种方式,请求头的Content-Type自动回转成application/x-www-form-urlencoded
2.表单格式有x-www-form-data,可以传文本键值对和文件,当选择这种方式,请求头的Content-Type自动回转成application/x-www-form-urlencoded
3.raw可以传文本,json格式文本html格式文本,xml格式文本,当选择json方式后,请求头的Content-Type会自动化转化成application/json
4.binary可以传内容是二进制的文件
十五、同步接口和异步接口
1、同步接口:发起一个接口请求必须要等到响应结果才能发起下一个接口请求
2、异步接口:发起一个接口请求不需要等到响应结果就能发起下一个接口请求