三、實(shí)際項(xiàng)目中如何開展單元測試?
1、并不是所有的代碼都要進(jìn)行單元測試,通常只有底層模塊或者核心模塊的測試中才會采用單元測試。
2、你需要確定單元測試框架的選型,這和開發(fā)語言直接相關(guān)。比如,Java 最常用的單元測試框架是 Junit 和 TestNG;C/C++ 最常用的單元測試框架是 CppTest 和 Parasoft C/C++test;框架選型完成后,你還需要對樁代碼框架和 Mock 代碼框架選型,選型的主要依據(jù)是開發(fā)所采用的具體技術(shù)棧。
通常,單元測試框架、樁代碼 /Mock 代碼的選型工作由開發(fā)架構(gòu)師和測試架構(gòu)師共同決定。
3、為了能夠衡量單元測試的代碼覆蓋率,通常你還需要引入計(jì)算代碼覆蓋率的工具。不同的語言會有不同的代碼覆蓋率統(tǒng)計(jì)工具,比如 Java 的 JaCoCo,JavaScript 的 Istanbul。
4、你需要把單元測試執(zhí)行、代碼覆蓋率統(tǒng)計(jì)和持續(xù)集成流水線做集成,以確保每次代碼遞交,都會自動觸發(fā)單元測試,并在單元測試執(zhí)行過程中自動統(tǒng)計(jì)代碼覆蓋率,最后以“單元測試通過率”和“代碼覆蓋率”為標(biāo)準(zhǔn)來決定本次代碼遞交是否能夠被接受。
如果你有開發(fā)背景,那么入門單元測試是比較容易的。但真正在項(xiàng)目中全面推行單元測試時,你會發(fā)現(xiàn)還有一些困難需要克服:
緊密耦合的代碼難以隔離;
隔離后編譯鏈接運(yùn)行困難;
代碼本身的可測試性較差,通常代碼的可測試性和代碼規(guī)模成正比;
無法通過樁代碼直接模擬系統(tǒng)底層函數(shù)的調(diào)用;
代碼覆蓋率越往后越難提高。
總結(jié)
以上5篇詳細(xì)介紹了單元測試的概念,和你重點(diǎn)討論了用例的組成,以及在實(shí)際項(xiàng)目中開展單元測試的方法,你需要注意以下三個問題:
代碼要做到功能邏輯正確,必須做到分類正確并且完備無遺漏,同時每個分類的處理邏輯必須正確;
單元測試是對軟件中的最小可測試單元在與軟件其他部分相隔離的情況下進(jìn)行的代碼級測試;
樁代碼起到了隔離和補(bǔ)齊的作用,使被測代碼能夠獨(dú)立編譯、鏈接,并運(yùn)行。
軟件測試52講---筆記整理