一、Get请求与Post请求的区别
1.get请求没有请求体,post请求有请求体
2.get请求的参数(需要传递的数据)要放在URL中发送。大小有限制
post请求的参数可以放在URL后传递,也可以放在请求体中(大小不受限制)
3.Get安全性相对较差。
a.参数文明
b.数据会被浏览器缓存
4.设计的用途不同。
Get用来查询—不操作数据,参数量小
Post用来插入、更新数据--安全要求高,数据量大
--Get像轿车,能送货,但能力有限
--post像货车,有货箱(请求正文)。运输量大且安全性高。
二、接口的分类
网络服务接口的分类
1.Restful API:全名为表现层状态转化
资源(Resources),URL(统一资源定位)指向它HTTP协议里面,四个表示操作方式的动词:Get、post、put、delete,改变资源的状态。
2.web service:用XML来定义一个接口的信息(接口的方法、调用方式、参数说明)用一个文件来描述WSDL
SOAP协议:请求和响应的数据载体也是XML;请求和响应要按照一定的规则进行封装——信封;底层也要借助于各种网络协议传输(最常见的绑定http协议)。
二、HTTP协议基础
1.定义:超文本传输协议;应用层协议。无状态。标准的客户端服务器模型。由请求和响应构成。
URL结构
http://host[":"port][abs_path]
http表示要通过HTTP协议来定位网络资源
host表示合法的Internet主机域名或者IP地址
abs_path指定请求资源的URL
2.HTTP请求结构
请求行:请求地址、协议的版本、请求方法名
请求报文头:以明文的字符串格式传送,以冒号分隔的键/值对请求头部通知服务器有关于客户端请求的信息。
User-Agent、Accept、Accept-Encoding、Content-Type
请求正文:数据内容
四种格式:
1)application/x-www-form-urlencoded
对数据进行序列化处理,以键值对形式key1=value1&key2=value2的方式发送到服务器
2)multipart/form-data,将表单中数据全部上传,包括文件
3)字符串文本格式:raw
text/plain 纯文本。浏览器不解析
text/html html。浏览器自动解析
text/xml 或application/xml 后者可指定编码格式
application/json:消息主体是序列化的JSON字符串
4)二进制格式:binary
3.HTTP响应结构
1)响应行:HTTP-Version表示服务器HTTP协议的版本
Status-Code表示服务器发回的响应状态码1 2 3 4 5
2)响应报文头:以明文的字符串格式传送,以冒号分隔的键/值对响应头部通知客户端有关服务端的应答信息Server、Content-Type......
3)响应正文:待测试的数据
html--文本检索、样式内容浏览器检查
xml、json--解析后获取关键数据
三、接口测试说明
1、流程:输入数据->发送请求->输出结果->获取响应->检查响应
特点:端到端测试;重点通过不同的输入数据组合,检查数据的传输:测试业务逻辑、测试数据库读写、覆盖代码分之。
2、为什么做接口测?
1.弥补传统UI测试的不足:
1)很多系统没有界面,只提供接口,无法通过界面的方式进行测试;
2) 你只测了前端页面可以测试的功能,服务端的功能你又覆盖了多少?
服务端的所有的功能接口都正常吗?每个接口返回的每个字段是否正确?绕过前端的校验,接口是否有必要的异常处理(长度、非空)?当APP的代码不更新,而服务端代码更新时,直接通过接口自动化测试就能快速知道是否影响APP的功能。
3)安全方面--1'OR'1'='1
接口返回的字段中是否包含多余的信息(比如用户ID,token等敏感字段)用户密码、其他用户隐私信息传输时都需要进行加密后传输;接口是否存防刷限制
3.怎么设计接口测试用例?依据API文档
a.类似于黑盒功能测试,区别在于:通过参数组合覆盖代码逻辑,理论上来说,对于单个接口要覆盖到所有正常和异常分支等价类划分、边界值分析、错误推算法
b.性能测试:压力测试、稳定性测试
c.接口安全测试:加密规则、策略性规则、xss攻击/sql注入
4.对于响应结果如何验证?
a.验证接口响应状态码码200
b.响应报文是否包含关键信息比如userid=10
c.响应报文关键字段是否存在
d.响应报文关键字段,是否正确:格式->调用其余接口查询->查询数据库