Blues Brothers的歌曲“Everybody Need Somebody”中有這樣幾句話:請(qǐng)人們記住,無(wú)論你是誰(shuí),無(wú)論你靠什么生活,總有一些事情我們是一樣的……”pbielicki在他的博客中認(rèn)為,對(duì)于軟件開(kāi)發(fā)者而言,相同的一些事情應(yīng)當(dāng)包括“單元測(cè)試”。本文作者的某些觀點(diǎn)雖然有些化,但確實(shí)介紹了單元測(cè)試的優(yōu)越性,并借此來(lái)極力推薦單元測(cè)試給每個(gè)軟件工程師/程序員/開(kāi)發(fā)者。
  不論是是不是敏捷開(kāi)發(fā)的fans,也許你會(huì)說(shuō)這種開(kāi)發(fā)方法很傻、很不成熟,對(duì)軟件開(kāi)發(fā)沒(méi)有任何幫助。也許你不會(huì)用也不喜歡Scrum,你會(huì)覺(jué)得XP很討厭,你這么說(shuō)沒(méi)問(wèn)題,因?yàn)檫@是個(gè)人口味的問(wèn)題。但是忘掉敏捷吧,忘掉那些程序和編程方法??單元測(cè)試你的代碼吧!

  我剛回顧了另外一個(gè)很復(fù)雜的程序但是里面沒(méi)有任何的單元測(cè)試,而且沒(méi)有任何的說(shuō)明文件。也許你讀得懂代碼也明白其意思,但我怎么知道它的功能是它應(yīng)該具備的功能呢?我怎么知道開(kāi)發(fā)他的人沒(méi)有寫(xiě)出錯(cuò)誤呢?

  單元測(cè)試不僅可以作為無(wú)錯(cuò)編碼一種輔助手段在一次性的開(kāi)發(fā)過(guò)程中使用,單元測(cè)試必須是可重復(fù)的,無(wú)論是在軟件修改,或是移植到新的運(yùn)行環(huán)境的過(guò)程中。因此,所有的測(cè)試都必須在整個(gè)軟件系統(tǒng)的生命周期中進(jìn)行維護(hù)。也許你會(huì)覺(jué)得這很麻煩,但雖然單元測(cè)試是由程序員自己來(lái)完成,終受益的也還是程序員自己?梢赃@樣理解,程序員有責(zé)任編寫(xiě)功能代碼,同時(shí)也有責(zé)任為自己的代碼編寫(xiě)單元測(cè)試。

  單元測(cè)試可以作為規(guī)格說(shuō)明來(lái)工作,測(cè)試能夠以規(guī)格說(shuō)明為基礎(chǔ)。代碼能夠針對(duì)它的規(guī)格說(shuō)明,而不是針對(duì)自身進(jìn)行測(cè)試。這樣的測(cè)試不僅能夠抓住編譯器的Bug,同時(shí)也能找到更多的編碼錯(cuò)誤,甚至是一些規(guī)格說(shuō)明中的錯(cuò)誤,因?yàn)楹玫囊?guī)格說(shuō)明可以使測(cè)試的質(zhì)量更高 。

  在這里,我概要地說(shuō)一下單元測(cè)試的好處:

  1、單元測(cè)試記錄軟件系統(tǒng)內(nèi)部和外部的結(jié)構(gòu);

  2、單元測(cè)試幫助你和其他開(kāi)發(fā)者迅速地看到是否“升級(jí)”的