常用软件缺陷预防技术和缺陷分析技术
2008-07-18 09:54
435 查看
说到软件缺陷预防技术吧,其实什么是缺陷预防,就是说能把缺陷消灭在萌芽状态,就是能在缺陷还没产生出来就已经被扼杀了,这也是软件测试者所追求的最高境界。一般的软件测试属于后来弥补型,产生bug之后再来修改,但是bug发现越晚,修改掉花的代价就越大,所以软件缺陷预防技术就是项目生命周期的早期消灭bug。
一般常用的缺陷预防有几个阶段,需求阶段,设计阶段,编码阶段。
第一,在需求阶段,最重要的事情是需求验证。一般验证的几个大项是,功能是否完整,是否考虑性能,有没有模糊需求,有没有考虑安全性,有没有冗余和错误的需求,需求是不是过于苛刻,需求是不是矛盾等方面。一般常用的方法是列出需求检查表,并进一步执行需求/测试 矩阵。
第二,设计阶段,这个阶段主要通过技术评审测试逻辑设计。常用比较规范的作法是建立过程/数据矩阵,也就是CRUD矩阵,把过程影射到实体,把整个程序的数据的生命周期(建立,更新,读取,删除)反映出来。
第三,编码阶段,这个阶段预防措施主要有统一编码规范,代码评审,单元测试。统一代码规范一般是开发经理统一要求,代码评审则是互相评审或者开发leader进行评审,最后最重要的则是单元测试,就是一般说的白盒测试。
再来说缺陷分析吧,很多很高深的分析技术也不很实用,我只介绍一点常用的分析方法。
1.模块的缺陷分布,一般用柱状图或饼状图,就是每一个功能模块发现bug的比例,发现bug最多的模块证明在发布以后需要更多的维护。
另外,历史数据可以参照,譬如上一个版本在哪个模块发现的bug比例对这个版本就是一个参考。如果,某个模块发现bug的比例比上个版本大幅下降,则很可能说明该模块还需要更多测试。
2.缺陷的起因分布,一般用柱状图或饼状图,一般可分为架构缺陷、功能缺陷、易用性缺陷、性能缺陷、安全性缺陷、界面文字缺陷。一般如果架构缺陷占的比例较大,则说明设计有很大问题。
3.按照不同发现人员的缺陷分布,一般用柱状图或饼状图,一般分为测试人员发现,开发人员发现,beta测试发现,外部客户发现。如果测试人员发现的bug低于某个比例,证明质量保证测试不足。
4.按照不同方式的缺陷分布 ,一般有需求审查,设计测试,代码走查,JAD,手工测试,自动化测试,白盒测试。一般来说,如果通过需求审查,设计测试,代码走查,JAD发现的bug比重很低则说明测试前期重视不够,另外,在手工测试和自动化测试之间的比例也能说明自动化测试的贡献度。
5.缺陷差额分析,就是已经发现的和已经解决的曲线关系,以时间为横轴,两者越接近说明产品质量越高
6.按照时间段的缺陷分布,一般用时间为横轴的曲线图表示,主要说明在哪个阶段发现的bug最多,对测试总结有指导意义
7.Rayleigh分析,就是俗称的零缺陷追踪法,一般截至某个时间点发现的缺陷总数和时间有一个函数关系(一个复杂的数学函数),一般用这个函数来推测经过多少天测试之后软件中大概还有多少个bug,以及交付到用户手中之后大概还能出现多少个bug。不过由于本人严重怀疑该方法的实用性,我还没用过。
一般常用的缺陷预防有几个阶段,需求阶段,设计阶段,编码阶段。
第一,在需求阶段,最重要的事情是需求验证。一般验证的几个大项是,功能是否完整,是否考虑性能,有没有模糊需求,有没有考虑安全性,有没有冗余和错误的需求,需求是不是过于苛刻,需求是不是矛盾等方面。一般常用的方法是列出需求检查表,并进一步执行需求/测试 矩阵。
第二,设计阶段,这个阶段主要通过技术评审测试逻辑设计。常用比较规范的作法是建立过程/数据矩阵,也就是CRUD矩阵,把过程影射到实体,把整个程序的数据的生命周期(建立,更新,读取,删除)反映出来。
第三,编码阶段,这个阶段预防措施主要有统一编码规范,代码评审,单元测试。统一代码规范一般是开发经理统一要求,代码评审则是互相评审或者开发leader进行评审,最后最重要的则是单元测试,就是一般说的白盒测试。
再来说缺陷分析吧,很多很高深的分析技术也不很实用,我只介绍一点常用的分析方法。
1.模块的缺陷分布,一般用柱状图或饼状图,就是每一个功能模块发现bug的比例,发现bug最多的模块证明在发布以后需要更多的维护。
另外,历史数据可以参照,譬如上一个版本在哪个模块发现的bug比例对这个版本就是一个参考。如果,某个模块发现bug的比例比上个版本大幅下降,则很可能说明该模块还需要更多测试。
2.缺陷的起因分布,一般用柱状图或饼状图,一般可分为架构缺陷、功能缺陷、易用性缺陷、性能缺陷、安全性缺陷、界面文字缺陷。一般如果架构缺陷占的比例较大,则说明设计有很大问题。
3.按照不同发现人员的缺陷分布,一般用柱状图或饼状图,一般分为测试人员发现,开发人员发现,beta测试发现,外部客户发现。如果测试人员发现的bug低于某个比例,证明质量保证测试不足。
4.按照不同方式的缺陷分布 ,一般有需求审查,设计测试,代码走查,JAD,手工测试,自动化测试,白盒测试。一般来说,如果通过需求审查,设计测试,代码走查,JAD发现的bug比重很低则说明测试前期重视不够,另外,在手工测试和自动化测试之间的比例也能说明自动化测试的贡献度。
5.缺陷差额分析,就是已经发现的和已经解决的曲线关系,以时间为横轴,两者越接近说明产品质量越高
6.按照时间段的缺陷分布,一般用时间为横轴的曲线图表示,主要说明在哪个阶段发现的bug最多,对测试总结有指导意义
7.Rayleigh分析,就是俗称的零缺陷追踪法,一般截至某个时间点发现的缺陷总数和时间有一个函数关系(一个复杂的数学函数),一般用这个函数来推测经过多少天测试之后软件中大概还有多少个bug,以及交付到用户手中之后大概还能出现多少个bug。不过由于本人严重怀疑该方法的实用性,我还没用过。
相关文章推荐
- 最全,最强的软件测试资料汇总 (性能测试,性能调优,功能测试,自动化测试,测试管理,测试工具,测试用例设计,缺陷分析预防,前沿测试技术...)
- 最全,最强的软件测试资料汇总 (性能测试,性能调优,功能测试,自动化测试,测试管理,测试工具,测试用例设计,缺陷分析预防,前沿测试技术...)
- 【转载】【常见缺陷分析技术】基于ODC的软件缺陷度量研究
- 缺陷分析和缺陷预防技术
- 常用软件开发流程分析
- 上周技术关注:流氓软件及反流氓软件的技术分析
- 常用软件测试工具的分析与比较
- 数据挖掘在软件缺陷管理应用的可行性分析
- 软件开发技术常用术语英中对照
- 网络常用入侵技术分析
- 推荐litianping的几篇文章,包括owc统计图,rss技术,项目常用类,petshop架构分析
- 常用软件开发模型比较分析(三)
- 【软件性能测试-LoadRunner实战技能 18】== LoadRunner_常用函数分析
- 软件动态更新技术总结之1 CIL:程序分析与变换的中间语言工具(sec0-sec3)
- 常用的数据统计分析软件
- Wappalyzer 网站技术分析软件
- 流氓软件及反流氓软件的技术分析
- 软件漏洞分析技术
- [技术讨论]网络软件开发的bug分析与公司开发管理问题之腾讯篇一(有更新)
- 【软件测试】黑盒测试技术——等价类划分和边界值分析