以缺陷的视角理解开发生命周期

本文从错误、缺陷、失效的角度探讨软件开发生命周期。错误导致缺陷,缺陷可能导致失效,通过测试发现失效,查找根本原因进行修复,形成改进闭环。动态测试中的异常行为可能是假阳性或假阴性结果。例子展示了错误理解导致的需求实现缺陷,最终影响用户体验,强调了根本原因分析和过程改进的重要性。

作者:郑文强

时间:2019年7月17日

 

平时我们提到软件开发生命周期,或开发模型,通常指的是软件开发的每个阶段需要完成的活动,以及这些活动是按照什么逻辑和时间顺序与其他活动进行关联的。本文将从另外一个角度:错误、缺陷、失效、根本原因和影响等方面解释整个过程。

 

每个人都会犯错误,例如:假如你在学习需求过程中,发现这么一条需求:if X no more than 10, then do S1。根据你掌握的英语知识,你认为变量X应该是小于10。基于这个理解,你通过代码实现该需求(仅供理解):

if (X < 10) {

   S1;

   }

 

大家知道上面的需求中,正确的理解应该是X小于等于10。由于你在理解过程中犯了一个错误,导致在对应的软件代码中引入了缺陷。由于代码中存在缺陷,在运行过程中就有可能出现实际结果与期望结果不一致的情况,此时就会导致失效的出现。再延伸一下,写代码之前,由于对需求的理解错误,也有可能会在架构设计和详细设计中继续引入缺陷。简单总结一下,由于你的英语理解错误,导致在架构文档、详细设计文档和代码中引入了缺陷,而在执行过程中导致失效。即通过静态测试可以发现缺陷,而通过动态测试发现的是失效。

 

除了输出的软件工作产品中的缺陷会导致失效之外,环境条件也可能导致失效,例如:辐射、电磁场和污染等都有可能引起固件中的失效, 或者由于硬件环境的改变而影响软件的执行。

 

另外,代码中存在缺陷,运行带有缺陷代码时并不代表失效一定会出现。例如:上面的代码中前面添加一行“X = 11”,而这行代码也是一个缺陷(实际代码应该是X = 9),假如S1语句也是一个缺陷。那么由于存在“X = 9”这个缺陷,导致S1中的缺陷完全没有办法发现,这就是缺陷屏蔽。假如通过测试发现了“X = 11”这个缺陷,修改完这个缺陷之后,那么S1中的缺陷也可能被发现。这也可以解释为什么在修复缺陷之后进行的回归测试过程中,可能会发现新的缺陷。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值