案例:如何评价代码走查的效果?
某嵌入式軟件開發(fā)公司在代碼提交系統測試之前,開發(fā)人員做了單元測試,項目組中的技術負責人對所有的代碼進行了評審,對代碼也通過工具做了靜態(tài)掃描,系統上線后仍然存在比較多的問題,因此提升質量是其過程改進的一個重要目標。開發(fā)人員對代碼進行單元測試時,對發(fā)現的缺陷直接進行了修改,沒有保留缺陷的度量數據。技術負責人代碼走查時,有代碼走查記錄,積累了代碼走查的缺陷數據。系統測試的數據記錄比較完備。32個歷史項目的數據如表1所示。如果要采取措施提升質量,首先應該從哪個作業(yè)環(huán)節(jié)入手呢?
表1?歷史項目的缺陷數
| 項目序號 | 代碼走查缺陷數 | 系統測試缺陷數 | 上線后缺陷數 |
| 1 | 8 | 15 | 1 |
| 2 | 69 | 134 | 10 |
| 3 | 53 | 87 | 5 |
| 4 | 95 | 149 | 13 |
| 5 | 17 | 8 | 1 |
| 6 | 32 | 49 | 6 |
| 7 | 69 | 110 | 5 |
| 8 | 30 | 23 | 4 |
| 9 | 154 | 278 | 27 |
| 10 | 55 | 71 | 6 |
| 11 | 16 | 18 | 3 |
| 12 | 36 | 58 | 3 |
| 13 | 61 | 72 | 7 |
| 14 | 72 | 134 | 6 |
| 15 | 43 | 59 | 6 |
| 16 | 65 | 91 | 4 |
| 17 | 82 | 154 | 17 |
| 18 | 45 | 96 | 6 |
| 19 | 39 | 42 | 3 |
| 20 | 15 | 11 | 1 |
| 21 | 77 | 145 | 9 |
| 22 | 60 | 105 | 9 |
| 23 | 69 | 52 | 3 |
| 24 | 135 | 206 | 18 |
| 25 | 9 | 8 | 1 |
| 26 | 129 | 216 | 13 |
| 27 | 21 | 33 | 2 |
| 28 | 19 | 18 | 2 |
| 29 | 26 | 29 | 2 |
| 30 | 34 | 36 | 3 |
| 31 | 34 | 48 | 3 |
| 32 | 12 | 11 | 1 |
由于單元測試沒有歷史數據積累,我們無從判斷單元測試的質量。那就先從代碼走查與系統測試開始分析。
我們可以計算:
代碼走查缺陷逃逸率=(系統測試缺陷數+上線后缺陷數)/(代碼走查缺陷數+系統測試缺陷數+上線后缺陷數)
系統測試缺陷逃逸率=?上線后缺陷數?/(系統測試缺陷數+上線后缺陷數)
于是得到表2:
表2?歷史項目的缺陷逃逸率
| 項目序號 | 代碼走查缺陷逃逸率 | 系統測試缺陷逃逸率 |
| 1 | 66.67% | 6.25% |
| 2 | 67.61% | 6.94% |
| 3 | 63.45% | 5.43% |
| 4 | 63.04% | 8.02% |
| 5 | 34.62% | 11.11% |
| 6 | 63.22% | 10.91% |
| 7 | 62.50% | 4.35% |
| 8 | 47.37% | 14.81% |
| 9 | 66.45% | 8.85% |
| 10 | 58.33% | 7.79% |
| 11 | 56.76% | 14.29% |
| 12 | 62.89% | 4.92% |
| 13 | 56.43% | 8.86% |
| 14 | 66.04% | 4.29% |
| 15 | 60.19% | 9.23% |
| 16 | 59.38% | 4.21% |
| 17 | 67.59% | 9.94% |
| 18 | 69.39% | 5.88% |
| 19 | 53.57% | 6.67% |
| 20 | 44.44% | 8.33% |
| 21 | 66.67% | 5.84% |
| 22 | 65.52% | 7.89% |
| 23 | 44.35% | 5.45% |
| 24 | 62.40% | 8.04% |
| 25 | 50.00% | 11.11% |
| 26 | 63.97% | 5.68% |
| 27 | 62.50% | 5.71% |
| 28 | 51.28% | 10.00% |
| 29 | 54.39% | 6.45% |
| 30 | 53.42% | 7.69% |
| 31 | 60.00% | 5.88% |
| 32 | 50.00% | 8.33% |
?對上述的缺陷逃逸率畫箱線圖分析如圖1所示:
圖1?缺陷逃逸率的箱線圖
通過箱線圖對比我們可以發(fā)現代碼走查的缺陷逃逸率中位數高達65.13%,系統測試的缺陷逃逸率中位數為9.18%,二者相比,應該先從提升代碼走查的質量開始抓起!
對三個缺陷數的度量數據我們也可以做相關性分析,結果如圖2所示:
圖2?缺陷數的相關性分析
???由上邊的分析可以發(fā)現,代碼走查時找到的缺陷越多、系統測試時找到的缺陷也越多、逃逸的缺陷也越多。是否這3個數都受到系統規(guī)模的影響呢?我們可以再去分析缺陷密度之間的關系。將系統規(guī)模納入此表1中,計算出缺陷密度如表3:
表3?缺陷密度的數據
| 項目序號 | 代碼走查缺陷數 | 系統測試缺陷數 | 上線后缺陷數 | 需求點數 | 代碼走查缺陷密度 | 系統測試缺陷密度 | 上線后缺陷密度 |
| 1 | 8 | 15 | 1 | 31 | 0.2581? | 0.4839? | 0.0323? |
| 2 | 69 | 134 | 10 | 220 | 0.3136? | 0.6091? | 0.0455? |
| 3 | 53 | 87 | 5 | 153 | 0.3464? | 0.5686? | 0.0327? |
| 4 | 95 | 149 | 13 | 289 | 0.3287? | 0.5156? | 0.0450? |
| 5 | 17 | 8 | 1 | 18 | 0.9444? | 0.4444? | 0.0556? |
| 6 | 32 | 49 | 6 | 124 | 0.2581? | 0.3952? | 0.0484? |
| 7 | 69 | 110 | 5 | 182 | 0.3791? | 0.6044? | 0.0275? |
| 8 | 30 | 23 | 4 | 77 | 0.3896? | 0.2987? | 0.0519? |
| 9 | 154 | 278 | 27 | 318 | 0.4843? | 0.8742? | 0.0849? |
| 10 | 55 | 71 | 6 | 175 | 0.3143? | 0.4057? | 0.0343? |
| 11 | 16 | 18 | 3 | 68 | 0.2353? | 0.2647? | 0.0441? |
| 12 | 36 | 58 | 3 | 176 | 0.2045? | 0.3295? | 0.0170? |
| 13 | 61 | 72 | 7 | 113 | 0.5398? | 0.6372? | 0.0619? |
| 14 | 72 | 134 | 6 | 289 | 0.2491? | 0.4637? | 0.0208? |
| 15 | 43 | 59 | 6 | 194 | 0.2216? | 0.3041? | 0.0309? |
| 16 | 65 | 91 | 4 | 158 | 0.4114? | 0.5759? | 0.0253? |
| 17 | 82 | 154 | 17 | 243 | 0.3374? | 0.6337? | 0.0700? |
| 18 | 45 | 96 | 6 | 110 | 0.4091? | 0.8727? | 0.0545? |
| 19 | 39 | 42 | 3 | 225 | 0.1733? | 0.1867? | 0.0133? |
| 20 | 15 | 11 | 1 | 28 | 0.5357? | 0.3929? | 0.0357? |
| 21 | 77 | 145 | 9 | 274 | 0.2810? | 0.5292? | 0.0328? |
| 22 | 60 | 105 | 9 | 136 | 0.4412? | 0.7721? | 0.0662? |
| 23 | 69 | 52 | 3 | 74 | 0.9324? | 0.7027? | 0.0405? |
| 24 | 135 | 206 | 18 | 368 | 0.3668? | 0.5598? | 0.0489? |
| 25 | 9 | 8 | 1 | 40 | 0.2250? | 0.2000? | 0.0250? |
| 26 | 129 | 216 | 13 | 328 | 0.3933? | 0.6585? | 0.0396? |
| 27 | 21 | 33 | 2 | 72 | 0.2917? | 0.4583? | 0.0278? |
| 28 | 19 | 18 | 2 | 49 | 0.3878? | 0.3673? | 0.0408? |
| 29 | 26 | 29 | 2 | 70 | 0.3714? | 0.4143? | 0.0286? |
| 30 | 34 | 36 | 3 | 90 | 0.3778? | 0.4000? | 0.0333? |
| 31 | 34 | 48 | 3 | 144 | 0.2361? | 0.3333? | 0.0208? |
| 32 | 12 | 11 | 1 | 32 | 0.3750? | 0.3438? | 0.0313? |
對缺陷密度的度量數據進行相關性分析表圖3所示:
圖3?缺陷密度的相關性分析
?通過圖3的分析可知,無論是否排除異常點,代碼走查的缺陷密度與系統測試的缺陷密度、上線后的缺陷密度都是線性正相關的,系統測試的缺陷密度與上線后的缺陷密度也是線性正相關的。為什么是線性正相關,而不是開口向下的拋物線相關呢?難道代碼走查與系統測試找到的缺陷越多,逃逸的缺陷就會一直增加下去嗎?肯定不應該如此!未發(fā)現的缺陷不會越來越多,只會越來越少,但是在我們的數據中卻沒有看到這個趨勢,說明什么呢?說明我們的代碼走查與系統測試找到的缺陷還是太少!還需要加大代碼走查與系統測試的力度!
綜上所述,我們可以得到結論:
1?先提升代碼走查的質量,減少代碼走查的缺陷逃逸率;
2?系統測試的質量也要提升。
如何提升代碼走查與系統測試的質量呢?我們可以再繼續(xù)分析影響代碼走查與系統測試缺陷密度的因子,找到定量的因果規(guī)律,從而采取改進措施,事實上,該公司也進行了這方面的定量分析,本文不再贅述了。
注:本文中所有的圖形均采用ZenDAS工具繪制。
總結
以上是生活随笔為你收集整理的案例:如何评价代码走查的效果?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构十——队列
- 下一篇: 使用git如何批量对文件进行rm操作