1、估算平均无故障时间的方法孙旭光1.1、符号nET 测试之前程序中错误总数nIT 程序长度(机器指令总数)n 测试时间nEd()在0至之间发现的错误数nEc()在0至之间改正的错误数nEr()剩余的错误数2.2、基本假定n(1)根据经验数据,单位长度里的错误数ET/IT 近似为常数。统计表明,在测试之前每1000条指令中大约有5-20个错误。n(2)平均无故障时间MTBF与剩余的错误数成反比。3.3、平均无故障时间的估算n假设每一个发现的错误都改正了,剩余的错误为:Er()=ET -Ec()n单位长度程序中剩余的错误数为:n(ET -Ec()/IT4.3、平均无故障时间的估算n平均无故障时间与单
2、位长度程序中剩余的错误数成反比:n其中,K为常数,它的值应该根据经验选取。统计数字表明,K的典型值是200.5.n在公式中,IT已知,Ec()和MTTF可以通过测试得知,因此,K和ET未知。n如果可以得到Ec()和MTTF的两组测试数据,则可以计算出K和ET。n如果仅可以得到Ec()和MTTF的一组测试数据,则可以将K取为典型值200,计算出ET。6.公式的作用n1、估算平均无故障时间的公式,可以评价软件测试的进展情况。n2、也可以根据软件平均无故障时间的要求,估计需要改正多少个错误之后,测试工作才能结束。7.例题1n对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错
3、误,此时MTTF=10h,经过两个月的测试后,总共改正了25个错误,MTTF=15h。n(1)程序中总的错误数为多少?n(2)为达到MTTF=100h,还要改正多少个错误?8.n(1)10=10000/K(ET-15)n 15=10000/K(ET-25)nK=100/3 ET=459.n(2)Ec=45-3=42n 还需改正42-25=17个错误。10.练习n对一个长度为100,000条指令的程序进行测试,记录下来的数据如下:p 测试开始,发现错误个数为0;p 经过160小时的测试,累计改正100个错误,此时,MTTF=0.4小时;p 又经过160小时的测试,累计改正300个错误,此时,MT
4、TF=2小时;n(1)估计程序中固有的错误总数;n(2)为使MTTF达到10小时,必须测试多少个错误?11.n1)MTTF=IT/(k*(Et-Ec(t)n所以0.4=IT/(k*(Et-100)n2 =IT/(k*(Et-300)n所以可以求出Et=350n2)n由1)可以知道nk=IT/2(Et-Ect)=100000/2(350-300)=100000/100=1000;n所以nMTTF=10=100000/1000(Et-Ec)=100/(Et-Ec)=100/(350-Ec)n所以Ec=340 n340-300=40个错误。12.4、估计错误总数ET的方法n两种方法:p植入错误法p分
5、别测试法p参考书P82 软件缺陷数目估计中撒播模型13.4.1 植入错误法n人为的植入错误数为Ns,经过一段时间测试后发现ns个植入的错误,此外还发现了n个原有的错误。n如果测试方案发现植入错误和发现原有错误的能力相同,则估计程序中原有的错误总数为:14.4.2 分别测试法n两个测试员彼此独立的测试同一个程序,测试一段时间后测试员甲发现错误数为B1,测试员乙发现错误数为B2,两个测试员发现的相同错误数为bcn估计测试前程序中的错误总数为:15.例题2n某公司对已开发的软件产品采用错误植入模型来进行测试和评估。评测部对待测软件人为植入了17个故障;在开始测试的一小段时间内,发现了300个固有故障
6、;发现了植入的故障3个,被测程序的机器指令条数为3*105。n(1)请估算出被测程序的固有故障的个数N的值。n(2)若通过一段时间后,发现的错误个数为1600时,请估算此程序的平均无故障时间。n(3)若要求把此平均无故障时间再提高2倍,应至少再排除多少个错误?16.n(1)ET=17/3*300=1700n(2)MTTF=3*105/200*(1700-1600)=15 hn(3)Ec=1700-3*105/200*30=1650n还需改正1650-1600=50个错误。17.例题3n在测试一个长度为24000条指令的程序时,第一个月由甲乙两名测试员各自独立测试这个程序。经过一个月测试后,甲发现并改正了20个错误,使MTTF达到10h。与此同时,乙发现了24个错误,其中6个甲也发现了。以后由甲一个人继续测试这个程序。n(1)刚开始时程序中总共有多少个潜藏的错误?n(2)为使MTTF达到60h,必须再改正多少个错误?18.n开始测试前共有潜藏错误(24/6)*20=80 个 n由于甲发现并改正了20个错误,使MTTF达到了10小时,根据公式:p有:10=24000/(K*(80-20),则K=40;p利用同一公式:60=24000/(40*(80 Ec),所以 Ec=70,测试员甲已经改正了20个错误,因此还需要改正50个错误。19.