测试要发现多少个错误才终止?
如果我们事先知道要测试出多少个缺陷后终止测试,就已经满足软件的质量需求,那该是多么惬意的事!因为测试有了明确的目标,测试活动也不会有丝毫的浪费。
这并不是不可能完成的任务。
当我们的任务书中给出了明确的平均无故障时间(MTTF)时,我们就可以推算出要满足MTTF的要求,需要测试出多少个软件缺陷。
平均无故障时间(Mean Time To Failure,MTTF)是系统成功运行的平均时间(通常会在任务书中规定)。软件的实际成功运行时间主要取决于系统中潜伏的缺陷的数目,缺陷数目越多,MTTF越小。
正是由于MTTF与软件中潜在的缺陷数目有关,所以,我们可以通过MTTF,反推出测试要发现的缺陷数目。
在回答这个问题之前,我们先来看看MTTF与缺陷的关系。
要估算MTTF,首先要获得下列参数:
ET——测试之前程序中错误总数;
IT——程序长度(机器指令总数);
τ——测试(包括调试)时间;
Ed(τ)——在0~τ期间发现的错误数;
Ec(τ)——在0~τ期间改正的错误数。
并且,我们根据历史经验数据,作出下述假定:
在类似的程序中,单位长度里的错误数E T /I T 近似为常数。美国的一些统计数字表明,在测试之前每1 000 条指令中大约有5~20 个错误。
失效率正比于软件中剩余的(潜藏的)错误数,而MTTF与剩余的错误数成反比。
每一个发现的缺陷都被正确地改正,没有引入新的缺陷,即Ed(τ)=Ec(τ)。
根据经验表明,MTTF与单位长度程序中剩余的错误数成反比。
而单位长度程序中的剩余的错误数=单位长度里的错误数-单位长度发现的错误数=E T /I T-Ec(τ)/IT。
所以,我们得出MTTF的计算公式如下:
MTTF=1/K(E T /I T-Ec(τ)/IT)
其中,K 为常数,它也是一个经验值。根据美国的一些统计数据表明,K 的典型值是200。
对这个公式进行变形,我们就会推导出测试需要发现的错误数的计算公式:
Ec(τ)=E T-I T/K*MTTF
这个公式中K是常数(典型值200),MTTF可由任务书中规定的值获得,E T /I T也是一个常数,由此可计算出测试要发现的缺陷数。由于E T /I T是5~25之间的常数,所以推导出来的测试发现的缺陷也是一个范围值。
这正是:
多少错误才终止,无须埋头去测试
可靠时间若已定,推导计算有公式
参考书目:软件工程(第4版),作者:张海藩 吕云翔,出版社:人民邮电出版社有限公司