一、移动端接口协议
1.1 移动端常用的接口协议
Http 协议。
目前大部分移动端与服务端之间都是通过 HTTP 协议进行数据交互的。
4种操作方法。
Http 的 Get、Post、Put、Delete 方法
1.2 Http 协议的组成
Http 协议是一个应用层的协议,是一种网络交互需要遵守的一种协议规范。
-
Http协议组成
- 请求(Request)
- 响应(Response)
- 以及相应的信息头(Request Header 和 Response Header)。
-
Http传输
- 在 Http 传输中,我们都是 通过 URL 来寻找网络资源的。
-
Http URL 格式:http://host:port]path][
- http 表示要通过 HTTP 协议来定位网络资源;
- host 表示合法的 Internet 主机域名或IP地址;
- port 用于指定一个端口号,如果为空,则使用缺省的端口 80;
- path 指定请求资源的具体地址。
1.3 Http 请求过程
1.3.1 Http 请求格式
向服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息,由3部分组成:
-
请求方法、URI 协议、版本;
-
请求头(Request Header);
-
请求参数。
如下截图所示:
其中:
URI:纯粹是一个符号结构,用于指定构成Web资源的字符串的各个不同部分。
URL:是一种特殊类型的URI,它包含了用于查找某个资源的足够的信息。
Cookies:可以理解为客户端保存信息的一种机制,用于记录一些信息,也是实现session的一种方式。
Session:可以理解为在服务端保存一个数据结构,可以用于某些状态或属性。
1.3.2 Http 响应格式
接收到服务器响应信息也由3个部分构成,分别是:
其中,常见状态代码、状态描述:
200 OK:客户端请求成功。
400 Bad Request:客户端请求有语法错误,不能被服务器所理解。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
404 Not Found:请求资源不存在。
500 Internal Server Error:服务器发生不可预期的错误。
1.3.3 Http 请求过程
1、连接:建立一个 socket 连接;
因为 socket 是通过 ip 和端口建立的,在这之前还会进行 DNS 解析将域名解析成对应的 ID 地址。
2、请求:连接成功后,向服务器发送 GET/POST 请求。
GET, 一般用于获取信息。请求数据会放置在 HTTP 协议头中,以 ? 分割 URL 和传输数据,多个数据以 & 相连。参数受限于 URL 长度,不同浏览器有不同的长度限制。
POST,一般用于向服务器提交数据,以 FORM 表单的形式。没有大小限制。
GET 参数通过 URL 传递,POST放在Request body中。
3、响应:服务器收到这个请求,进行处理,再将响应数据传送回客户端。
4、关闭连接:响应结束后,客户端与服务器断开连接,以保证其它客户端与服务器建立连接。
Tips:99%的人都理解错了HTTP中GET与POST的区别
二、接口测试
2.1 接口测试主要关注点
- 业务逻辑
全业务逻辑覆盖
-
响应结构
-
数据格式
-
数据正确性
依据数据来源:查数据库或服务端和接口返回值做比较
2.2 用例设计—参数要考虑的
- 请求参数必选或选填
例:参数缺失服务端是否正常解析
- 输入合法、非法参数
例:服务端只接收 int 类型,传递了 String 类型
- 请求参数边界值
例:存储长度10位,传参大于10位,接口是否处理
- 请求参数逻辑分支
例:type=1 查询北京、Type=2查询天津
- 与服务端是否存在附加协议
例:交互过程中服务端需要验证 head 中的数据、或者是否有加密协议
2.3 用例设计—结果要验证的
- 异常请求处理
- 请求头协议
- 响应结构
- 所有value值的正确性、有效性
- 数据库交互是否生效
- 列表排序
- 分页属性
- 存在业务关联的是否生效
2.4 用例的管理与维护
- 功能测试模式:为了更快速会选用EXCEL、思维导图进行用例管理。
- 自动化测试模式:使用测试脚本进行管理。
2.5 测试工具及框架
- 工具:
Fiddeler、Charles、Postman、 Json-handle插件、 Json.cn、 ......
其中 Postman 类似于我司的 mock 工具。
- 框架:
Soapui、Robot framework、Httpclient、Rest assured、Swagger......
2.6 接口测试框架的选型
推荐使用Rest assured框架进行接口测试,语法足够简单,编写测试用例速度快,而且还 供了相应的断言机制、json验证以及封装了相关jsonpath、xmlpath,使接口测试更加方便快捷。
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>3.0.2</version>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>xml-path</artifactId>
<version>3.0.1</version>
</dependency>
2.7 示例
Get: 发起请求 + 基本解析;
Post:发起请求 + 基本解析;
基于Excel的数据驱动:Excel 读取 + 执行结果写入。
rest-assured使用文档参考文章:rest-assured中文文档