新增一个接口的时候如何考虑它的测试点?
不需要死记硬背,要理解为什么要测这个点,那就站在使用者的角度考虑,我想要什么样的接口?
存在即有其存在的道理~
1、这个接口提供的功能 是否完全满足 我想要的功能?
——测试所有我需要的功能点(可以用postman)
2、这个接口稳不稳定,会不会挂掉,挂掉之后会不会影响我的功能?可能有以下几种情况:
a. 我给的请求参数
它会不会没做判断?
——测试所有我可能会传的异常点
(多参数、少参数、空参数、错误参数、特殊字符等)(可以用postman)
b. 我给的请求量太大,它能不能扛得住?
——压力测试一段时间内,分不同进程给它发送大量请求,不断用不同的数值测试,看下最大的情况下,它能支撑每秒多大的请求量(可以使用httpload,比较简单)
3、这个接口的反应时间不会很长吧?我得等多久才能有结果回来?太久我肯定不能等的
——压力测试一段时间内,每秒发送较大量的请求,
不断用不同的数值测试,看下最大的情况下,它维持在多少秒?(可以使用httpload,比较简单)
4、这个接口是不是安全的?会不会被人劫持?是否有敏感信息返回的时候会被人看到?
——敏感信息加密
=========补充详细接口测试的点============
1、功能:
1)业务逻辑(不同的业务不同的逻辑,根据业务点制定)
2)参数校验
(1)输入正常参数,根据业务点对比接口此时应该返回的正确结果,与接口返回数据进行校验
(2)输入非正常参数
a. 输入空参数或不传入参数
b. 输入不符合系统定义的参数,例如:userName超长(假定数据库定义为25字符,则需要测试26及以上256之类的)、username包含特殊字符(假定username必须为数字和字母,则需要输入@、&、转义字符、只有字母或只有数字等)
c. 输入非userName的参数,例如:小写的username 或者 aaa、userName+其他参数
d. 构造特殊返回的参数,检测”和’符合在返回结果中的处理是否正确,例如:昵称里包含’或”或<或者@等
e. 构造重复的数据,例如数据库里包含两条username相同的,看返回值(上线接口要检测筛选数据是否存在重复项)
f. 返回不正确的Json格式,例如:缺少{
g. 使用GET方法提交,是否能返回结果,返回属于缺陷
h. Review代码逻辑,测试特定的功能分支(例如是否有判定用户有效的)
I. Ajax决定了返回的值可能非同步的,需要Selenium类似的工具去自动不停获取接口是否有异步返回
2、性能:
1)响应时间
2)吞吐量
(1)返回数据过多时,接口平均返回时间
(2)接口被调用的频次,如果过于频繁是否有缓存机制
3、安全:
1)SQL注入、XSS攻击
2)越权
(1)访问限制:403权限限制、内外网受限、iptables黑白名单、机器范围、服务器还是客户端
(2)Xss和钓鱼、redirect
(3)Sql注入
(4)返回结果是否有敏感及用户隐私数据——如果是客户端访问则需要处理
(5)返回包含是否需要加密
4、异常:
(1)网速限制
(2)服务端异常(例如:依赖服务crash、服务端网络断掉、超时)
阅读(946) | 评论(0) | 转发(0) |