本文转自:
http://www.aikaiyuan.com/6324.html
https://www.jianshu.com/p/8d3fb56b0de9
https://www.cnblogs.com/qiang07/p/9304771.html
1. GET请求和POST请求的区别是什么?
GET请求:用于信息获取,相对而言是安全和幂等的;在做数据查询时,建议用GET方式,如商品信息接口、搜索接口、博客访客接口...
POST请求:表示可能会修改服务器上资源的请求;在做数据添加、修改时,建议用POST方式。如:上传图片接口、登录注册接口...
2. HTTP接口的请求类型有哪些?
> 查询字符串参数(Query String Parameters):一般用于GET请求,以URL的形式进行传递
> 请求体参数(Request Body):一般用于POST请求,可以使用content-type(获知请求中的消息主题是用何种方式编码,再对主题进行解析。)
a. application/x-www-form-urlencoded:
b. multipart/form-data:使用表单上传文件时,必须让form的 encrypted 等于这个值
c. application/json: 用来告诉服务端消息主题是序列化后的JSON字符串。特别适合RESTful的接口。
d. text/xml: 一种使用HTTP作为传输协议,XML作为编码方式的远程调用规范。
==>HTTP请求报文:请求行、请求头、请求体。
例如请求数据:
1 GET/sample.jspHTTP/1.1 : 第一行为http请求行,包含方法,URI 和http版本。
2 Accept:image/gif.image/jpeg,*/*
3 Accept-Language:zh-cn
4 Connection:Keep-Alive
5 Host:localhost
6 User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
7 Accept-Encoding:gzip,deflate8 : 2-7为请求头,包含浏览器,主机,接受的编码方式和压缩方式
8 : 第8行表示一个空行 表示请求头结束 这个空行是必须的
9 username=jinqiao&password=1234 :第9行是数据体,比如是需要查询的信息。
> 请求头(key value形式)
User-Agent:产生请求的浏览器类型。
Accept:客户端可识别的内容类型列表。
Host:主机地址
> 请求数据
post方法中,会把数据以key value形式发送请求
> 空行
发送回车符和换行符,通知服务器以下不再有请求头
==>HTTP响应报文(状态行、消息报头、响应正文)
比如:HTTP/1.1 200 ok
分别表示http版本 + 状态码 + 状态代码的文本描述
状态码:
1xx指示信息–表示请求已接收,继续处理
2xx成功–表示请求已被成功接收、理解、接受
3xx重定向–要完成请求必须进行更进一步的操作。
4xx客户端错误–请求有语法错误或请求无法实现。
5xx服务器端错误–服务器未能实现合法的请求。
状态行是由:HTTP-Version+Status-Code+Reason-Phrase
比如:HTTP/1.1 200 ok
分别表示http版本 + 状态码 + 状态代码的文本描述
状态码:
1xx指示信息–表示请求已接收,继续处理
2xx成功–表示请求已被成功接收、理解、接受
3xx重定向–要完成请求必须进行更进一步的操作。
4xx客户端错误–请求有语法错误或请求无法实现。
5xx服务器端错误–服务器未能实现合法的请求。
响应头:包含服务器类型,日期,长度,内容类型等
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:13:33 GMT
Content-Type:text/html
Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
Content-Length:112
响应正文:就是服务器返回的HTML页面或者json数据
3. 接口测试用例的编写要点有哪些?
1)必填字段:请求参数必填项、可选项
2)合法性:输入输出合法、非法参数
3)边界:请求参数边界值等
4)容错能力:大容量数据、频繁请求、重复请求(如:订单)异常网络等的处理
5) 相应数据校验:断言、数据提取传递到下一级接口...
6)逻辑校验:如两个请求的接口有严格的先后顺序
7)性能:对接口模拟并发测试,逐步加压,分析瓶颈点
8)安全性:构造恶意的字符请求,如SQL注入、XSS、敏感信息、业务逻辑
4. 如何从上一个接口获取相关的相应数据传递到一个接口?
先从上一个接口中的相应数据获取对应的返回值,然后使用正则表达式or或使用JSON解析来提取需要的获取的值,然后存储在一个变量中,最后在下一个接口中直接引用该变量。