單元測(cè)試

單元測(cè)試是什么
單元測(cè)試是針對(duì)程序的最小單元來(lái)進(jìn)行正確行檢驗(yàn)的測(cè)試工作。程序單元是應(yīng)用的最小可測(cè)試部件强胰。一個(gè)單元可能是單個(gè)程序舱沧、類、對(duì)象偶洋、方法熟吏。
單元測(cè)試的意義
減少bug
快速定位bug
提高代碼質(zhì)量
減少調(diào)試時(shí)間

減少bug
一個(gè)機(jī)器、由各種細(xì)小的零件組成玄窝,如果其中某個(gè)零件壞啦牵寺,機(jī)器運(yùn)行故障。必須保證每個(gè)零件都按設(shè)計(jì)圖要求的規(guī)格恩脂,機(jī)器才能正常運(yùn)行
一個(gè)可單元測(cè)試的工程帽氓、會(huì)把業(yè)務(wù)、功能分割成規(guī)模更小俩块、有獨(dú)立的邏輯部件黎休,稱為單元。單元測(cè)試的目標(biāo)玉凯,就是保證各個(gè)單元的邏輯正確性势腮。單元測(cè)試班長(zhǎng)工程各個(gè)零件按規(guī)格執(zhí)行,從而保證整個(gè)機(jī)器運(yùn)行正確漫仆,最大限度減少bug

提高代碼質(zhì)量
猶豫每個(gè)單元有獨(dú)立的邏輯嫉鲸,做單元測(cè)試時(shí)需要隔離外部依賴,確保這些依賴不影響驗(yàn)證邏輯歹啼。因?yàn)橐迅鞣N依賴分離玄渗,單元測(cè)試會(huì)促進(jìn)工程進(jìn)行組件拆分座菠,整理工程依賴關(guān)系,更大程度減少代碼耦合藤树。這樣寫(xiě)出來(lái)的代碼浴滴,更好維護(hù),更好擴(kuò)展岁钓,從而提高代碼質(zhì)量

快速定位bug升略、減少調(diào)試時(shí)間
如果程序有bug,我們運(yùn)行一次全部單元測(cè)試屡限,找到不通過(guò)的測(cè)試品嚣,可以很快的定位對(duì)應(yīng)的執(zhí)行代碼。修復(fù)代碼后钧大,運(yùn)行對(duì)應(yīng)的單元測(cè)試翰撑,如果還不通過(guò),繼續(xù)修改啊央,運(yùn)行測(cè)試眶诈,知道測(cè)試通過(guò)
對(duì)于Android項(xiàng)目,要測(cè)試某個(gè)功能點(diǎn)瓜饥,不用單元測(cè)試的話逝撬,必須運(yùn)行在真機(jī)上、模擬器上乓土,慢慢的debug找到問(wèn)題點(diǎn)宪潮,運(yùn)行程序到真機(jī),快則半分鐘趣苏,慢則幾分鐘坎炼。Junit只需在本地運(yùn)行即可,就幾秒的事拦键。有時(shí),寫(xiě)那個(gè)功能模塊的員工已離職檩淋,APP出錯(cuò)芬为,你根本不知道調(diào)試哪個(gè)類,如果離職的員工之前寫(xiě)了單元測(cè)試蟀悦,運(yùn)行一下立馬就找到問(wèn)題點(diǎn)了媚朦,單元測(cè)試大大減少調(diào)試時(shí)間,從而達(dá)到節(jié)約時(shí)間成本的效果

放心重構(gòu)
重構(gòu)日戈、每個(gè)開(kāi)發(fā)者都會(huì)經(jīng)歷询张,重構(gòu)后把代碼改壞了的情況并不少見(jiàn)。以往浙炼,寫(xiě)完一個(gè)框架份氧,運(yùn)行app唯袄,沒(méi)什么問(wèn)題,完事蜗帜。由于最初的框架并不是你寫(xiě)的恋拷,可謂牽一發(fā)動(dòng)全身,你改一個(gè)方法導(dǎo)致整個(gè)框架運(yùn)行失敗
如果你有單元測(cè)試厅缺,情況大不同蔬顾。寫(xiě)完一個(gè)類,把單元測(cè)試寫(xiě)啦湘捎,確保這個(gè)類邏輯正確诀豁。寫(xiě)第二個(gè)類,單元測(cè)試窥妇。舷胜。。寫(xiě)100個(gè)類秩伞,道理一樣逞带,每個(gè)類做到第一點(diǎn)保證邏輯正確性。100個(gè)類拼在一起肯定不會(huì)出現(xiàn)問(wèn)題纱新。大可以一邊重構(gòu)一邊運(yùn)行APP展氓,而不是整體重構(gòu)完提心吊膽的運(yùn)行

TDD測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
Test-Driver Development,測(cè)試驅(qū)動(dòng)開(kāi)發(fā)脸爱,是敏捷開(kāi)發(fā)的一項(xiàng)核心實(shí)踐和技術(shù)遇汞,也是一種設(shè)計(jì)方法論。TDD原理是開(kāi)發(fā)功能代碼之前簿废,先編寫(xiě)測(cè)試用例代碼空入,然后針對(duì)測(cè)試用例編寫(xiě)功能代碼,使其能夠通過(guò)族檬。由于TDD對(duì)開(kāi)發(fā)人員要求非常高歪赢,跟傳統(tǒng)開(kāi)發(fā)思維不一樣,因此實(shí)施起來(lái)相當(dāng)困難单料。
測(cè)試驅(qū)動(dòng)開(kāi)發(fā)有好處也有壞處埋凯。因?yàn)槊總€(gè)測(cè)試用例都是根據(jù)需求來(lái)的,或者說(shuō)把一個(gè)大需求分解成若干個(gè)小需求編寫(xiě)測(cè)試用例扫尖,所以測(cè)試用例寫(xiě)出來(lái)后白对,開(kāi)發(fā)這寫(xiě)的執(zhí)行代碼必須滿足測(cè)試用例。如果測(cè)試不通過(guò)换怖,則修改執(zhí)行代碼甩恼,知道測(cè)試用例通過(guò)。
好處:通過(guò)測(cè)試的執(zhí)行代碼,肯定滿足需求条摸,而且有助于與接口編程悦污,降低代碼耦合度,也極大降低bug出現(xiàn)幾率屈溉。
壞處:投入開(kāi)發(fā)資源塞关、由于測(cè)試用例在未進(jìn)行代碼設(shè)計(jì)之前寫(xiě),很有可能限制開(kāi)發(fā)者對(duì)代碼的整體設(shè)計(jì)子巾、可能引起開(kāi)發(fā)人員的不滿情緒帆赢,我覺(jué)得這點(diǎn)很嚴(yán)重,畢竟不是人人都喜歡單元測(cè)試线梗,盡管單元測(cè)試會(huì)給我們帶來(lái)相當(dāng)多的好處

總結(jié)
單元測(cè)試確實(shí)會(huì)給我們帶來(lái)相當(dāng)多的好處椰于,但不是立刻就能體現(xiàn)出來(lái)。正如買(mǎi)重疾保險(xiǎn)仪搔,交了很多保費(fèi)瘾婿,沒(méi)病沒(méi)痛,十幾年甚至幾十年用不上烤咧,最好就是一輩子用不上理賠偏陪,身體健康最重要,單元測(cè)試也是一樣煮嫌,寫(xiě)了可以買(mǎi)個(gè)放心笛谦,對(duì)代碼的一種保障,有bug盡快測(cè)試出來(lái)昌阿,沒(méi)bug更好饥脑。總不能說(shuō):寫(xiě)那么多單元測(cè)試懦冰,結(jié)果測(cè)不出bug灶轰,浪費(fèi)時(shí)間吧

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市刷钢,隨后出現(xiàn)的幾起案子笋颤,更是在濱河造成了極大的恐慌廓俭,老刑警劉巖亿胸,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異温鸽,居然都是意外死亡瓤鼻,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)贤重,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)茬祷,“玉大人,你說(shuō)我怎么就攤上這事并蝗〖婪福” “怎么了秸妥?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)沃粗。 經(jīng)常有香客問(wèn)我粥惧,道長(zhǎng),這世上最難降的妖魔是什么最盅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任突雪,我火速辦了婚禮,結(jié)果婚禮上涡贱,老公的妹妹穿的比我還像新娘咏删。我一直安慰自己,他們只是感情好问词,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布督函。 她就那樣靜靜地躺著,像睡著了一般激挪。 火紅的嫁衣襯著肌膚如雪辰狡。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,610評(píng)論 1 305
  • 那天垄分,我揣著相機(jī)與錄音宛篇,去河邊找鬼。 笑死锋喜,一個(gè)胖子當(dāng)著我的面吹牛些己,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嘿般,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼段标,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了炉奴?” 一聲冷哼從身側(cè)響起逼庞,我...
    開(kāi)封第一講書(shū)人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞻赶,沒(méi)想到半個(gè)月后赛糟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砸逊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年璧南,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片师逸。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡司倚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情动知,我是刑警寧澤皿伺,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站盒粮,受9級(jí)特大地震影響鸵鸥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丹皱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一妒穴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧种呐,春花似錦宰翅、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至阔墩,卻和暖如春嘿架,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背啸箫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工耸彪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人忘苛。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓蝉娜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親扎唾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子召川,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容