软件缺陷,通常又被称作Bug,是指计算机或程序中存在的某种破坏正常运行能力的问题。在软件系统中,软件缺陷可以理解为系统所需要实现的某种功能的失效或违背。本文的目的是类比软件系统开发过程校园生活的考试过程,分析软件系统的缺陷,分享软件系统缺陷的分类思路。

在《漫谈软件系统测试——通信节点识别》中,文章介绍了通过识别和拆分软件系统通信节点的方法去验证软件系统的正确性,实际上,验证软件系统正确性的这个过程也是发现软件系统缺陷的过程。在这个过程中,我们发现、记录和跟踪软件系统的Bug,直至系统Bug被修复。对于测试工程师来说,我们理解这是一个缺陷管理的过程。对于非测试人员来说,我们也可以将此过程类比为自己学生时代考试后建立自己试卷错题合集的过程。

一、数学考试 VS 软件系统开发

对于一场考试(以数学为例)来说,如图1-1所示,常见的相关干系人可以有出卷人答卷人阅卷人,而在软件系统的开发过程中,常见的相关干系人有产品经理开发人员(前端开发/后端开发)和测试人员

图1-1 考试干系人 VS 软件系统干系人

考试前,出卷人需要把考纲要求转化为题目设计,而在软件系统启动前,产品经理需要把业务需求转化为软件系统需求。

考试中,常见的考试内容可分为选择题、填空题和应用题,而在软件系统开发中,常见的工作内容可分为前端开发和后端开发。

考试后,阅卷人需要对试卷进行批改和评分,而在软件系统开发完成后,测试人员需要对软件系统的质量进行验证和评估。

二、考试问题 VS 系统Bug

场景一:在考试中,有时候会出现出题人出了错误题目的情况,导致答卷人解不出答案,对应到软件系统开发中,也会出现产品经理提出了不合理或者错误的需求,导致系统无法满足用户需求。

场景二:在考试中,有时候我们虽然理解题目了,但是我们使用了不恰当的方法去解题,也有可能得到错误的答案,对应到软件系统的开发中,我们在软件系统的设计过程作使用了不恰当的方案,也可能在系统中埋下Bug。

场景三:在考试中,如果我们粗心大意的话,经常会出现漏做题目的情况,对应到软件系统开发中,如果我们在需求评估阶段没有明确需求功能点,我们也会遗漏某些功能的开发。

场景四:在考试中,如果我们审题错误或者在没有理解题意的情况下答题,我们得出错误的答案,对应到软件系统开发中,如果我们对需求理解不清晰或者理解错误,也会开发出不符合需求的功能。

场景五:在考试中,有时候我们用对了公式,但是计算过程计算错误了,也会得到错误的答案,对应到软件系统的开发中,我们做了正确的设计但是在开发过程中编写了错误的代码,也将引入Bug到系统中。

场景六:在考试中,有时候我们正确地解答了题目,最后把答案填到答题卡时却填错了,对应到软件系统的开发中,我们在系统功能验证通过后,在发布上线时却发布了错误的配置或者代码,引发了系统Bug。

如图2-1所示,在传统的软件开发周期中,软件缺陷可能发生在软件系统整个生命周期的任一环节。以上六个场景介绍了考试及软件系统常见的问题,我们对这些问题进行归类,场景一可以归类为需求类Bug,场景二可以归类为设计类Bug,场景三、四、五可以归类为开发类Bug,场景六可以归类为发布类Bug

图2-1 考试中问题 VS 软件系统Bug

三、开发类Bug

工作中比较常见的Bug大部分是属于开发类Bug,同样我们可以对这类Bug进行更为细致的分类,如图3-1所示,展示了笔者对某个项目前端开发各类Bug的分类及和统计,这里将Bug分类为数据展示、样式设计、数据兼容、数据关联、页面跳转。

图3-1 前端各类型缺陷占比

除了按缺陷类型分类,我们也可以按Bug的严重等级进行划分,这里将严重程度划分为P1、P2、P3和P4,分别对应了严重、一般、普通、建议。如图3-2所示,展示了笔者对某个项目不同严重等级的Bug的统计。

图3-2 不同严重等级Bug占比

四、总结

在一场考试的生命周期中,有出卷、考卷、阅卷的过程,而在一套软件系统的生命周期中,有需求分析、系统设计、开发、测试、发布的过程。与考试不同的是,软件系统这场“考试”不是由一个人“答卷”的,而是由不同岗位的人共同作答的,业术有专攻,有的人只答填空题或者选择题(前端开发),有的人只答应用题(后端开发)。相似的是,两场考试中我们都可能出现答错和漏答的情况。

重新审视校园生活中考试过程,我们每一场考试最大的收获是什么,是我们完成了那一场考试么?应该不是,我们最大的收获应该是从一场考试中发现了自己的错误,从而在考试后补缺补漏,这也是建立错题集并归纳总结问题的重要缘由之一。回到软件系统开发,我们记录和跟踪缺陷的目的是什么,仅仅是为了在软件系统开发过程中跟踪Bug直至修复么?应该不止于此,我们也可以对项目缺陷进行分析,分析其共性进而分类,从而建立项目的错题集,为下一次考试提供宝贵的经验

文章类比考试过程分析了软件系统开发过程的缺陷,但是本文并未对软件开发过程各个环节的缺陷类别进行更具体的分类,本文想分享的是对软件缺陷分类归纳的思路,同时想强调的是对缺陷进行归纳总结的重要性。感谢你的阅读,也期待你的纠错指点。

作者简介:Chaofan,文章来源微信公众号爱测角

原文链接:漫谈软件系统测试——缺陷分析

《漫谈软件系统测试——缺陷分析》原文

漫谈软件系统测试——缺陷分析相关推荐

  1. 缺陷分析在软件项目中的实践

    有人曾说过:人可以犯错,但绝不能再而三.软件开发中,开发人员经常犯错,主要是没找到根因.有效的缺陷分析可以帮助发现问题.制定改善措施,促进项目健康运营.常见的分析方法:帕累托分析.5why.鱼骨图.找 ...

  2. 软件性能优化漫谈(一):软件性能测量与分析

    引言 Amdahl 定律与局部优化 测量是第一法则 计时器精度误差 额外的测量开销 外部随机噪音 性能基线 性能评测 总结 后续 引言 你能获得的对程序最大的加速比,就是当你第一次让它工作起来的时候. ...

  3. 测试缺陷分析务实篇-转

    测试缺陷分析务实篇 2008-08-28 作者:罗耀秋 来源:网络   摘要: 测试活动作为IT项目和产品开发一个重要的环节,通过发现产品或组件的缺陷,并反馈给开发组修复验证这些缺陷,从而在一定程度上 ...

  4. 测试报告的2个要点:1.测试结果与缺陷分析(功能、性能)2.测试结论与建议(项目概况、测试时间、测试情况、结论性汇总)

    测试报告是指把测试的过程和结果写成文档,对发现的问题和缺陷进行分析,为纠正软件的存在的质量问题提供依据,同时为软件验收和交付打下基础. 测试报告是测试阶段最后的文档产出物.优秀的测试经理或测试人员应该 ...

  5. 方案:软件系统测试工作指南

    软件系统测试工作指南 编者说明: 这是一个系统测试的工作指南.你可以根据该文档,结合实际进行修改. 1. 简介 1.1 目的 本文详细阐述了系统测试的类型以及各个类型的基本测试方法,指导项目开发人员进 ...

  6. 高质量的缺陷分析:让自己少写 bug

    阿里妹导读:缺陷分析做得好,bug 写得少.阿里资深技术专家和你分享如何进行高质量的缺陷分析,总结了 5 个要点,通过缺陷分析消除开发中的各种盲点,打造一个学习型的团队. 软件开发中的缺陷隐含着极高的 ...

  7. 为预防软件质缺陷应该做点儿什么

    评审 评审是很常见的一种验证手段.虽然普通,但它的作用可不小. 软件缺陷很大一部分是来自于对需求的定义和理解不正确.而如果你能做好需求评审,可以很大程度地减少这部分缺陷. 同样的,设计评审可以很大程度 ...

  8. 在统计学中参数的含义是指_期刊论文中科研统计学缺陷分析及解决路径

    中华医学科研管理杂志, 2018,31(5)  张策, 陈淑良, 王晓桐, 等 摘要目的 从期刊论文统计方法缺陷方面进行分析,并提出解决方案. 方法 资料采用中国知网文献数据库中的"基础科学 ...

  9. 软件测试工程师和WGT,软件系统测试(WGT)工程师---ATK

    新产品阶段工作职责: (1)       熟悉软件测试基本流程及内容 (2)       1~2年软件系统测试经验 (3)       熟悉测试环境搭建 (4)       参与软件测试用例评审,及测 ...

  10. 《需求工程——软件建模与分析》阅读笔记之一

    在老师推荐的几本书里面,我选择了阅读<需求工程--软件建模与分析>一书,感觉受益颇多,刚开始接触软件觉得最难得是代码,关键是代码,其他都没必要,随着学习的渐渐深入,越来越理解老师说的,在一 ...

最新文章

  1. GNS3 cloud 连接错误_远程桌面连接服务器身份验证错误要求的函数不受支持
  2. 服务器控件的异步请求——UpdatePanel和ScriptManager
  3. M.2 固态硬盘的两种类型:SATA 和 NVMe 的区别?
  4. 基于vue2.0实现音乐/视频播放进度条组件的思路及具体实现方法+代码解释
  5. Node出错导致运行崩溃的解决方案
  6. Sinclair 的ZX Spectrum 年逾三十
  7. JavaScript 表格专题
  8. C语言宏定义##连接符和#符的使用
  9. STM32基础定时器详解
  10. java 控制语句_java两个控制语句(转)
  11. 自学python考哪些证书-Python自学难吗?有哪些课程内容?
  12. 将excel数据导入到SQL server数据库的详细过程
  13. 倍福PLC TwinCAT 3 基础——编程基础
  14. 【嵌入式 C】广义互相关算法用FFT加速的C语言实现
  15. 百度云如何免费扩容至2055G?
  16. navigate实现页面跳转及传参
  17. RK3066 实现LED闪烁的代码分析
  18. c语言中用数学库函数求绝对值,c语言中求绝对值数学函数.doc
  19. mysql migration 使用_Mysql下使用EFCore的CodeFirst和Migration功能
  20. jdk1.8新特性:stream流 报错:stream has already been operated upon or closed

热门文章

  1. cad2010打开服务器图纸未响应,CAD图纸打开未响应怎么解决
  2. 移动互联网创新39个热点
  3. 电视/电视盒点播APP软件系统定制开发方案
  4. 平面上两条直线的夹角
  5. java微信支付,企业微信号转账给个人
  6. 掌握 Microsoft Excel 宏和 Excel VBA
  7. ZendStudio
  8. Django 3.0实战: 仿链家二手房信息查询网(附GitHub源码)
  9. atmega328 48手动解锁 擦除
  10. 易语言mysql编程助手_编程助手app下载-编程助手安卓版 v7.0.1 - 安下载