从《钢铁侠2》看软件测试的重要性
作为程序员的我,昨晚看完钢铁侠2,一路回来是感叹颇多。印象最深的还是片尾处,反派被击倒后,开始了自爆程序,然而此自爆程序的倒计时部分却存在明显的BUG,导致主角不但成功逃走甚至还有时间营救几公里开外的女友。更可恨的是,主角不但成功避开自爆,而且还和女友在楼顶边啃嘴边看自爆产生的烟花。这对对手是多大的打击啊……
作为反派的软件工程师,
他在编程能力上不可谓不强,片中他能在很短的时间内破解“hammer”公司的系统密码,从而登录系统可作为例证;
他在动手能力方面也非常强,片中他能在条件极其有限的情况下,制作出将正在比赛的赛车劈成两半的“神鞭”;
他在个人体力方面那不是一般的强,软件工程师通常是手无缚鸡之力,片中的他却能徒手将两个看守他的彪形大汉打倒,并悬吊在屋顶上,充分证明了他的体力的出众,再加上他那满是沧桑的脸庞,一个极具男人味的粗犷型软件工程师呼之欲出;
更难能可贵的是,他在系统的扩展性和思想的前瞻性方面以及风险预估和规避方面,做得也很强,片中,他在“钢铁战斗系统神鞭1.0版”的基础上扩展出了“钢铁战斗系统无人版”,而且他预见性的知道无人版的战斗系统是无法伤害主角的,于是他又给自己升级开发了“钢铁战斗系统神鞭2.0版”,甚至他也预见了2.0版的战斗系统还是打不过主角,于是他准备了“钢铁战斗系统自爆插件”。可见,他做为一个软件工程师,对整个工程的掌控是多么的完善。
可是最终,他还是没能赢过主角。为什么?
因为,自始至终反派的软件工程师没有对他的产品进行测试,原因可能是“hammer”公司的老总对他限制太多,导致了他没法测试,其二,他自己也过于自信,或者有点受粗犷型性格的影响,忽视了测试这一步。
反过头来我们再看主角,从第一集开始,主角是完全按照软件工程来开始一个产品研发了,有立项,有需求,有分析,有研发,最重要的是他有测试。不但有单元测试(第一集中,主角单个测试脚步的飞行控制,单个测试手部的能量发射系统等),还有整合测试(第一集中,将钢铁衣整合在一起进行各种飞行测试等),甚至有极端临界条件的测试(第一集中,飞到极度高空,测试在极度低温环境下的效能)。而在第二集中,主角为了找到替代能源,更是进行了多次的测试,直至找到后,还在进行稳定性的测试,只是在最后为形式所逼,测试过程没有完整走完,但基本的测试还是有的。
于是,反派在最后关头启动“钢铁战斗系统自爆插件”,但因为没有测试倒计时的那个模块,导致主角成功脱逃,自己也输了这场斗争。
由此可见,测试对于一个软件项目来说,是多么重要。没有测试,没有详尽的测试,交付给用户的系统就是充满不确定性不稳定性的系统,到最后,回过头来伤害的还是软件工程师本人和本团队。
Difficulty of making decision depends on what to lose not gain