zoukankan      html  css  js  c++  java
  • 【测试经验】Bug集锦

    一、重构时删除"无用"代码

    问题:

    某列表接口返回有图片链接数据,现发现原有链接的协议头缺失,导致在App端无法正常下载请求图片。

    原因:

    查看db中图片链接的数据源,db中存储的图片链接数据并没有带协议头;

    再排查App前端代码,是直接获取接口response中图片链接进行下载展示,没有拼接协议头操作;

    抓包查看生产环境该接口,接口返回图片链接带有协议头"https",故原来应该是在Api对图片链接进行过处理;

    但开发排查后发现该接口为透传调用依赖方service,service返回的图片链接并没有协议头,接口逻辑中未对response进行处理;

    我建议将代码切到release分支,使用“https”在代码中进行全局搜索,最终发现,Api逻辑中确实未对图片链接进行图片处理,但是在Model中图片链接字段get方法中进行了协议头拼接处理,

    但在接口迁移技改过程中,开发觉得原有get&set方法过于冗余,故将原有get&set删除,换为使用lombok@Getter、@Setter注解进行处理,也将图片链接协议头拼接逻辑删除,导致返回给C端的图片链接缺失协议头。

    二、使用异步操作优化性能

    问题:

    用户首次预约后,未自动绑定账号所对应的学生。

    原因:

    为使该接口的请求时间更短,故使用异步的方式调用的预约注册服务。

    当异步进行的注册操作未完成时进行绑定学生操作,会因查询不到学生信息而导致绑定失败。

    三、敏感操作未进行加锁,未考虑事务原子性,数据一致性

    问题:

    偶现实际购买次数>限制购买次数,消耗货币数量>发放货币数量。

    原因:

    1、没有考虑事务的原子性,要么都成功,要么都失败,并且扣减次数&货币的操作应该在发放商品之前

    2、没有进行加锁处理,导致并发处理情况下,还没进行扣减操作前,又使用未扣减前的状态进行了请求。

  • 相关阅读:
    图像的剪切
    DOS指令大全(二)
    扫描进程
    数据库名、数据库实例、全局数据库名、服务名、SID等的区别
    ORA29807: specified operator does not exist
    TCP/IP网络编程的几个网站
    漂在等待离职的日子(三)
    入职第一天
    入职一周
    漂在等待离职的日子(八)
  • 原文地址:https://www.cnblogs.com/6970-9192/p/11330486.html
Copyright © 2011-2022 走看看