原代碼下載 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悖論的資料。給我們的啟示是,當你檢查測試結果數據的時候,你要先懷疑這些數據是不是從其他原始資料整合而來的。如果是,那么你應該看看原始未經整合的數據。另外,如果你在產生一個測試數據報告,當你嘗試要整合數據以便簡化你的闡述時要相當仔細。有人說“統計能用來說明任何你想要的”,這種情況正是它們說提及的。
文章來源于領測軟件測試網 http://www.kjueaiud.com/