|
Test run 专栏
软件测试悖论
原著:James McCaffrey
翻译:biny_yang
逆@风@者 原代码下载 TestRun0512.exe
(120KB)
原文出处:Test
Run:Software Testing Paradoxes
悖论很奇妙。在本月的专栏里,我将向你们展示你们进行软件测试时可能遇到的三个有趣的案例。他们本质上是数学问题,而且他们对你们的问题库是一个很好的补充。
在这个专栏的第一部分,我解释 Simpson 悖论。该悖论阐述的是这样一种情况:软件系统 A 与软件系统 B 相比,各方面都要差,然而软件系统 A 可能是一个更好的系统。 在第二部分,我揭示了 Braess 悖论。根据这个悖论,当增加一个完全负载平衡的服务器时,网络性能会以一种奇怪的方式降低。最后,我考虑了 Parrondo 悖论。这个悖论认为两个相互独立并且是错误百出的系统能够不可思议地产生一个正确的系统。
Simpson 悖论经常发生。虽然你实际碰到 Braess 悖论和 Parrondo 悖论的机会很少,我还是认为你们会有兴趣读它们。
Simpson 悖论
假设你有两个不同的软件系统原型:原型 A 和原型 B 。你想知道从用户的反馈来看,哪个原型更好。假设对于易用性,原型 A 从 200 个用户当中获得了 50 个用户的优秀评价,而原型 B 从 100 个用户中获得了 15 个用户的优秀评价(见图 1 )。从这个数据来看,原型 A 的易用性显然要比原型 B 要好,因为原型 A 获得了 25% 的优秀评价,而原型 B 只得到了 15% 。
易用性数据
原型 A
原型 B
优秀评价用户数目
50
15
总用户数目
200
100
得分
25%
15%
安全性数据
原型 A
原型 B
优秀评价用户数目
85
300
总用户数目
100
400
得分
85%
75%
图1 比较原型A和原型B
现在,假设对于安全性,原型 A 从 100 个用户当中获得了 85 个用户的优秀评价,而原型 B 从 400 个用户中获得了 300 个用户的优秀评价。对于这个数据,你能看到原型 A ( 85% 的优秀率)再次比原型B( 75% 的优秀率)要好。因此,你认为哪个原型要好?在你回答之前,让我们把图 1 中的数据整合到一个单独的表格当中(图 2 )。
整合之后的数据
原型 A
原型 B
优秀评价用户数目
135
315
总用户数目
300
500
得分
45%
63%
图2 安全性、易用性整合数据
如果你将优秀评价的数目结合起来,你就能看到原型 A 从 300 个用户中获得了 135 个优秀评价,比例仅为 45% 。相反,原型 B 有 63% 的优秀评价率,从 500 个用户当中获得了 315 个用户的优秀评价。因此,原型 B 要好,对不对?或者原型 A 要好?如果是原型 A 要好,你怎样解释这些整合之后的数据?
这是 Simpson 悖论的一个例子,这是一种真实现象。这里没有任何的诡计。正确答案是原型 A 是更好的系统,你不能把这些数据整合成一个象图 2 一样的单独表。 Simpson 悖论的一个简单、非正式的描述是:两个及以上的数据集单独评估时会产生一个结果,而联合起来评估时会产生一个相反的结果。如果你再回看图 1 中的数据,你会注意到不同原型不同列中的评估总值是不一样的。这是 Simpson 悖论的必要条件。
本文章更多内容:1 - 2 - 3 - 4 - 5 - 下一页>> |