原代码下载 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% |
现在,假设对于安全性,原型 A 从 100 个用户当中获得了 85 个用户的优秀评价,而原型 B 从 400 个用户中获得了 300个用户的优秀评价。对于这个数据,你能看到原型 A ( 85% 的优秀率)再次比原型B( 75%的优秀率)要好。因此,你认为哪个原型要好?在你回答之前,让我们把图 1 中的数据整合到一个单独的表格当中(图 2 )。
整合之后的数据 | 原型 A | 原型 B |
优秀评价用户数目 | 135 | 315 |
总用户数目 | 300 | 500 |
得分 | 45% | 63% |
如果你将优秀评价的数目结合起来,你就能看到原型 A 从 300 个用户中获得了 135 个优秀评价,比例仅为 45% 。相反,原型 B 有63% 的优秀评价率,从 500 个用户当中获得了 315 个用户的优秀评价。因此,原型 B 要好,对不对?或者原型 A 要好?如果是原型 A要好,你怎样解释这些整合之后的数据?
这是 Simpson 悖论的一个例子,这是一种真实现象。这里没有任何的诡计。正确答案是原型 A是更好的系统,你不能把这些数据整合成一个象图 2 一样的单独表。 Simpson悖论的一个简单、非正式的描述是:两个及以上的数据集单独评估时会产生一个结果,而联合起来评估时会产生一个相反的结果。如果你再回看图 1中的数据,你会注意到不同原型不同列中的评估总值是不一样的。这是 Simpson 悖论的必要条件。
前述例子是假设的,然而它清楚地揭示了 Simipson 悖论。重要的是, Simpson悖论在实际工作中确实发生,并且你应该警惕它们的出现。这种悖论会悄悄躲过你的法眼,尤其是当你只能看到总数据,而没有机会接触到原始、没有结合的数据。这里有一组拼凑起来的数据,但是数据的来源场景是真实的。这个实际的例子出现在 P.J.Bickel, E.A.Hammel 和J.W.O''Connell 的文献“研究生录取的性别偏差: Berkeley 的数据”( 1975 )。
考虑一个大学的研究生院的数据(图3)。这个数据显示向这个大学申请的 9000 个男性中的 4000人被录取进行研究生学习( 44.4% ),而 4500 个女性之中只有 1500 个被录取( 33.3%)。这个案例是不是证明了性别不平等呢?不见得。图 3 中的数据是该大学 4 个系录取数据的整合。看看描述各个系的原始数据的图 4。从这个数据中来看,你会发现在每个系女性被录取的比例比男性都要高!很明显,图 4 中未整合的数据比图 3中整合的数据更好的描述了录取率。尽管这只是现实事件的一个很大简化,你还能看到 Simpson 悖论是很难发现的。
| 录取的人数 | 拒绝的人数 | 录取率 |
男性 | 4000 | 5000 | 44.4% |
女性 | 1500 | 3000 | 33.3% |
| 男性 | 女性 | ||||
系 | 录取的人数 | 拒绝的人数 | 录取率 | 录取的人数 | 拒绝的人数 | 录取率 |
A | 2000 | 2400 | 45% | 400 | 450 | 47% |
B | 1200 | 1000 | 55% | 100 | 80 | 56% |
C | 700 | 900 | 44% | 600 | 730 | 45% |
D | 100 | 700 | 13% | 400 | 1740 | 19% |
总计 | 4000 | 5000 |
| 1500 | 3000 |
|
Simpson 悖论从数学上来说确实不是一种真正的悖论。一个数学悖论产生一个逻辑上不一致的答案,而 Simpson悖论的结论是奇怪的、意料之外的,但是却是能够得到解释的。如果你想深入研究,网上有很多关于 Simpson悖论的资料。给我们的启示是,当你检查测试结果数据的时候,你要先怀疑这些数据是不是从其他原始资料整合而来的。如果是,那么你应该看看原始未经整合的数据。另外,如果你在产生一个测试数据报告,当你尝试要整合数据以便简化你的阐述时要相当仔细。有人说“统计能用来说明任何你想要的”,这种情况正是它们说提及的。
文章来源于领测软件测试网 https://www.ltesting.net/