软件的复杂性
程序员的错误
过于疲劳。让程序员持续地开发,疲于奔命地完成某项任务,这时候的他认为休息比编码质量有更重要的意义。
不守规矩。程序员按照自己心中的蓝图去描绘一个美丽的乌托邦,或者随心所欲地使用自我编码格式,完全不遵守项目的开发准则。
过于热心。程序员经常犯这样的错误,没有经过严格的验证和全局的考虑,任意修改设计并且认为这会产生更好的效果。
心不在焉。
需求变化
客户并不了解需求变化所带来的后果,就算知道了他们还是会坚持这么做。并且在客户的眼里,他们只需要看到变化,却从不考虑变化所需的额外工作时间。
需求变化的后果可能会造成重新设计或者日程调整,已完成工作、重做或者被完全抛弃,整个项目环境可能要因此改变等。
频繁小的变化或者几次重大的变化,项目各部分之间已知或者未知的依赖关系就会相互影响,从而导致更多问题的出现。
需求变化增加了项目操作的复杂性,产生了大量不确定因素,并且还可能打击参与人员的工作积极性。一个需求变化频繁的项目或者产品是没有任何测试价值的。
时间压力
时间是一种宝贵的资源。
所有软件项目时间都需要被精确估算。可是夹杂着预计、猜测这些不稳定的因素,当最终期限迫近和关键时刻到来之际,错误也就跟着出现了。
文档贫乏
贫乏或者差劲的文档使得代码维护和修改变得异常艰辛,其结果是带来许多错误。
区分职业实现人员的方法并不是看他有几年的编码经验,而在于其是否有良好的先文档后实现的习惯。
文档代表着一种特殊的记忆,没有它的存在对人对己都不利。
软件开发工具
总是希望通过更加先进的工具来避免BUG的出现,这就患上了典型的银弹综合症。
开发工具可能使我们摆脱某些问题的出现,并且提高工作效率。实际上,现代的开发工具对整个软件质量尤其是可靠性并没有什么重大的影响。
3、Bug如何穿透测试
原文转自:http://www.uml.org.cn/Test/201611161.asp