原創(chuàng)|使用教程|編輯:鄭恭琳|2021-01-14 14:31:18.980|閱讀 240 次
概述:在評(píng)估代碼庫的風(fēng)險(xiǎn)時(shí),這不是單個(gè)的魔術(shù)數(shù)字,也不是簡單的像是“通過/不通過”交通信號(hào)燈。風(fēng)險(xiǎn)是多維和多變的,對(duì)于不同的組織,風(fēng)險(xiǎn)的衡量方法也有所不同。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在評(píng)估代碼庫的風(fēng)險(xiǎn)時(shí),這不是單個(gè)的魔術(shù)數(shù)字,也不是簡單的“通過/不通過”交通信號(hào)燈。風(fēng)險(xiǎn)是多維和多變的,對(duì)于不同的組織,風(fēng)險(xiǎn)的衡量方法也有所不同。
您可能已經(jīng)知道代碼中高風(fēng)險(xiǎn)或“不良”部分的位置–它們是您經(jīng)常更改的代碼部分,在此處和此處進(jìn)行了一些小調(diào)整,以修復(fù)一些看起來無害的小問題,但通常代表分層設(shè)計(jì)不良的特點(diǎn)。這就是為什么更改現(xiàn)有代碼是在應(yīng)用程序中引入缺陷的主要原因。
但是我們也知道變化是不變的。您永遠(yuǎn)不會(huì)完全實(shí)現(xiàn)所有功能或第一次都無法正確執(zhí)行,但是與此同時(shí),當(dāng)您在現(xiàn)有代碼上分層時(shí),對(duì)每個(gè)用例和場景的了解就會(huì)丟失,復(fù)雜性會(huì)增加,并且代碼的風(fēng)險(xiǎn)也會(huì)越來越大。這些變化為將環(huán)境應(yīng)用于風(fēng)險(xiǎn)提供了關(guān)鍵。
與了解風(fēng)險(xiǎn)本身同樣重要的是,了解如何應(yīng)對(duì)風(fēng)險(xiǎn)–如何確定補(bǔ)救措施的優(yōu)先級(jí),以實(shí)現(xiàn)“可接受的風(fēng)險(xiǎn)水平”,同時(shí)最大程度地降低對(duì)團(tuán)隊(duì)速度的影響。這篇文章僅著眼于:如何評(píng)估代碼更改的風(fēng)險(xiǎn)以及如何有效地確定優(yōu)先級(jí)和減輕風(fēng)險(xiǎn)。
風(fēng)險(xiǎn)不是一個(gè)單一的數(shù)字,也不是項(xiàng)目級(jí)別的“交通燈”(盡管我們確實(shí)在UI中使用了易于關(guān)聯(lián)的交通燈顏色),而是代碼庫的分類以及關(guān)于實(shí)際和潛在存在問題的指導(dǎo)。見下文:
來自Parasoft的Process Intelligence Engine的餅圖示例,顯示了高,中和低風(fēng)險(xiǎn)代碼的比例。
風(fēng)險(xiǎn)的分類既是多維的又是多元的–您必須將靜態(tài)分析,度量,代碼覆蓋率和測試等技術(shù)中的質(zhì)量度量匯總在一起,才能真正理解它。這些技術(shù)中沒有一個(gè)能為您提供特定維的值,而是為公式提供了值。例如,代碼覆蓋率不是一個(gè)好用的數(shù)字,因?yàn)槟梢該碛?span>100%的覆蓋率,但是只有少量的測試可以做有意義的事情–您需要考慮使用代碼覆蓋率告訴您的內(nèi)容(即,“我的代碼的測試水平如何?”),并通過添加更多數(shù)據(jù)來進(jìn)行更有意義的分析。
風(fēng)險(xiǎn)代碼更改氣泡圖的示例說明了最高風(fēng)險(xiǎn)所在。 (可以擴(kuò)展氣泡以查看驅(qū)動(dòng)分類的指標(biāo)。)
上面的氣泡圖說明了基于兩個(gè)維度的風(fēng)險(xiǎn)分類(也如下圖所示):
測試不良的代碼(即測試缺陷較高)被歸類為高風(fēng)險(xiǎn)(紅色),而經(jīng)過良好測試和結(jié)構(gòu)良好的代碼(即較低的維護(hù)負(fù)擔(dān))被歸類為低風(fēng)險(xiǎn)(綠色)。
在開發(fā)過程中,您的代碼庫處于不斷變化的狀態(tài),每行更改的代碼都會(huì)帶來未知的風(fēng)險(xiǎn)。它會(huì)破壞基本功能嗎?它會(huì)引入安全漏洞嗎?信息越少,風(fēng)險(xiǎn)越大。在之前的文章中,我們討論了變更對(duì)測試的影響,以及如何智能地使用代碼覆蓋率來預(yù)測測試資源需要集中在哪里。但是,即使覆蓋范圍和測試范圍不斷擴(kuò)大,隨著時(shí)間的流逝,仍然存在更多的風(fēng)險(xiǎn)。
代碼庫中的更改為我們提供了第三個(gè)也是最重要的風(fēng)險(xiǎn)維度:時(shí)間。時(shí)間不是傳統(tǒng)意義上的時(shí)間,而是與構(gòu)建及其之間的變化相關(guān)的時(shí)間。專注于代碼庫在內(nèi)部版本之間已更改的部分,這使我們能夠集中精力處理風(fēng)險(xiǎn)最高且最相關(guān)的代碼,因?yàn)樵搱F(tuán)隊(duì)目前正在代碼庫的這一部分中工作。
重用和遺留代碼已經(jīng)有其自己的負(fù)擔(dān),特別是對(duì)于安全性。如果沒有足夠的檢查來維持或改善質(zhì)量基準(zhǔn),則每條提交或修改的代碼行都會(huì)加重債務(wù)。要擺脫這種債務(wù),就像任何債務(wù)一樣,需要關(guān)注并致力于減少債務(wù)。另外,就像任何債務(wù)一樣,除非您知道花在哪里,否則怎么會(huì)知道如何儲(chǔ)蓄?
一旦確定了具有最高風(fēng)險(xiǎn)和最高優(yōu)先級(jí)的代碼,就還需要考慮減輕風(fēng)險(xiǎn)所需的工作量。這是第四個(gè)也是最后一個(gè)方面:質(zhì)量債務(wù)。在上面的氣泡圖中,質(zhì)量債務(wù)用氣泡的大小表示–氣泡越大,需要解決的已知問題越多。在我們的示例中,質(zhì)量債務(wù)是高嚴(yán)重性靜態(tài)分析違例(包括違反代碼度量標(biāo)準(zhǔn)的設(shè)置閾值)和測試失敗的組合,并通過邏輯代碼行數(shù)進(jìn)行了標(biāo)準(zhǔn)化(請參見圖3)。
這些出色的質(zhì)量任務(wù)的匯總為降低代碼風(fēng)險(xiǎn)所需的相對(duì)工作量提供了指導(dǎo)。
并非每個(gè)組織都將遵循相同的質(zhì)量實(shí)踐或在計(jì)算尺寸時(shí)要考慮哪些因素。您需要能夠配置和創(chuàng)建自己的風(fēng)險(xiǎn)定義。
該博客中的示例可供Parasoft市場上的用戶使用,使您可以立即使用它,并進(jìn)行擴(kuò)展和修改以滿足您的特定需求。從示例開始,您可以自定義靜態(tài)分析,指標(biāo)閾值和風(fēng)險(xiǎn)分類以適合您的組織。
通過適當(dāng)?shù)陌踩胧┢胶忸A(yù)算,進(jìn)度和質(zhì)量目標(biāo),同時(shí)滿足客戶需求,這是一個(gè)艱巨的任務(wù),每一個(gè)環(huán)節(jié)都有風(fēng)險(xiǎn)。但是,質(zhì)量實(shí)踐和流程智能的自動(dòng)化可幫助您將資源最佳地用于哪里。了解風(fēng)險(xiǎn)的根源以及每個(gè)代碼的更改方式如何影響基線質(zhì)量和安全性,可以減少開發(fā)方程式中的許多未知數(shù)。正確地關(guān)注質(zhì)量和安全債務(wù)是可以克服的。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn