接口安全、接口文档和用例设计
接口安全
数据加密
为了安全
-
对称加密
概念:加密和解密使用同一个密钥的加密算法
优点:加解密的速度快
缺点:安全性相对较低
常用算法:AES,DES
-
非对称加密
概念:加密和解密使用不同密钥的加密算法。双方要进行数据交换,先交换公钥,使用的一方用对方的公钥加密,另一方使用私钥解密。公钥是可以公开的,但是私钥必须自己保留。
优点:安全性相对较高
缺点:加解密速度比对称加密慢很多
常用算法:RSA,DSA
3.哈希加密
-
概念:一种单项算法,根据目标信息生成一串固定长度的唯一哈希值,但是通过这个哈希值是无法反推出目 标信息
使用场景:1. 不可还原的密码存储 2. 数据完整性校验
常用算法:MD5,SHA
4. 对称加密和非对称加密的对比
1. 对称加密只有一个密钥,非对称加密有两个密钥,一个公钥用作加密,一个私钥用作解密
2. 对称加密加解密速度快,非对称加密速度相对较慢
3. 对称加密安全性较低,非对称加密安全性相对较高
用户认证
-
基本认证(Basic Auth):用户发送请求时同时发送账号和密码,这是最基本的认证方式
-
摘要认证(Digest Auth):密码不使用明文传输,而是使用摘要算法进行加密,通常使用MD5加密算法。服务器接收到加密密码之后,通过相同算法计算出摘要值进行比对认证
-
OAuth:用户允许第三方应用程序访问用户在某一网站的私密信息(头像,地址,图片,视频),而不用将账号和密码发送给第三方
OAuth过程:四个角色:用户,客户端(第三方程序),认证服务器,资源服务器
- 用户使用客户端,客户端要求授权
- 用户同意授权
- 客户端通过上一步的授权,向认证服务器申请令牌(access_token)
- 认证服务器在确认过客户端身份之后,同意发放令牌
- 客户端使用令牌,向资源服务器申请获取资源
- 资源服务器确认令牌有效,同意向客户端开放资源
数字签名
服务器给客户端一个字符串,以后每次客户端的请求都需要携带这个字符串(http://www.baidu.com/s?kw=2&232=23&sign=签名字符串).服务器每次接收到客户端的请求,都会去验证这个签名字符串,如果说签名字符串不存在或者错误,那么就不处理这个请求。数字签名起到一个鉴权的作用,保证请求来自合法客户端。
接口文档和用例设计
为什么说接口测试比UI测试重要?
- 可以更早发现问题:后端开发完成提测之后,接口测试就可以开始;但UI测试需要等到前后端对接完成才能开始测试
- 能发现更加底层的问题:可以构造不同的测试数据和测试条件进行测试,覆盖面更广
- 稳定性更高:接口在开发完成后不会轻易改变,方便接口自动化工作的开展;UI测试稳定相对较差,因为面临着前端页面频繁的改动
接口文档
- 接口描述:说明接口的功能
- 请求的URL
- 请求的方式
- 请求参数(查询参数,请求正文)
- 名称
- 类型
- 是否必填
- 描述
- 请求头
- 名称
- 类型
- 是否必填
- 描述
- 返回值
- 数据结构:字符串,HTML,JSON
- 示例数据
- 错误码:错误描述信息
- 其他
接口文档来源
通常是由产品和后端开发人员提供
测试的重点
- 测试接口的功能
- 测试接口的容错性和健壮性
- 测试接口的安全
- 测试接口的性能
接口用例设计
- 编号
- 标题
- 请求方式
- 请求URL
- 请求参数
- 响应码
- 响应正文
接口测试工具
- 接口测试工具:模拟发送HTTP请求,获取响应结果,人工去验证结果
- fiddler:创作者标签
- postman
- 接口自动化测试工具:可以批量执行,对结果进行断言,生成测试结果报告
- requests + unittest
- JMeter
- 接口性能测试工具:测试高并发场景下接口的性能
- JMeter
- loadrunner
一般的测试方法
- 输入参数测试
- 输入参数合法
- 输入参数不合法
- 输入参数为空
- 输入参数超长
- 返回值测试:不同参数条件下接口的返回值是否与文档描述一致
- 关注重点
- 协议:HTTP,Socket,TCP
- 请求方式:GET/POST/PUT/DELETE
- 数据格式:XML/JSON/form-data
- 实现方法:
- 工具
- 代码