解决软件测试Bug的五个阶段

上一篇 / 下一篇  2012-06-29 11:28:09 / 个人分类:杂谈

一个非常严重和困难的bug,能够成就一个饱经沧桑深受压力的有经验的专业程序员的职业生涯。经受这种考验的创伤程度,相当你受到了一次严重的身体伤害,离婚,或是家庭成员的离世。51Testing软件测试网O \#?-[$U%Pq}4y&f

   研究人员在研究了计算机编程心理学后,得出了一个程序员们在解决一个困难的bug时的心路里程。这些不同的境界,很像为大众所知的Kübler- Ross Stages of Grief(这个模型描述了人对待哀伤与灾难过程中的5个独立阶段(否认,愤怒,耍赖,抑郁,接受)。绝症患者被认为会经历这些阶段),而且原因都很相 似。就好像死亡所伴随的悲伤一样,fix一个bug是一个过程其初始化了一个事件,一开始是拒绝相信,其造就了你苦闷的情绪并开始逐步影响你的心智。这种 苦闷的情结果会让你纠结要努力忍受,最终会你会找到一个满意的结果。

q#r ^f+z9P051Testing软件测试网 S3}X$e&V}O

  了解下面这几个bug-fixing的阶段,会让我们更好的生存下来,并持之以恒,最终带来……关闭我们所有的bug的结果。

CT]bsYZ0

TjGG;n)T-]0  第一阶段:抵触

-P_U ]wn%i051Testing软件测试网p:m!y8q U

  本阶段的状态:多疑Skeptical、生气Offended、易怒Petulant。51Testing软件测试网'KS'{!o:K

51Testing软件测试网0[fLekxhg*m

  1、不理睬51Testing软件测试网 kqy&O5SeX#CG
  也许这个bug会安静地离开。

yUK0t'k051Testing软件测试网$R#J okW%r,J

  2、标记上“不是bug”
sty:G&L\B1G{0  也许这是用户的错,或是本地配置有问题。是的,我确信就是那样,一会就会好的。

6| Y;U%H*q0

#}O;s9X \Z0  3、就是一次小故障
g*]%U*` ]k'[_uqJ0  我想这就是一次小故障,很奇怪地发生了一次,它不会再发生的,虽然没有搞清楚是为什么发生了,不过这就好像我们的数据库,网格,浏览器或别的什么打了几个嗝一样。一会就会好的,我确信。

o$jTQp,?051Testing软件测试网{#YlWkS(t$IHi

  4、躲藏
/V_t4@u m0  我要休几天病假,也许他们会把这个bug转给别人的。
51Testing软件测试网Qf%kb8F8?

51Testing软件测试网 fWb%w!bwH Y

  5、标记为“修改需求中”
PKH _hb"Z0  你看,我是按照需求实现的。如果你们想要改这个行为和UI,就一定要修改需求。也许他们会决定就这样了。
51Testing软件测试网 t&H@P&v!]

5V2ML[Q1@3X1}9]0  6、需要更多的信息
)uvT K N;d0  我不能确定这是一个bug,除非我能在错误日志中看到一条特定的报错信息。
51Testing软件测试网4Q1o$? B FwN'l/B6n

`4GM2Zqm/df9y0  7、转给其他人51Testing软件测试网!P'@k i!c#T:L
  我调查这个bug中看到了其它模块中我看不懂的数据,问题很大。我应该把这个bug转给开发那个模块的人。我可以在我的模块中检查一下那个边边角角的情况,但是正确的fix应该是在别人的模块中。反正那个在别的国家,我见不着他。
51Testing软件测试网y`3E@$Kdc8N V [.Vm

51Testing软件测试网)dG8g q?FqF t

  第二阶段:接受

w6d6Ywff/v051Testing软件测试网RM;[PW.g E

  本阶段的状态:认命Resigned、被打击Defeated、被激怒Annoyed。

I2`lVm^0[$Cp0

7?d]Z ZC/L?+dB T0  1、接受现实51Testing软件测试网1N8`"_:N7VI(A"C
  行了,行了,行了!这是我的bug,我会修正它的。

u^([q[ f y;V0

d1i!^:g*}2e3[0  2、把这个bug放到最后
CDz"ngi!Z0  也许,我可以在我需要fix这个bug之前找到一个新的工作
51Testing软件测试网]fau$^1R$Zqo

51Testing软件测试网P$M!i6hC

  3、和你的经理讨价还价51Testing软件测试网2cp ?*y0M7\U i
  好的,你看,我可以正确地fix这个问题,不过我需要一个月。也就是说,我可以给这个问题贴个创可贴,那不会真正的解决它,但是我们可以避免用户的抱怨,这可以为我们赢得几天的时间。
51Testing软件测试网%aOY"A]L

^!wg&H!k9D/sO;M0  4、为这个bug标记一个无耻的时间
B'U!tD,d3t{ H(f0  上帝啊,我希望这时间够了。

#o{$V1^P!Hi0

co%S:P,[o'^wj0  第三阶段:投入和沮丧

0h8U5P+n~ iTrQU6t2o0

}S*p/?7VB,S:M0  本阶段的状态:眼花Giddy、头晕Light-headed、紧张Nauseous。51Testing软件测试网;E5F)| _~@;V {6W4E

51Testing软件测试网fA/r\9HK9p

  1、开始调查
n)ld!{g0  我能搞定它,我能搞定它!只需要小小的调整一下,小小的关注一下,多一点咖啡因,再加上一点时间,我能搞定它。
51Testing软件测试网]qX;B1w

51Testing软件测试网 t$i@'h%{RlR%m(G

  2、Befuddlement51Testing软件测试网9K;zh2X@U+SVVA
  Shit。这太扯了。我居然没有一点进展。这代码真是乱。这样的代码居然能编译和运行,真TMD的神奇,我有机会能搞清楚它什么不正常吗?

(x)K8]9w-ru0

c(R,xO,C@^:y0  3、再次躲藏51Testing软件测试网mJ A"k1d.ksk-p!P
  你看,很对不起。我不得不要去切除我的阑尾。再一次,是的,既然你提到了它,我的确有两个阑尾。现在我一个也没有了,你高兴了吧?

Vj+B+KG5^051Testing软件测试网NVzJG l%@o/Pn

  4、犯贱51Testing软件测试网cx(Xm}M*@&a#Y%]$E e
  好吧,总之,你到底期望什么?想让我在一个没有高级调试器的环境下改这个BUG。我是什么?千里眼吗?我在我的Commodore 64上一个更好的调试器!

t%~o;p%l ]m0

;kT F-e%k0  5. 瞎搞51Testing软件测试网,k#jz(c7Q
  看看我试试这么改?Kao,这样不行。要不然这样搞?也不行。那么那样搞呢?Shit,虽然再糟糕。

t9D+Me4O+} l0

'hD;H8_;Z3k#E0  6、绝望51Testing软件测试网;C FFt;]X y
  我不可能fix这个bug了。我是个糟糕的程序员。我太笨了。我在这个满是聪明人的地方干什么?迟早他们会知道我的能力太差,那时我就玩完了,在这也混不下去了。

-J?CPLc0

*l+L7@4x3a.euq0  7、耻辱
Jd{ my&u{jBH(K0  我的经理问我为什么我用了一个月的时候来fix这个只需要两天就可以解决的bug?老实说,我不知道怎么去读日志信息,我搞坏了我们的编译脚本。现在,我不敢去让别人来帮我,因为这样只会让我显得更愚蠢。
51Testing软件测试网 J ]wVB

~O-r`:Z0  8、恐慌!51Testing软件测试网(A/^%sPW MJMOa
  这事变得比我相像的要复杂!而我开始觉得复杂的事变得简单……而我觉得简单的事变成需要重定半打的类。为什么我以前在我的经理前拍着胸说我可以搞定这个事?
51Testing软件测试网;?,m)r;M;D

51Testing软件测试网bwiT4T

  9、通宵工作,远离朋友和家人51Testing软件测试网g mibmt
  (语无论次的喃喃自语,一阵一阵地大声咒骂)。

~&W+L7v5|GLC8x&q{0

;`^d:|U0  第四个阶段:愚蠢的快感

e6O ]#J2Nme4{'g0

@s_yk-T6KB*Y0  本阶段的状态:感恩Grateful、安心Relieved、极端地自我欣赏Awfully Impressed with Yourself。51Testing软件测试网u'V9a(FE,o4Lq&K

:s:gG)i1Eb0  1、醒悟51Testing软件测试网L5I7R"z#@ o:U
  哦!我终于明白怎么搞定它了……

O]c qK k[k(Ye ^0

0Qc.z McL:gAu0  2、写正确的代码
5t c"qwR5z tA0  我是编码机器!
51Testing软件测试网t*ri4D0{

51Testing软件测试网 m5S_#~;C)fx[/Z

  3、测试51Testing软件测试网7?&e0q i*F$\
  牛!通过一个测试。真牛!又通过一个测试了。靠!有测试失败了。这是为什么……
51Testing软件测试网5LR ez]b

51Testing软件测试网#op*o:p6y0Kg

  4、隐藏测试失败51Testing软件测试网a/UiBD,N0`
  反正这完全是一个不重要的测试案例。没有人会检查它,这个测试真是毫无意义。

-xB#^P4C9OB051Testing软件测试网i$a6@fM u6mV

  5、提交代码
~.Ofd$ka0  我太牛了,厨房里有个馅饼可以庆祝一下吗?
51Testing软件测试网z"bJ ^`r?3b

EQ6b+L_0  6、关闭bug51Testing软件测试网A9a qJ:s5Qa.^
  我听说那里有个馅饼可以庆祝一下。

?3b`nyX~0

sT q0k2b&K(\0  第五个阶段:与“完成”肉搏

m5fG*]%Q Il0

4vk U%G:u:Gs*c0  本阶段的状态:焦燥不安 Twitchy、神经过敏 Nervous、迷信 Superstitious。

Usq3g-u0

M~4}'BM X0  1、有人reopen了这个Bug51Testing软件测试网7ww{@O+b3}s
  真的?他们发现了你引入了另一个bug? Shit –那只是一个不重要的案例永远不会发生的。
51Testing软件测试网#U-v~@qaVP

t/CI+`-L M0  2、修正以前的修正
&R"ms"m2ls:X%S-V0  是的,我甚至检查了员工的年龄是一个虚数的情况,就是为了防止出错。

.K8f_yOQGfY051Testing软件测试网bn^ y0I-r8J

  3、关闭bug51Testing软件测试网"a0OP^]+n2O,\e
  是的,贱货,你被关闭了。全部都关了,再也不用心烦了。

9Mx:N0](yO6Ez051Testing软件测试网4[du?xMc%\

  4、发誓以后再也不干这种事了。

5td$f` AN:R#A0

g0M;b N4j0  5、大家都意识到你现在是那个模块的专家了。

.o5^5p _3F#UP0

JS;t:a u0  哦,不!现在他们又给了我三个那个模块的新bug。51Testing软件测试网~.@4}IN/Fml

51Testing软件测试网YJ*d)G,s!y&{

  没关系,现在你只需要GOTO第一个阶段。

6m'L:o*dP1N4M'w)^#R051Testing软件测试网,J%H t+qdo ZS

  此外,作为一个工作中的程序员,你会永远经历这些烂事,直到你——死亡,退休,或是被升到管理层。

@%g*u(\&JDp m0

TAG:

 

评分:0

我来说两句

Open Toolbar