新聞中心
單元測試是一種良好的代碼質(zhì)量快速反饋方式。其類似于對編譯器的擴(kuò)展,能夠幫助我們識別業(yè)務(wù)邏輯。功能全面的單元測試套件能夠防止各類低級錯誤,加速產(chǎn)品發(fā)布并幫助我們更為高效地處理年代久遠(yuǎn)的陳舊代碼。

即使擁有如此可觀的收益,為什么單元測試不應(yīng)由開發(fā)者編寫?具體理由如下:
1. 因?yàn)槟皇莻€“碼農(nóng)”
原諒我的表現(xiàn)略有無禮。不過必須承認(rèn),相當(dāng)一部分開發(fā)者并沒有自己的思維與判斷,或者對除薪酬之外的事物毫不關(guān)心。何謂“碼農(nóng)”?這代表的是那些只知道根據(jù)指示行事的開發(fā)者群體——老板要求試試JavaEE 5?“沒問題?!崩习逡笫褂猛瑯拥腎DE?“沒問題?!崩习逡缶幋a標(biāo)準(zhǔn)支持匈牙利符號?“沒問題。”他們只是在機(jī)械地執(zhí)行上級下達(dá)的任務(wù)。單元測試是什么?能幫我增加收入嗎?如果不能,一切免談。
2. 對于單元測試并不了解
很多開發(fā)者可能壓根沒聽說過單元測試。(這也可能是教育的鍋。我自己擁有計(jì)算機(jī)科學(xué)學(xué)士學(xué)位,但我在工作之前從來就沒聽說過‘單元測試’這個詞兒。)因此,在將這項(xiàng)任務(wù)交給開發(fā)人員之前,單元測試工作必須由技能出色且經(jīng)驗(yàn)豐富的***負(fù)責(zé),并由其建立規(guī)范引導(dǎo)各位開發(fā)人員了解并學(xué)習(xí)相關(guān)概念。
3. 開發(fā)者編寫的代碼質(zhì)量太過恐怖
一部分開發(fā)者并不了解如何在Servlet中編寫低級JDBC代碼。對他們來說,關(guān)注分離與高內(nèi)聚僅僅是兩個他們永遠(yuǎn)用不到的計(jì)算機(jī)科學(xué)概念。我猜這類開發(fā)者很少編寫單元測試,因?yàn)樗麄兊拇a本身壓根無法進(jìn)行測試。單單是弄清代碼中的相關(guān)依賴性就足以嚇倒他們,根本不用提編寫測試方案。另外,某些編碼習(xí)慣也會影響到代碼的可預(yù)測性——比如字段注入,有中槍的沒?
4. 過分狂妄自大
必須承認(rèn),有時候我自己也存在這類問題。特別是在獨(dú)立工作時,我會以為自己的代碼編寫精彩優(yōu)異,基本根本不需要進(jìn)行什么單元測試。當(dāng)然,出于專業(yè)精神,我會強(qiáng)迫自己進(jìn)行一些測試,并很快發(fā)現(xiàn)自己的得意之作其實(shí)存在問題。在我看來,解決這種狂妄情緒的***方式就是參與團(tuán)隊(duì)合作,通過高透明度方式接受質(zhì)量指標(biāo)的檢驗(yàn)。只有這時,我們才能真正意識到測試機(jī)制的意義。
5. 您更像是“牛仔”還是“顧問”?
我們都希望成為編程領(lǐng)域的牛仔或者說超級英雄,憑借一己之力快速解決問題,但這同時往往會犧牲代碼的嚴(yán)謹(jǐn)性。我們對于測試工作不太在意(甚至完全不在意),因?yàn)槠渲荒茯?yàn)證現(xiàn)有應(yīng)用架構(gòu),而非生成功能齊備的軟件。這種浮躁而狂妄的思維會令我們對測試工作不屑一顧,因此即使被迫接受相關(guān)工作,其結(jié)果也可想而知。
6. 您在內(nèi)心中已經(jīng)選擇放棄
也許您目前正在開發(fā)的代碼根本沒機(jī)會被納入生產(chǎn)環(huán)境。也許您的用戶群體只是極少數(shù)人。也許企業(yè)的發(fā)展愿景與您的個人定位有所偏差。無論出于何種理由,我們都或多或少經(jīng)歷過這種心灰意冷的狀況。如果對代碼甚至工作產(chǎn)生了冷漠或者反感情緒,那么單元測試絕對不會被納入議事日程。這里我給大家提個建議:如果真的出現(xiàn)這種狀況,那么別逼著自己編寫什么單元測試了——拿這時間找份新工作吧。
7.企業(yè)文化并不重視單元測試
項(xiàng)目驅(qū)動型企業(yè)往往會忽視代碼質(zhì)量及可維護(hù)性的重要價值,因?yàn)槠涿黠@更關(guān)注項(xiàng)目完成時間及預(yù)算。在這種情況下,請直接放棄,畢竟單元測試在急功近利的環(huán)境下毫無生存機(jī)會。
8.您面對著令人費(fèi)解的代碼
根據(jù)我的個人經(jīng)驗(yàn),需要維護(hù)大規(guī)模復(fù)雜代碼庫的開發(fā)者很少進(jìn)行單元測試。這很正常,畢竟維護(hù)性團(tuán)隊(duì)中成員的技能水平往往相對較低,或者說付出的成本與回報(bào)不成正比。同樣的,管理層可能也不愿投資擴(kuò)大單元測試套件。這樣的思維往往導(dǎo)致企業(yè)以短期目標(biāo)作為文化價值取向,但這也很容易導(dǎo)致開發(fā)人員創(chuàng)建出復(fù)雜的代碼庫——惡性循環(huán),就是這么回事
9.企業(yè)文化在不知不覺中扼殺了單元測試
很多項(xiàng)目驅(qū)動型企業(yè)往往只在表面上執(zhí)行單元測試,但并不會將其與項(xiàng)目期限或者預(yù)算水平一樣納入業(yè)績考核。另外,某些企業(yè)可能強(qiáng)制要求某些并未參與開發(fā)的人員在規(guī)定期限內(nèi)完成修復(fù)工作。這種方針使得開發(fā)者肆無忌憚地向生產(chǎn)環(huán)境中投放高風(fēng)險(xiǎn)代碼,畢竟其無需為后續(xù)錯誤負(fù)責(zé)。
總結(jié)
面對以上理由,單元測試也許確實(shí)不應(yīng)由開發(fā)者負(fù)責(zé)編寫。但在這里我還要***呼吁一句:請務(wù)必認(rèn)真對待單元測試,其對于企業(yè)的長期健康發(fā)展至關(guān)重要!
網(wǎng)站題目:單元測試不應(yīng)由開發(fā)者編寫的九大理由
網(wǎng)頁地址:http://www.dlmjj.cn/article/dhddpjs.html


咨詢
建站咨詢
