这里P(X|~A)的含义是没有bug时pass所有测试的概率,显然P(X|~A)=1
而P(~A)=1-P(A)
进一步化简:
P(A│X)=(P(X│A)*P(A))/(1+P (X│A)*P(A)-P(A))
P(A│X)=(P(X│A))/(P (X│A)+1/(P(A))-1)
下面我们来尝试解读老鸟们是怎么拍脑袋的吧。
项目初期开发人员很容易犯错,且测试人员pass所有测试的概率较低,所以P(A)的概率比较大,而P(X|A)的概率较小。
通过上面的函数曲线可知,随着P(A)的增大,1/(P(A))-1在变小并趋近于0,这时候无论测试人员pass所有测试的概率有多大,P(A|X)总是趋近于1,因此,在项目的初期开发人员的编码质量决定了代码中存在bug的概率。
随着,代码中bug的不断修复P(A)的概率在降低,此时1/(P(A))-1在逐渐变大且趋于无穷,P(A|X)则逐渐变小,可以看出P(X|A)在整个过程中的影响是有限的,更大的影响是P(A),即代码中存在bug的概率,同时还有一个不能忽略的因素是,必须保证随着bug的不断修复,不在产生新的bug,这两点来说都和开发人员的能力有关系。
因此,老鸟们的秘密就在这里,当遇到测试全部pass的时候,他们更关注这个东东是谁开发的,这个开发人员靠谱吗?不靠谱的话风险自然就高。
(如何衡量一个开发人员的能力呢?经验?百万行代码的bug率。。。)
版权声明:本文出自51Testing软件测试网电子杂志——《51测试天地》第三十五期文章投稿。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。