1、招聘系统重构项目,线上HR反馈,新增候选人的时候,重复的手机号报名成功了两次,拿到这个问题后,我首先要去复现下,于是我去新增操作做连续点击,并打开了Fiddler抓包,抓包后我发现开发在注册接口前,用一个判断手机号是否存在的前置接口来防止重复注册,于是我直接replay真实的注册接口,复现了问题。了解到HR是在地铁上网络不佳的情景下使用手机新增,所以根据判断应该是他在新增的时候,前置接口通过了校验,由网络不佳,在新增成功提示还没来得及返回的时候,HR又点了新增操作,于是出现了这种问题。解决方案可以是数据库给这个字段加唯一键,也可以用加锁或者缓存机制来处理。开发用的缓存机制来处理的,因为老数据确实有重复手机号,为了兼容,没法加唯一键。最简单的方式是数据库字段加唯一键,但有时候历史遗留原因,最简单有效的方案却没法用。这个bug也让我学习到,开发这种只用前置查询接口防止注册的机制是不可靠的,恶意用户完全可以通过直接调用真实注册接口,来实现反复重复注册的目的。所以无论有没有前置查询接口,真正的注册接口都应该有对重复字段的处理。
2、招聘管理系统重构,面试官认领候选人,认领一个候选人,原面试官排班释放了,面试安排认领状态更新了,但认领多个的时候,原面试官排班释放了,但只有第一个候选人的认领状态更新了,别的都没更新,我在gitlab上看了下这块代码逻辑,发现开发代码里更新认领状态只对第一个做了更新处理,于是把bug描述以及开发哪里写错了告诉了开发。很快解决了。
3、教师排课的时候,选择老师,点排课,进去后,没有带出老师的名称,退出再进去就正常带出了。原因是查询的返回有问题,查询过就会产生缓存,缓存数据经过序列化之后不会导致问题。只在没查询过的才能复现。
4、教师排课的时候,重复的课程连续点击排了两次,剩余可排课时出现了负数。
出现原因:如果网络速度比较慢或者产品本身性能不够好,在用户点击了排课后,而页面刷新完成之前这段时间内,该功能按钮仍然可能被用户继续点击。即使有些页面上的按钮处于灰色不可用状态,但当你尝试点击这些灰色的按钮,会发现点击后仍然会给服务器端发送请求。后端也没做相同学生和老师在相同时间不允许排课的限制。
解决方式:先手动取消重复的排课,然后让开发修改代码,只允许对该类功能按钮操作一次,在用户操作之后,不仅需要把对应的功能按钮置灰,同时需要取消这些功能按钮上面绑定的事件响应处理机制。同时后端也要校验是否是相同学生和老师相同时间的排课。如果相同,则要给出相应提示。
工作中常见bug记录
最新推荐文章于 2024-04-29 15:59:56 发布