【问题3】 根据初期测试结果的统计数据来推算整个软件故障总数和测试进度是一个行之有效的软件测试管理办法。如果将A、B两个测试小组发现的错误数分别看成是两个“独立”事件,且认为前5天测试的5个程序模块在NanOs程序中具有相当好的代表性的,请估算在正式进行测试前,NanOs程序所具有的软件错误总数。请将表8-7中(1)~(5)空缺处填写完整,每个空缺处均需列出主要计算式子。
参考答案:
解析:(4)
(5)
(6) (7)
(8)
这是一道要求读者应用数学(逻辑或概率)知识估计软件代码错误总数的计算分析题,本题的主要解答思路如下。
1)题目中已给出了关键信息“将A、B两个测试小组发现的错误数分别看成是两个独立事件”,设N为每个被测程序模块故障总数,NA为A组检测到的错误数,P(A)为A组检测到的错误数在被测程序模块故障总数中发生的概率,NB为B组检测到的错误数,P(B)为B组检测到的错误数在被测程序模块故障总数中发生的概率,NAB为A、B两组发现的相同错误数,P(A∩B)为A、B两组发现的相同错误数发生的概率。根据事件A、B相互独立的充分必要条件P(A∩B)=P(A)P(B),即独立事件的Bayes概率计算公式,得:
2)根据以上计算公式,可将表8-6所提供的每个程序模块的统计数据以图8-20所示的思路进行理解,即表8-6中“两组检测相同的错误数”是指A、B两个测试小组独立发现的错误数的交集。因此可得出,每个被测程序模块故障总数N=(A组检测到的错误数NA×B组检测到的错误数NB)/A、B两组发现的相同错误数NAB。
3)利月计算公式
,结合表8-6给出的前5天测试数据计算出每一个程序模块中故障总数的估算值,并计算出每一个程序模块平均每一故障所对应的代码长度,计算过程及结果见表8-10。
表8-10 每个程序模块测试前故障总数及平均每一故障所对应的代码长度
模 块 | 本模块测试前故障总数估算 | 平均每一故障对应的代码行长度(行数) |
模块1 | 20×18/15=24 | 1320/24=55 |
模块2 | 28×30/24=35 | 1540/35=44 |
模块3 | 25×28/20=35 | 1820/35=52 |
模块4 | 32×30/24=40 | 2240/40=56 |
模块5 | 40×33/30=44 | 2332/44=53 |
行/每个故障。
5)依题意“前5天测试的5个程序模块在NanOs程序中具有相当好的代表性”,从而推算出在正式进行测试前,NanOs程序所具有的软件错误总数,即。
6)顺便指出,由于目前所进行的仅仅是模块测试,即部件级测试,还没有考虑到集成测试和系统测试中将必然会出现的NanOs程序错误数量。可以预知总的NanOs程序错误数必然是大于600个,这是相当高的错误率。