代码出bug导致公司的损失,该处罚谁?

今天女朋友回来的时候有些不高兴,问了一下,原来是代码出bug导致公司的损失,她在考虑该不该处罚?
在这里插入图片描述

她现在带一个互联网产品,之前没做过开发,不了解其中的细节,公司也没有相应的机制。大致情况是这样的:

她部门中一款产品有充值功能,今天部门跟财务对账时,发现有几笔话费充值,没收到钱,但是给用户把话费充上了。换句话说公司贴钱了。
查原因,代码逻辑有漏洞,收款回调是失败的,但是没有根据回调结果去触发充值,而且无论收款是否成功,都直接就发起充值接口了。
这个算谁的原因呢?算开发的还是算测试的?
她的判断应该是开发的原因占大头,毕竟这里涉及到支付、打款的问题,处理这块的是部门里经验和工龄都最老的。测试嘛,这种属于异常情况,不知道在测试环境中好不好触发异常情况。正常支付但是失败了才出现的bug…
这种情况并不是偶发了,虽然不愿意用惩罚的方式去处理,但是这次还是准备狠心罚一下,小惩大诫吧,不然责任心始终有点跟不上。

**刚听了她的描述时,我比较赞成她判断是开发的主责。**然后我把以前呆过的团队的处理办法也提供了一下,

以前我们是有非常明确的惩罚规定,整个团队也认同,规定基本也是合理,大约是根据测试用例,测试范围内出问题,测试人员主责,测试范围之外开发人员主责,如果用例范围覆盖不够优先级不清,项目leader主责(当然这里面会有测试部门里做用例同学的分级情况),另外还会有项目质量、代码质量、工作量等的评定;在发布版本时,也会分正常和强上(临时)两种上线,如果测试时间不够但用例全面只是来不及覆盖完,那么会有项目leader把用例上优先级做一下取舍,测试之后,签字强上。

我们当时只控一个出口,从覆盖面上来判断,而且罚款也是给大家买零食,不跟绩效奖金挂钩。

但是她这边之前没有这样的规定,如果这次处罚,那么是不是要准备立规矩呢?以后都有处罚机制呢?这样可就复杂了。
在这里插入图片描述

跟她聊过之后,心情稍好,趁她去做饭的时候,我又仔细想了想她遇到的情况,“测试环境是否可以触发这个异常情况”,测试人员是否有在测试用例中说明?也就是他的用例是否覆盖了这个bug?

因为从她的描述中“正常支付但是支付失败了……”从这里看,这属于测试用例中需要覆盖的情况。测试人员对这一条需要设置优先级,如果测试环境无法触发,那么要反馈给开发、项目leader、团队leader,通常在项目leader甚至开发组长这里,就会根据测试人员提供的优先级判断是否要做模拟环境,而且也会要求开发检查逻辑的。

这样的话,似乎测试是主责哦不过,看她现在的脸色,我不好再把这件事挑起来(那位陌生的仁兄,对不住啦~)
各位CSDN的大佬们,欢迎留言指导一下、咱们一起讨论一下,在自家团队中出现这种情况都是咋处理的呀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
非常抱歉,看起来在代码中有一个小错误。在 `backtrack` 方法中,我们需要在递归调用 `backtrack` 之前先检查当前木桶是否已经满了,如果满了则跳过该木桶。请使用以下修改后的代码: ```java import java.util.ArrayList; import java.util.List; public class StoneDistribution { private static boolean isSolutionFound = false; public static void main(String[] args) { int[] stones = {60, 45, 30, 45, 45, 5, 60, 45, 30, 30, 45, 60, 60, 45, 40, 30, 60, 30}; int[] buckets = {180, 240, 180, 240}; List<List<Integer>> distributions = distributeStones(stones, buckets); if (isSolutionFound) { System.out.println("石头分配方案:"); for (int i = 0; i < distributions.size(); i++) { System.out.println("木桶 " + (i + 1) + ": " + distributions.get(i)); } } else { System.out.println("找不到合适的石头分配方案!"); } } private static List<List<Integer>> distributeStones(int[] stones, int[] buckets) { List<List<Integer>> distributions = new ArrayList<>(); List<Integer> currentDistribution = new ArrayList<>(); backtrack(stones, buckets, distributions, currentDistribution, 0); return distributions; } private static void backtrack(int[] stones, int[] buckets, List<List<Integer>> distributions, List<Integer> currentDistribution, int currentIndex) { if (isSolutionFound) { return; } if (currentIndex == stones.length) { if (currentDistribution.size() == buckets.length) { distributions.add(new ArrayList<>(currentDistribution)); isSolutionFound = true; } return; } for (int i = 0; i < buckets.length; i++) { if (currentDistribution.size() < i + 1 && currentDistribution.stream().mapToInt(Integer::intValue).sum() + stones[currentIndex] <= buckets[i]) { currentDistribution.add(stones[currentIndex]); backtrack(stones, buckets, distributions, currentDistribution, currentIndex + 1); currentDistribution.remove(currentDistribution.size() - 1); } } // 添加以下代码来跳过已满的木桶 if (currentDistribution.size() < buckets.length && currentDistribution.stream().mapToInt(Integer::intValue).sum() + stones[currentIndex] <= buckets[currentDistribution.size()]) { backtrack(stones, buckets, distributions, currentDistribution, currentIndex + 1); } } } ``` 这次在 `backtrack` 方法的最后添加了一段代码,它会检查当前木桶是否已满,如果已满则直接跳到下一个递归调用。这样就可以避免将石头放入已满的木桶中。 希望这次的修改能够解决问题。如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值