我才疏学浅,很少引经据典。当然,就我感觉而言,软件行业,尤其是软件测试,谈的上经典的,屈指可数。
我从 上查阅到,计算机硬件的错误率是:对 1Mbit 进行10亿小时操作,突发异常 778 – 25,000 次(参考Google员工论文,这方面资料很少,如果理解有误请看原文)。如果硬件极少发生缺陷,那么软件怎么会出错呢。
实际上,我们通常说的软件缺陷是指软件没有按照我们期望方式工作,本质上是给了计算机错误的指令或没有给该给的指令。所以,软件缺陷的本质是:人的失误 。人和计算机交流的时候:话说错了,该嘱咐的没嘱咐,说的啰里啰嗦。可以说:计算机从来没有错,软件从来没有错,都是人的错。
软件测试,就是要扫除软件的缺陷,我们应该以什么样的视角,什么样的手段来发现、避免软件的缺陷呢p>
如果我们只是根据交付给我们的软件的表现,来发现缺陷的话,那么对于我们想不到的输入,就难以看到软件的行为。甚至对于我们看到的错误行为,也有可能理解为合理的行为。还有可能是我们只关注到了软件部分行为,而忽略了其他行为。导致种种缺陷漏 的发生。
如果把视角放在,如何避免、发现人的失误上,提升软件质量可做的事情,就有很多可以发挥想象力的地方。比如,人们发明了 软件开发流程 ,技术评审点(TR),分阶段、逐层量化控制人可能出现的失误。很多开发的checklist、测试checklist、某个领域特有的checklist等等。甚至在软件测试中想一想,如果我是开发,这里可能会用什么方式实现,可能埋下怎样的错。
想想现在软件工程师在大家脑中的形象,很多时候,是我们自己 把脑力劳动做成了体力劳动,做贱了自己。
参考文档: DRAM Errors in the Wild: A Large-Scale Field Study
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!