接口测试
程序员文章站
2024-03-24 10:28:58
...
一.业务层面
1.字段是否必填(必填 or 非必填),要同时检查request和response
2.字段是否必要,从业务角度出发考虑,该字段是否需要保留
二.类型检查
关注常用类型:int, decimal, String, bool, 枚举等
(通过系统结构和数据流了解数据的流向、转换、落地)
1.类型使用是否正确(尤其是http接口):
使用String还是原始类型
2.枚举的常量选项是否正确
对于外部用户调用的接口,肯定不需要内部传递的枚举值
3.是否有校验
类型是否符合要求
精度是否符合要求
必填项是否有值
入参为null或者空字符串,有无检验
对于枚举值的传入,是否属于枚举列表中的值
4.长度
是否够长,超过部分是否截断还是发出警告
5.精度
是否符合要求,通常金额为2位小数
传输过程是否可以保证精度不会改变
得到的数据是否会自行调整精度(截断或者四舍五入不可取,应该直接校验传入的精度)
6.时间
该使用日期(2015-11-12), 还是时间(2015-11-12 14:00:00), 还是时间戳(1449849600000)
单位:【秒】还是【毫秒】
时区:服务器的日期是否会根据请求者的时区进行转换;或者在request中和response中直接带上时区信息
三.数据流转
数据在系统间的流转会发生一系列的变化,例如转换、封装、组装、丢弃等情况
现在列出一些场景:
数据库的读写(bean 与 数据库字段间的转换)
MVC中 数据的转换(网络数据 与 Model ,M与V ,M与data层,bean之间的转换 等)
后端与前端的兼容(touch ios adr pc)
不同类型接口的转换:dubbo http https
四.性能
[数据库]
数据库数据库读写,读写哪个比重更大?根据实际情况做读写分离,分表。
主从同步对于数据一致性的影响,写入后,多久可以使从库的数据同步完毕,从而拿到完整的数据
是否采用本地存储,比如历史浏览存储在用户手机端,不与服务器进行交互
[多线程]
代码是否需要多线程处理数据(考虑数据的完整性、一致性)
线程池根据业务量进行设置,确保系统稳定,同时能够在单位时间内处理尽可能多的业务
[Tomcat]
(http://jingyan.baidu.com/article/7f41ececf6b34d593d095cad.html)
JVM栈内存根据业务进行调优
更高版本的tomcat(e.g. tomcat7.0)支持监听内存泄漏
调整maxThreads加大并发请求数量
配置压缩,减少传输数据
[Nginx]
Nginx是否对静态文件做了缓存处理
是否开启了压缩
多台机器提供服务时,可根据机器性能,将量大的请求打到性能更好的机器上
需要支持上传文件时,需要根据业务实际,判断是否需要修改ng上传文件size的配置
检查接口是否需要ng对cookie进行处理(检查或者过滤)
[缓存]
机器内存的使用
memcache,redis的使用
[CPU]
判断是否是高CPU的服务,判断是否需要升级硬件配置
[http]
是否开启了压缩
五.协议
根据业务和性能选择合适的版本
1.协议的选择
TCP or UDP
http or RPC(Dubbo)
直连 or qmq
拉取 or 推送
2.协议的使用
长连接还是短连接
同步 or 异步
实时 or 延迟
六.通用测试
[安全测试]
[功能测试]
七.监控
对接口的调用情况进行监控
1.接口类型
调用外部接口的监控
对外提供的接口的监控
2.监控指标
调用的总次数、成功次数、失败次数、qps 等
成功率、失败率
各种指标的汇总,对比等
3.根据业务加阈值和报警
失败的阈值,要考虑严重性以及是否有参数错误导致失败的情况,进行阈值设置
成功的阈值,要考虑量起来后对系统的压力
下一篇: 架构之:软件架构漫谈