以缺陷的角度理解开发过程

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

每个人都会犯错误,例如:假如你在学习需求过程中,发现这么一条需求: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中的缺陷也可能被发现。这也可以解释为什么在修复缺陷之后进行的回归测试过程中,可能会发现新的缺陷。这个新的缺陷除了可能是由于变更导致而引入之外,也有可能是发现了被屏蔽的缺陷。

测试执行过程中发现了失效,接下来开发人员需要定位和修复该问题,此时开发人员需要找出是什么缺陷导致了失效的发生,并在对应的文档中进行修复。而后测试人员进行再测试和回归测试。那么,从整个开发过程而言,是否再测试和回归测试之后就结束了呢?答案是否定的,因为我们还需要找到引入缺陷的根本原因。缺陷的根本原因是导致缺陷产生的最早的行为或条件,通过分析缺陷并找出其根本原因,以减少类似的缺陷以后再发生。通过将关注点放在最重要的根本原因,根本原因的分析可以促进过程的改进,从而防止将来引入大量的类似缺陷。在本案例中,根本原因是英语知识的不够踏实。为了在将来的开发过程中不再犯同样的错误,过程改进的措施是对我进行针对性的英语培训。

错误、缺陷和失效的关系,可以通过下图表示,从图中你会发现从引入缺陷再到发现失效,然后查找、定位和修复缺陷,再找到出现的缺陷的直接原因,整个过程形成了可以不断得到改进的闭环。

但是,动态测试过程中发现的异常行为,并不一定都是失效。由于测试执行方式的原因,或者由于测试数据、测试环境或其他测试件的问题,可能会出现假阳性结果False - Positive (误报),即将测试结果中报告了被测对象中实际不存在的缺陷。相反的情况也会发生,由于测试人员技能方面的不足,可能会导致假阴性结果False - Negative(漏测),即测试结果中未能发现被测对象中存在的缺陷。假阴性结果指的是没有发现测试应该要发现的缺陷;假阳性结果记录为缺陷,但实际上并不是缺陷。

再举个例子,假设由于一行不正确的代码,银行支付了错误的利息,导致了客户投诉。由于产品所有者对如何计算利息有误解,所以为模糊的用户故事编写了有缺陷的代码。如果在利息计算中存在很大比例的同类缺陷,并且引发这些缺陷的根本原因来源于类似的误解,那么需要为产品所有者进行利息计算相关主题的培训,以便在未来减少这类缺陷。

下图是针对上述场景的图形描述,你能分别找到错误、缺陷、失效、根本原因和影响是什么吗?大家可以尝试理解一下,在评论区告诉我你的理解。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容

  • 首页 资讯 文章 资源 小组 相亲 登录 注册 首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他...
    Helen_Cat阅读 3,860评论 1 10
  • 第一次听到这个消息,是因为础源师叔,他把国学学习的门给我打开,让我看到了国学的魅力。他说:"我的老师要开课了...
    故而文颉阅读 267评论 0 0
  • 春天的美丽,有几个人知道,现在忙碌的生活,人们做什么都讲究效率,人们每天像陀螺一样不停旋转,就像(肖申克的救赎)一...
    亲爱的紫罗兰阅读 281评论 0 0
  • 重新拾起感恩日记,是听心想生老师讲课时重新给我们精简了功课,并建议我们晚上要做感恩,美其名曰枕着感恩入睡,我觉得这...
    丰盛富足阅读 169评论 0 1
  • 作为个体:严肃的生活哲学。沉默寡言,老成持重。注重承诺,可靠安全。谨慎而深藏不露。坚守原则,责任心强。遵守规则,生...
    高灵恩阅读 578评论 0 0