一、软件缺陷的定义
按照定义,可以分为文档缺陷、代码缺陷、测试缺陷、过程缺陷;
文档缺陷:文档在静态检查过程中发现的缺陷;
代码缺陷:对代码进行同行评审、审计或代码走查过程中发现的缺陷;
测试缺陷:由测试执行活动发现的被测对象的缺陷;
过程缺陷:通过过程审计、过程分析、管理评审、质量评估、质量审核等活动发现的关于过程的缺陷和问题;
(文档缺陷和代码缺陷是对象缺陷就是文档和代码的缺陷,测试缺陷和过程缺陷是过程缺陷就是测试活动发现的和过程活动发现的缺陷)
二、软件缺陷的种类
输入/输出缺陷;逻辑缺陷;计算缺陷;接口缺陷;数据缺陷;
三、软件缺陷的产生
疏忽造成的错误 carelessness defect;
不理解造成的错误 misapprehend defect;
二义性造成的错误 ambiguity defect;
遗漏造成的错误 skip defect;
四、软件缺陷数目估计
1.撒播模型
乒乓球法:
N/(N+M)=n/(n+m)即是N=n*M/m
程序中固有的缺陷是未知的,检测每个错误的难易程度也同样是未知的。
检测人工置入的缺陷是否和程序中存在的难易程度也一样是位置的。
Hyman缺陷预测:
第一个人发现了n个错误,第二个人发现了m个错误,属于两个人共同发现的错误有m1个,则公式为:
N/n=m/m1即是N=m*n/m1
2.静态模型
?
3.覆盖率预测模型
错误数和时间:随着时间的增加,单位时间内发现的错误数变少;
错误数和覆盖率:基本是成正比的;
覆盖率和时间:随着时间的增加,单位时间内覆盖率变少;
五、软件缺陷管理
1.缺陷管理的目的:
确保每个被发现的缺陷都能被解决;
收集缺陷数据并根据缺陷趋势曲线识别测试过程的阶段;
收集缺陷数据并在其上进行数据分析,作为组织的过程财富;
2.缺陷报告:记录缺陷,缺陷分类,缺陷跟踪;
3.缺陷报告的特点:书面的,已编号的,简单的,可重现的,不做判断的;
六、缺陷的生命周期
未经确认,活跃,已分配,已解决,已验证,关闭;