软件测试的"侦探学"

发布于 更新于

技术文章

一、缺陷管理库缺陷管理库记录了缺陷相关的资料,为缺陷分析提供了详细的信息,而只有正确的信息,才能保障正确的分析结果。1.1 缺陷定义软件缺陷是指在产品说明、设计、编码阶段中的任何不足。一般要求将需求评审、设计评审、代码检查、测试、项目组内部...

一、缺陷管理库


缺陷管理库记录了缺陷相关的资料,为缺陷分析提供了详细的信息,而只有正确的信息,才能保障正确的分析结果。


1.1 缺陷定义


软件缺陷是指在产品说明、设计、编码阶段中的任何不足。一般要求将需求评审、设计评审、代码检查、测试、项目组内部发现、用户反馈等几种手段发现的缺陷都统一记录在缺陷跟踪系统中,进行统一管理、统计。而目前很多项目缺陷跟踪系统中往往只包含了测试阶段的缺陷统计,在此基础上的缺陷分析势必存在局限性。


1.2 缺陷信息


为了便于缺陷定位、跟踪和修改,需要收集尽量多的有效信息,比较常见的缺陷信息如下:


缺陷描述

被测产品信息:比如App名称、版本号

测试环境:wifi、数据网络、测试环境、生产环境

测试机型:机型、系统版本号

测试步骤

预期及实际结果

复现概率

测试辅助信息:截图、视频、日志

缺陷状态

缺陷优先级:标识处理和修正软件缺陷的先后顺序指标

缺陷严重程度

缺陷发生的组件

缺陷创建时间

缺陷发现人

缺陷责任修改人

缺陷修复时间

缺陷产生原因

在提交缺陷时,需要遵循以下5个原则:


准确性:缺陷每个组成部分描述准确,不会产生误解

完整性:复现该缺陷完整的步骤、截图、日志

一致性:按照一致的格式书写全部缺陷信息

简洁性:只包含必不可少的信息,不包括任何多余的内容

清晰性:每个组成部分的描述清晰,易于理解

这一步其实可以理解成培养测试人员的观察能力,信息收集能力。只有不断观察、收集正确信息,才可以为后续的侦查做好准备工作。


 


二、缺陷分析


缺陷分析是在形成缺陷管理库的基础上,对缺陷进行宏观及微观纬度的分析。通过缺陷分析,发现各种类型缺陷发生的概率,确定缺陷集中的区域,明确缺陷的发展趋势,追踪和分析缺陷产生的原因。在此分析基础上,对软件生命周期中各个角色、项目流程做改善和优化,提高软件测试质量,提升测试效率。

缺陷分析仅仅是一种手段,而非最终目的。利用缺陷分析结论,反思和回溯缺陷产生的各个阶段,思考如何避免类似问题,不再踩坑,在下次测试中得到提升,才是我们想要的结果。同样的,缺陷分析的成果是一个持续改进优化闭环的过程,它是测试人员潜移默化中测试能力的提升,也是项目流程中各个角色共同保障产品质量意识的推动。例如缺陷分析发现很多需求缺陷是到测试阶段才发现,那么就有必要加大需求评审力度;缺陷分析发现开发修复缺陷引入新缺陷比例很高,那么开发团队在修复缺陷的时候要考虑到对周边区域的影响,并且要通知相关区域的专家加强代码审查。当然测试团队也要尽可能多的在相关区域做一些回归测试。大家可以结合自身项目来利用缺陷分析优化项目实践。

三、宏观缺陷分析技术


宏观缺陷分析是指对缺陷信息进行分类和汇总,利用统计的方法计算分析相关指标,编写缺陷分析报告的活动。宏观缺陷分析的方法很多,这里主要关注缺陷发展趋势分析、缺陷分布状况分析、缺陷注入-发现分析。

3.1 缺陷发展趋势分析


项目管理中一项非常重要但十分困难的工作就是平衡进度、质量和成本。测试人员可以提供缺陷提交、缺陷修复的趋势图表,帮助管理者从中发现一些简单的缺陷发展趋势(这种缺陷可以是本文论述的广义缺陷发现手段确定的,也可以是单纯的测试手段发现的),从而了解软件质量趋势。

这里给出一个常用的分析图,x轴代表时间,y轴代表以下四种类型缺陷的数量:

发现数:累计的所有被发现bug的数量

关闭数:累计的所有被关闭bug的数量

日(期)发现数:当日(期)发现的缺陷数量

日(期)关闭数:当日(期)关闭的缺陷数量 


继续阅读