常规的风险评估通过计算可能性和严重程度来实现,它的缺点是没有能够更具体地体现各种不同因素对风险可能性和严重程度的影响。如果在评估风险时考虑风险可能性和严重程度的影响因素,我们就可以优化风险评估公式,从而更好构建测试优先级
风险的可能性和严重程度都会受到各种因素的影响。例如,对于风险发生的可能性可以考虑的因素有测试对象的复杂性、时间压力及地理分散程度(如开发和测试不在同一个国家进行)等;对于风险的严重程度可以从测试对象的使用频率及失效发生的可视性等方面考虑。
基于优化的风险级别选择测试重点的核心思想如下。
° 根据组织和软件产品的特点识别影响风险发生可能性和严重程度的主要因素,并根据每个因素在风险分析中的重要性设置不同的权重。
° 针对软件产品的每个功能模块,根据识别出的影响风险可能性和严重程度的主要因素评估风险发生的可能性和严重程度。
° 通过优化之后的风险级别计算公式得到每个功能模块的总的风险级别。
° 选择合适的测试策略,并排列不同功能模块的测试重点。
下面是针对某个软件产品的5个功能模块选择测试重点的案例。为了简单起见,将5个功能模块分别标识为功能模块A~E。
基于优化的风险级别选择测试重点
在该软件产品的测试过程中识别的影响风险发生可能性的主要因素分别为功能的复杂性、时间压力和地理分散程度,而影响风险严重程度的主要因素为功能使用频率和失效发生的可视性。
每个功能模块风险发生的可能性影响因素和严重程度影响因素分别以1~5代表从小到大的风险发生可能性和严重程度;同时将不同影响因素的权重分成3个等级并赋予1、3和10,分别代表权重最小、中等和最大。表1所示为基于优化的风险级别选择测试重点的模板。
表1 基于优化的风险级别选择测试重点的模板
|
严重程度的影响因素 |
发生可能性的影响因素 |
总的风险级别 |
|||
功能模块 |
使用频率 |
失效的可视性 |
复杂性 |
时间压力 |
地理分散程度 |
|
权重 |
3 |
10 |
3 |
10 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
以基于优化的风险级别选择测试重点的模板为基础,开发团队和测试团队通过头脑风暴的方法针对每个功能模块风险发生严重程度和可能性的影响因素评估严重程度和可能性。如果出现较大的分歧,则需要采取其他一些措施,使得评估的结果达成一致。例如,采用团队中建议的*别作为评估结果。表2所示为针对该软件产品的5个功能模块最后获得的严重程度和可能性的评估数值。
表2 严重程度和可能性的评估数值
|
严重程度的影响因素 |
发生可能性的影响因素 |
总的风险级别 |
|||
功能模块 |
使用频率 |
失效的可视性 |
复杂性 |
时间压力 |
地理分散程度 |
|
权重 |
3 |
10 |
3 |
10 |
1 |
|
功能模块A |
5 |
3 |
2 |
4 |
5 |
|
功能模块B |
5 |
3 |
5 |
4 |
5 |
|
功能模块C |
2 |
1 |
2 |
2 |
5 |
|
功能模块D |
4 |
4 |
3 |
2 |
1 |
|
功能模块E |
5 |
1 |
4 |
2 |
1 |
|
计算每个功能模块的总的风险级别,结果如下。
(1)严重程度 = (严重程度影响因素1的权重 × 评估的严重程度数值 + 严重程度影响因素2的权重 × 评估的严重程度数值)。
(2)可能性 = (可能性影响因素1的权重 × 评估的可能性数值 + 可能性影响因素2的权重 × 评估的可能性数值 + 可能性影响因素3的权重 × 评估的可能性数值)。
将评估得到的严重程度和可能性评估数值代入公式计算,分别得到每个功能模块的总的风险级别,如表9‑4所示。
表3 功能模块的总的风险级别
|
严重程度的影响因素 |
发生可能性的影响因素 |
总的风险级别 |
|||
功能模块 |
使用频率 |
失效的可视性 |
复杂性 |
时间压力 |
地理分散程度 |
|
权重 |
3 |
10 |
3 |
10 |
1 |
|
功能模块A |
5 |
3 |
2 |
4 |
5 |
2295 |
功能模块B |
5 |
3 |
5 |
4 |
5 |
2700 |
功能模块C |
2 |
1 |
2 |
2 |
5 |
496 |
功能模块D |
4 |
4 |
3 |
2 |
1 |
1560 |
功能模块E |
5 |
1 |
4 |
2 |
1 |
825 |
计算得到每个功能模块的总的风险级别之后,测试人员就可以根据该结果选择测试策略。例如,对于总的风险级别较高的功能模块A和B,应该投入更多的测试工作量,以达到更高的测试覆盖率;对于总的风险级别最低的功能模块C,在测试时间和资源受到限制时可以执行较少的测试,甚至可以放在下一轮测试中。
确定每个功能模块的总的风险级别也有助于选择测试技术。例如,对于功能模块A和B,可能需要选择覆盖率较高的条件和条件组合覆盖;对于功能模块C,可能只要选择语句覆盖即可。
更多资料,欢迎访问:http://blog.csdn.net/Wenqiang_Zheng