檢測到您已登錄華為云國際站賬號,為了您更好的體驗(yàn),建議您訪問國際站服務(wù)網(wǎng)站 http://m.cqfng.cn/intl/zh-cn
不再顯示此消息
單元測試是軟件質(zhì)量的重要保證。在 Github 上挑選一款軟件,單元測試覆蓋率是評價軟件成熟度的一個重要指標(biāo)。通常成熟可靠的開源產(chǎn)品都有完善的單元測試,并且覆蓋率可以達(dá)到 80% 以上。
剩余的屬性測試和 color 的測試非常類似,我們就不再贅述。在代碼編寫階段,建議只對重點(diǎn)功能進(jìn)行測試,沒必要一定追求過高的測試覆蓋率,因?yàn)榍捌谶^度地測試也會提高開發(fā)成本,拖慢開發(fā)進(jìn)度。 到目前為止,已經(jīng)把組件庫的測試框架搭好了。
提高單元測試覆蓋率的策略 單元測試是軟件開發(fā)過程中的一個重要環(huán)節(jié),它幫助我們確保代碼的正確性、穩(wěn)定性和可維護(hù)性。然而,在實(shí)際開發(fā)過程中,由于時間、人力和技術(shù)限制,單元測試的覆蓋率可能并不高。那么,如何提高單元測試的覆蓋率呢?本文將介紹一些有效的策略。 1.
理論在《持續(xù)交付》里,在討論測試覆蓋率指標(biāo)的時候,書里有這么一段話“指出測試覆蓋率包括單元測試、組件測試和驗(yàn)收測試,每一種測試都應(yīng)該覆蓋應(yīng)用程序的80%(我們并不認(rèn)同60%的單元測試覆蓋率加上20%的驗(yàn)收測試覆蓋率就等于80%的覆蓋率這一天真的想法)”現(xiàn)實(shí)我接觸的絕大多數(shù)的客戶,都是用的書里的天真的覆蓋率算法
引言 經(jīng)常有人問這樣的問題:“我們在做單元測試,那測試覆蓋率要到多少才行?”。答案其實(shí)很簡答,“作為指標(biāo)的測試覆蓋率都是沒有用處的。”
這些要求可以包括以下內(nèi)容:代碼編譯通過、單元測試覆蓋率達(dá)標(biāo)、代碼靜態(tài)檢查某類型告警等。
單元測試能夠在很短的時間內(nèi),展示出你的代碼是否達(dá)到了預(yù)期的運(yùn)行結(jié)果。如果單元測試覆蓋率非常高,那么,你就可以在很短的時間內(nèi),檢查正在開發(fā)的系統(tǒng)的所有組件是否運(yùn)行正常。
時常有人會將單元測試覆蓋率作為代碼可靠性的硬性指標(biāo),強(qiáng)迫開發(fā)者為了覆蓋而覆蓋,這是不可取的做法,已經(jīng)違背了單元測試的初衷。 框架 本人主要使用junit4編寫單元測試,用的比較順手,也有部門大佬建議使用junit5比較好。
60%到70%(目前單元測試覆蓋率為38.69%)。
60%到70%(目前單元測試覆蓋率為38.69%)。
缺乏單元測試 sonar可以很方便地統(tǒng)計(jì)并展示單元測試覆蓋率。 7. 糟糕的設(shè)計(jì) 通過sonar可以找出循環(huán),展示包與包、類與類之間的相互依賴關(guān)系,可以檢測自定義的架構(gòu)規(guī)則:通過sonar可以管理第三方的jar包,可以利用LCOM4檢測單個任務(wù)規(guī)則的應(yīng)用情況,檢測藕合。
亦違背初衷 缺乏單元測試 sonar可以很方便地統(tǒng)計(jì)并展示單元測試覆蓋率 糟糕的設(shè)計(jì) 通過sonar可以找出循環(huán),展示包與包、類與類之間相互依賴關(guān)系,可以檢測自定義的架構(gòu)規(guī)則 通過sonar可以管理第三方的jar包,可以利用LCOM4檢測單個任務(wù)規(guī)則的應(yīng)用情況, 檢測耦合
AI貢獻(xiàn)者的“三板斧” 代碼補(bǔ)全:如Copilot、Codeium,根據(jù)上下文預(yù)測代碼塊,開發(fā)者效率提升40%+; 自動化測試:AI生成單元測試覆蓋率超80%(以TensorFlow項(xiàng)目為例); 文檔優(yōu)化:GPT-4重構(gòu)的API文檔可讀性評分提升35%(開發(fā)者調(diào)研數(shù)據(jù))。
用戶 ID = @UserId_0) 單元測試覆蓋率(150+ 單元測試) 一、Dapper-Extensions的使用 1.安裝包 Install-Package DapperExtensions 2.使用方法 Person類 public class Person
更重要的是,代碼的可測試性大幅提升,單元測試覆蓋率從30%提升到95%。這次重構(gòu)不僅解決了技術(shù)債務(wù)問題,還為后續(xù)的業(yè)務(wù)擴(kuò)展奠定了堅(jiān)實(shí)基礎(chǔ)。 1. 重構(gòu)背景:800行if-else的噩夢 1.1 問題現(xiàn)狀分析 在接手這個電商訂單系統(tǒng)時,我被眼前的代碼震驚了。
在測試對象中的單個函數(shù)或方法時,該文件中的所有函數(shù)數(shù)量或代碼行數(shù)會作為分母進(jìn)行百分比的計(jì)算。所以,對單個模塊,要測試多個文件的話,每個測試的單元測試覆蓋率就會降低。將所有測試的覆蓋率數(shù)字聚合在一起,就會為該文件形成完整的覆蓋率信息。
在命令行模式下,在工程的根目錄下鍵入命令“sonar-scanner”,你會看到以下日志: 運(yùn)行 sonar-scanner 接著,重新登錄 SonarQube 平臺,檢測的結(jié)果已經(jīng)在平臺上展現(xiàn)出來 從上圖你可以看出來,連單元測試覆蓋率的統(tǒng)計(jì)也生成出來了,主要原因?yàn)樵谠搈aven項(xiàng)目之前已經(jīng)集成了
在命令行模式下,在工程的根目錄下鍵入命令“sonar-scanner”,你會看到以下日志:運(yùn)行 sonar-scanner接著,重新登錄 SonarQube 平臺,檢測的結(jié)果已經(jīng)在平臺上展現(xiàn)出來從上圖你可以看出來,連單元測試覆蓋率的統(tǒng)計(jì)也生成出來了,主要原因?yàn)樵谠?/p>
以谷歌為例,其開發(fā)團(tuán)隊(duì)主動承擔(dān)單元測試與基礎(chǔ)功能測試,將單元測試覆蓋率穩(wěn)定在 85% 以上,確保代碼交付時已解決 90% 以上的功能性缺陷。
在命令行模式下,在工程的根目錄下鍵入命令“sonar-scanner”,你會看到以下日志: 運(yùn)行 sonar-scanner 接著,重新登錄 SonarQube 平臺,檢測的結(jié)果已經(jīng)在平臺上展現(xiàn)出來 從上圖你可以看出來,連單元測試覆蓋率的統(tǒng)計(jì)也生成出來了,主要原因?yàn)樵谠搈aven項(xiàng)目之前已經(jīng)集成了