结束一周的紧张工作,难得的休息时光,坐在电脑前浏览博客、听听歌、看看大片,这也算是一种享受。

因为年度的开发任务已经开始了,所以最近会特别忙,新人的成长又没有想象中的好,经常在他们身上看到自己去年的影子,对什么都不了解,自己去学习这个框架又不知从何入手,问也不知怎么问。当时项目组也缺人,就这么加入项目,开始了不断地加班不断学习的过程。这种成长的经历记忆深刻。现在带新人,也会从去年自己的经历吸取教训,巴不得把自己了解的所有的东西都教给他们。

言归正传。上周一,一上班就接到任务,在这里暂且称其为A需求吧,是在原来的基础上根据用户要求变更的功能点,然后公司上下开了个小会讨论如何实现,最后决定让小杨进行编码,我进行测试case的设计和代码测试,一切安排就绪。代码的编写过程中确实也碰到了困难,但是两个人一起讨论,最后加班赶出来,也经过确认没问题了。下班时,已是晚上九点。

第二天便进行代码的走查,前后花了半个小时,对新做的代码进行了讨论审查,并未对以前版本的代码进行检查(因为大家一致认为,以前的代码是OK的,并且这次变更的东西跟以前的代码不会有冲突)。完了我开始做代码测试,结果问题B产生了。

产生的问题是,以前的代码里有错误的逻辑直接拿过来复用,因为时间关系,小杨并没有逐行代码进行分析,而在代码走查的过程,大家也过于相信就版本的代码,认为其不存在逻辑问题。于是,问题就出现了。

究其原因,这次bug发生的最主要原因是,大家都把注意力集中在需要变更的需求上,而忽略了其对其他模块的影响,或者上层调用的接口是否一致问题,过于相信前人留下的代码,审查过程也是被代码走查主导人带入误区,盲目地认为只需要审查变更到的模块。

没有调查就没有发言权,很多时候,人的认识能力存在很多缺口很多误区,在项目deadline之前,项目组成员可能因为高度的精神紧张和压力而忽略了其他事情,转而专注到更为重要的事情上去,不是说其他的事情不重要,而是优先级2的事项很有可能就对优先级1产生影响。过于自信,往往是出现bug的重要原因。

记录一次软件Bug发生的过程的更多相关文章

  1. 谁记录了mysql error log中的超长信息(记pt-stalk一个bug的定位过程)

    [问题] 最近查看MySQL的error log文件时,发现有很多服务器的文件中有大量的如下日志,内容很长(大小在200K左右),从记录的内容看,并没有明显的异常信息. 有一台测试服务器也有类似的问题 ...

  2. 史上最臭名昭著五大软件Bug

    在现今数字年代,计算机bug不但困扰着每个程序员,更会无可避免影响我们的生活,小到每个人的衣食住行,大到国家经济,世界局势.随着我们的生活方式渐渐的数字化.互联网化,数字世界的找虫和杀虫就变得越来越重 ...

  3. 懒人记录 Hadoop2.7.1 集群搭建过程

    懒人记录 Hadoop2.7.1 集群搭建过程 2016-07-02 13:15:45 总结 除了配置hosts ,和免密码互连之外,先在一台机器上装好所有东西 配置好之后,拷贝虚拟机,配置hosts ...

  4. 实验记录:Oracle redo logfile的resize过程

    实验记录:Oracle redo logfile的resize过程. 实验环境:RHEL 6.4 + Oracle 11.2.0.3 单实例 文件系统 实验目的:本实验是修改redo logfile的 ...

  5. 历史上的重大软件BUG启示录第9篇---微软的硬件尝试

    (图片来源于网络) 2001年苹果公司发布第一代iPod,它的推出在当时引起了轰动,它拥有大容量存储空间和全新的操作方式,并且还非常漂亮(在当时看来),因此在市场上大受欢迎,苹果公司也因此赚的盆满钵满 ...

  6. android一个下拉放大库bug的解决过程及思考

    android一个下拉放大库bug的解决过程及思考 起因 项目中要做一个下拉缩放图片的效果,搜索了下github上面,找到了两个方案. https://github.com/Frank-Zhu/Pul ...

  7. 记录centos7下tomcat部署war包过程

    记录centos7下tomcat部署war包过程 1.官网下载tomcat安装包.gz结尾的 2.上传到/usr/local/ ,并解压到tomcat目录下 3.进入tomcat/bin目录,运行./ ...

  8. Bug,项目过程中的重要数据

    作者|孙敏 为什么要做Bug分析? Bug是项目过程中的一个有价值的虫子,它不只是给开发的,而是开给整个项目组的. 通过Bug我们能获得什么? 积累测试方法,增强QA的测试能力,提升产品质量 发现项目 ...

  9. 记录一个前端bug的解决过程

    人在江湖飘,哪能不挨刀. 我挨了重重一bug.严格来讲这可能是我职业生涯以来的首个悲惨经历,因为凭我的知识储备和经验,基本上任何可重现的bug都是可解的.然而这个bug却困扰了我三个月之久,它具有以下 ...

随机推荐

  1. Graham求凸包模板

    struct P { double x, y; P(, ):x(x), y(y) {} double add(double a, double b){ ; return a+b; } P operat ...

  2. Python学习笔记:startswith & endswith 判断开头结尾是否为指定字符串

    作用: 判断字符串是否以指定字符或子字符串结尾,常用于判断文件类型. 如果以指定后缀结尾返回True,否则返回False. 可选参数"start"与"end"为 ...

  3. nsis安装包_示例脚本语法解析

    以下是代码及解析,其中有底色的部分为脚本内容. 注释.!define.变量.!include.常量 ; Script generated by the HM NIS Edit Script Wizar ...

  4. gcc中C++一个特别的头文件

    今天在一段程序中看到这样一个很奇怪的语句: #include<bits/stdc++.h> 博主查了之后发现业界称其万能头文件,这个头文件包含了如下等头文件,几乎包含了所有的C++标准库头 ...

  5. 书接前文,用多进程模式实现fibonnachi并发计算

    #coding: utf-8 import logging import os import random import sys import time import re # import requ ...

  6. jar包重启脚本-restart.sh

    #!/bin/sh PROJECT_PATH=/var/www/ PROJECT_NAME=demo.jar PROJECT_ALL_LOG_NAME=logs/demo-all.log # stop ...

  7. Spark(十六)DataSet

    Spark最吸引开发者的就是简单易用.跨语言(Scala, Java, Python, and R)的API. 本文主要讲解Apache Spark 2.0中RDD,DataFrame和Dataset ...

  8. 程序设计实习MOOC / 程序设计与算法(三)第一周测验

    作业题: 7. 填空(2分)简单的swap 通过码是 ( 请参考公告中的“关于编程作业的说明”完成编程作业(请注意,编程题都要求提交通过码,在openjudge上提交了程序并且通过以后,就可以下载到通 ...

  9. 【LOJ】#2056. 「TJOI / HEOI2016」序列

    题解 这个我们处理出来每一位能变化到的最大值和最小值,包括自身 然后我们发现 \(f[i] = max(f[i],f[j] + 1) (mx[j] <= a[i] && a[j] ...

  10. 黑马程序员_java基础笔记(07)...IO流

    —————————— ASP.Net+Android+IOS开发..Net培训.期待与您交流!—————————— IO(InputStream,outputStream)字节流 (Reader,Wr ...