軟體開發與專案管理
在已知可正常運作的韌體版本之後有1,000個提交,最新的提交會發生缺陷。假設缺陷是由某1個提交引入,其後的提交全都會發生。像 git bisect 那樣以二分搜尋找出原因提交時,需要建置並測試的次數最多為下列何者?
- A3次
- B10次
- C500次
查看答案與解析
正確答案:B. 10次
原因的候選是1,000個提交中的某一個,每測試一次中間的提交,就能把候選減半。由於 2¹⁰ = 1,024 ≥ 1,000,最多10次測試就能確定是哪一個。若從舊的開始一個一個測試,最差要999次、平均也約500次,因此二分搜尋的效果很大。要使用這個方法,重要的是不要把損壞狀態的提交放進共用分支,以便任何提交都能建置與測試。
- A. 這是從1,000 = 10³ 以底數10的對數來考量的值。每次測試只能把候選減半,因此底數是2。
- B. 正確。由於 2¹⁰ = 1,024 ≥ 1,000,10次就能確定。
- C. 這接近從舊的開始一個一個測試時的平均次數,二分搜尋所需的次數少得多。