接口测试之what、why、how(一)

毕业后就开始做软件测试工作,一直想把自己工作中遇到坑、实践以及经验进行总结,但苦于知识、能力有限,无法深入,就一推再推,至今也没开始。“不管你怎么准备,永远都不会有准备好的那一天。所以准备好了再做其实是一个很坑爹的思维。不管你如何准备,如果没有行动,永远都不会都准备的那一天”,开始一点一点的做,去完善。

主要摘自(https://blog.csdn.net/jiary5201314/article/details/51429347)

从what、why、how去梳理接口测试

什么是接口测试(what)

        接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

为什么要做接口测试(why)

 前端+接口测试双保险 
    安全层面:
            a、现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
            b、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
 
   测试前移:如今系统越来越复杂,传统的靠前端测试已经大大降低了效率,而且现在我们都推崇测试前移,希望测试能更早的介入测试,那接口测试就是一种及早介入的方式。例如传统测试,你是不是得等前后端都完成你才能进行测试,才能进行自动化代码编写。 而如果是接口测试,只需要前后端定义好接口,那这时自动化就可以介入编写接口 自动化测试代码,手工测试只需要后端代码完成就可以介入测试后端逻辑而不用等待前端工作完成。
 
        自动化测试: 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。
接口测试的策略
  接口测试也是属于 功能测试,所以跟我们以往的功能测试流程并没有太大区别,测试流程依旧是:1.测试接口文档(需求文档) 2.根据接口文档编写 测试用例(用例编写完全可以按照以往规则来编写,例如等价类划分,边界值等设计方法) 3. 执行测试,查看不同的参数请求,接口的返回的数据是否达到预期。
接口测试常用抓包工具: Fiddler、Charles、Firebug、开发者工具等等

怎么进行接口测试(how)

下面来说说时间测试过程中系统的接口测试从哪些方面进行考虑:

1、参数输入(入参)

特殊字符
参数类型
参数为空格、空、NULL
非必填参数组合
边界值校验(字符长度极限值验证、数值型边界值、枚举值超范围验证)
……等等

2、接口逻辑处理:

    2.1约束条件分析:

        枚举值限制:

        数值限制:分数限制、金币限制、等级限制

        状态限制:登录状态、失效等

        权限限制:管理员、权限绑定关系、主从关系等

        关系限制:好友关系、绑定换下

    常见问题和风险:约束条件判断不足,导致用户可以通过特殊手段获取利益

    2.2操作对象分析:操作通常是针对对象的,例如用户绑定手机号码,手机号码就是操作对象,二这个手机号码的信用等级、流量、话费,套餐余量也是对象

    常见问题和风险:用户可以访问非权限内的其他对象的信息、敏感信息,从而利用这些信息谋取利益

    2.3状态转换分析:如已提交,未审核,已审核,正常态:提交后,转为未审核,未审核的审核后转换为已审核;异常状态切换,未提交就可以审核

    2.4处理时序分析:如某流程要先登录,刷新,再变更;若数据顺序打乱后,导致其他系统或业务异常,从而谋利

3、接口返回(出参):接口正确处理的接口只有一个,而错误异常返回的结果却有很多种情况,甚至奇葩、出乎意料的的返回,比较不同开发人员有不同的书写习惯;返回状态码和信息

4、性能测试:响应时间(time)、并发数、吞吐量(--)、服务器资源使用情况(cpu、内存、io、)

        超时处理(未做超时处理;阻塞)

5、安全性测试:敏感信息加密(sign签名、时间戳、token机制、验证码、)

6、兼容性测试:(废弃接口、老接口、新接口)

接口测试中发现的典型问题:

1、传入参数处理不当,导致程序crash

2、类型溢出,导致写入如读取的不一致

3、对象权限未进行校验,可以访问其他敏感信息

4、状态处理不当,导致逻辑处理错乱

5、逻辑校验不完善,可利用漏洞获取利益

一、接口参数数据类型:
1. 数值型
2. 字符串类型
3. 数组或者 链表类型
4. 结构体
二、接口测试常见bug:
1. 特殊值处理不当导致程序异常退出或者崩溃
2. 类型边界溢出,导致数据读出和写入不一致
3. 取值边界外值未返回正确的错误信息
4. 参数 为null或空字符串“”等
5. 权限未处理,可以访问其他用户的信息
例如:无权限可以访问,或者 一般用户可以访问管理员权限)
6. 逻辑校验不完善,可利用漏洞获取非正当利益
例如:某网站兑换1块钱需要100币,当小于100币时调用后台 接口是否可以兑换
例如:购物结算时为100元,调用 后台接口设为0元,哈哈
7. 状态处理不当,导致逻辑出现错误(可能程序员123都搞懵了)
8. 数组类型item个数为0或者item重复时程序异常退出
9. 超时问题,超时后处理
10. 潜在性能问题(后台提交处理或者把性能风险提前提出)

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值