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