App下載

在國(guó)內(nèi),為什么大多數(shù)程序員不愿意編寫單元測(cè)試?

若即若離 2024-08-19 18:20:12 瀏覽數(shù) (1128)
反饋

單元測(cè)試,作為軟件開(kāi)發(fā)過(guò)程中至關(guān)重要的一環(huán),其優(yōu)點(diǎn)不言而喻:提升代碼質(zhì)量、加速bug定位、降低修復(fù)成本、延長(zhǎng)項(xiàng)目生命周期等等。

然而,與這些顯而易見(jiàn)的優(yōu)勢(shì)形成鮮明對(duì)比的是,在國(guó)內(nèi)大多數(shù)公司,單元測(cè)試的落地情況卻并不理想,這是什么呢?


一、單元測(cè)試的優(yōu)勢(shì)


1.提升代碼質(zhì)量,增強(qiáng)交付信心

單元測(cè)試為開(kāi)發(fā)人員提供即時(shí)反饋機(jī)制,幫助他們?cè)诖a編寫階段及時(shí)發(fā)現(xiàn)并修復(fù)問(wèn)題,從而提高代碼的健壯性和可靠性。

雖然單元測(cè)試不能完全替代系統(tǒng)測(cè)試和驗(yàn)收測(cè)試,但它無(wú)疑為構(gòu)建高質(zhì)量軟件奠定了堅(jiān)實(shí)基礎(chǔ)。

2.快速定位bug,提高調(diào)試效率

單元測(cè)試的測(cè)試范圍小、邏輯簡(jiǎn)單,一旦發(fā)現(xiàn)錯(cuò)誤,能夠迅速鎖定問(wèn)題代碼,避免在復(fù)雜的系統(tǒng)代碼中迷失方向,從而顯著提高調(diào)試效率。

3.降低bug修復(fù)成本,節(jié)省開(kāi)發(fā)時(shí)間

軟件開(kāi)發(fā)領(lǐng)域有一條著名的“10倍法則”:越晚發(fā)現(xiàn)bug,修復(fù)成本越高。

單元測(cè)試幫助開(kāi)發(fā)人員在編碼階段就解決大部分問(wèn)題,避免bug遺留到后期,從而節(jié)省寶貴的開(kāi)發(fā)時(shí)間和成本。


11

4.延長(zhǎng)項(xiàng)目生命周期,降低維護(hù)難度

良好的單元測(cè)試覆蓋率可以有效約束代碼風(fēng)格,提高代碼可讀性和可維護(hù)性,即使面對(duì)人員變動(dòng)和需求變更,也能保證項(xiàng)目的長(zhǎng)期穩(wěn)定運(yùn)行。

我們已經(jīng)知道了單元測(cè)試是多么重要的。為什么程序員仍然不編寫單元測(cè)試呢?為什么程序員總是有理由拒絕編寫單元測(cè)試呢?


二、為什么不寫單元測(cè)試


1.應(yīng)用軟件開(kāi)發(fā)模式與單元測(cè)試的適配性問(wèn)題

國(guó)內(nèi)軟件行業(yè)以應(yīng)用軟件開(kāi)發(fā)為主,這類軟件的特點(diǎn)是需求變化快、迭代周期短,而單元測(cè)試更適用于需求穩(wěn)定、系統(tǒng)復(fù)雜的服務(wù)器端開(kāi)發(fā)或算法開(kāi)發(fā)。

頻繁的需求變更會(huì)導(dǎo)致單元測(cè)試代碼需要不斷修改,甚至推倒重來(lái),反而增加了開(kāi)發(fā)人員的工作量,降低了開(kāi)發(fā)效率。

2.快速迭代的開(kāi)發(fā)模式與單元測(cè)試的成本博弈

在國(guó)內(nèi)互聯(lián)網(wǎng)行業(yè),“唯快不破”的理念深入人心,快速迭代、快速試錯(cuò)成為主流開(kāi)發(fā)模式。

相較于投入大量時(shí)間和人力進(jìn)行單元測(cè)試,企業(yè)更傾向于選擇快速開(kāi)發(fā)、快速上線,通過(guò)功能測(cè)試和用戶反饋來(lái)驗(yàn)證產(chǎn)品,即使代碼質(zhì)量有所犧牲也在可接受范圍內(nèi)。

3.單元測(cè)試對(duì)開(kāi)發(fā)人員的技術(shù)要求與人力成本的制約

編寫有效的單元測(cè)試需要開(kāi)發(fā)人員具備扎實(shí)的編程基礎(chǔ)和測(cè)試思維,這無(wú)疑提高了對(duì)開(kāi)發(fā)人員的要求。

然而,在國(guó)內(nèi)快速迭代的開(kāi)發(fā)模式下,企業(yè)很難負(fù)擔(dān)高水平開(kāi)發(fā)人員的成本,也難以提供充足的時(shí)間和資源進(jìn)行單元測(cè)試培訓(xùn)。

4.單元測(cè)試與測(cè)試人員技能要求的錯(cuò)位

將單元測(cè)試完全交給測(cè)試人員執(zhí)行并不現(xiàn)實(shí),因?yàn)檫@需要測(cè)試人員具備與開(kāi)發(fā)人員相當(dāng)甚至更高的代碼理解能力。

而目前國(guó)內(nèi)軟件測(cè)試行業(yè)更注重黑盒測(cè)試,即從用戶角度進(jìn)行功能驗(yàn)證,對(duì)白盒測(cè)試的需求相對(duì)較少,這也導(dǎo)致了白盒測(cè)試崗位需求的減少。

5.國(guó)內(nèi)外軟件開(kāi)發(fā)環(huán)境和理念的差異

與國(guó)內(nèi)追求快速迭代的應(yīng)用軟件開(kāi)發(fā)不同,國(guó)外很多公司專注于系統(tǒng)級(jí)軟件開(kāi)發(fā),這類軟件需求穩(wěn)定、對(duì)可靠性要求極高,因此更重視代碼質(zhì)量和單元測(cè)試。

例如,Google 公司推崇“測(cè)試驅(qū)動(dòng)開(kāi)發(fā)”的理念,研發(fā)測(cè)試比例高達(dá) 10:1,這與其對(duì)軟件質(zhì)量的極致追求密不可分。



這么看來(lái),國(guó)內(nèi)公司單元測(cè)試難以落地也不全是程序員的“鍋”,而是多種因素共同作用的結(jié)果。

在應(yīng)用軟件快速迭代、需求頻繁變化的背景下,單元測(cè)試的投入產(chǎn)出比需要被重新評(píng)估。

當(dāng)然,這并不意味著單元測(cè)試毫無(wú)價(jià)值,對(duì)于追求高質(zhì)量、高可靠性的系統(tǒng)級(jí)軟件開(kāi)發(fā)來(lái)說(shuō),單元測(cè)試依然是不可或缺的保障。


1 人點(diǎn)贊