分类: C/C++
2008-08-01 17:08:54
悖论很奇妙。在本月的专栏里,我将向你们展示你们进行软件测试时可能遇到的三个有趣的案例。他们本质上是数学问题,而且他们对你们的问题库是一个很好的补充。
在这个专栏的第一部分,我解释 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% |