Spring+SpringMVC+MyBatis+easyUI整合優(yōu)化篇(三)代碼測試

<h1>日常啰嗦</h1>

看到標題你可能會問為什么這一篇會談到代碼測試纵揍,不是說代碼優(yōu)化么?前兩篇主要是講了程序的輸出及Log4j的使用议街,Log能夠幫助我們進行bug的定位泽谨,優(yōu)化開發(fā)流程,而代碼測試有什么用呢?其實測試是為了驗證自己所編寫的代碼吧雹,及時排除錯誤骨杂,減少bug,所以我認為雄卷,減少錯誤也是優(yōu)化的一個方案體現(xiàn)搓蚪,而且如果進行了合理的單元測試,也可以幫助優(yōu)化開發(fā)流程丁鹉,一旦出現(xiàn)問題妒潭,使得bug的定位過程更加迅速。

<h1>你愿意進行單元測試嗎鳄炉?</h1>

其實杜耙,像第一篇文章所說的,對于打印輸出信息拂盯,我們更習慣于使用System.out命令佑女,所以很多時候,習慣決定了我們的編碼方式谈竿,那么你習慣于做單元測試嗎团驱?

我感覺很多人可能都不是很樂忠于在開發(fā)工作做這件事,因為主觀意識中會覺得這是一件"麻煩"的事情空凸,或者說效果不是很明顯的一件事嚎花。

針對于此,我也粗略的整理了一下根由呀洲,對各個原因紊选,也分別談一下自己的想法,當然道逗,都是個人看法兵罢,大家覺得有用就看,覺得無用忽略即可滓窍。

  • 開發(fā)項目時并沒有明確的要求我去寫單元測試卖词。

因為沒人要求,所以就不寫單元測試吏夯。我認為作為一個技術(shù)人員此蜈,應該關(guān)注自我增值和技術(shù)上的提升,要求應該是自己提給自己的,并不是說項目沒有要求或者沒人督促我們就不去做一些事情了,這種裝鴕鳥式的態(tài)度和鉆空子的小聰明不值得提倡,我們不僅要對項目負責,其實更多的也是對自己負責蚓炬,嚴格要求自己,多學習白胀,才能更快的進步箱沦,不要隨波逐流陈醒,不要進入其他人的節(jié)奏中。

  • 業(yè)務(wù)邏輯比較簡單不值得編寫單元測試瞧甩。

這又是一個理由钉跷,而這個理由的深層次的原因,應該是來源于對自己的自信肚逸,自信是件好事爷辙,但是要掌握好其中的度。相對于機器來說朦促,擁有主觀意識的人類更容易犯一些錯誤膝晾,錯誤可能不大,或者是一些低級錯誤务冕,比如忘記寫一個分號血当、忘記判空、忘記類型轉(zhuǎn)換...這些都是小錯誤禀忆,但是不注意的話就會出現(xiàn)bug臊旭,然后再去花時間修修補補。
所謂的業(yè)務(wù)邏輯比較簡單箩退,其實是相對的离熏。當你對某一塊業(yè)務(wù)邏輯很熟悉的時候,你自然會認為它很簡單戴涝。然而滋戳,單元測試的必要性并不是僅僅在于測試代碼的功能是否正確,還在于啥刻,當其他同事在了解你的業(yè)務(wù)的時候奸鸯,能夠很快的通過單元測試來熟悉代碼的功能,甚至不用去讀代碼郑什,就能夠知道它做了哪些事情府喳。因此,寫單元測試不僅是解放了自己蘑拯,更方便了別人钝满。

  • 做了少量的單元測試。

這里可能有幾方面的原因:
1申窘、為了完成編碼任務(wù)弯蚜,沒有足夠的時間編寫單元測試。
2剃法、在項目的前期還是盡量去編寫單元測試碎捺,但是越到項目的后期就越失控。
3、和上一個原因類似收厨,對自己足夠自信晋柱,于是只挑一小部分進行單元測試。

我們簡單的梳理一下開發(fā)過程诵叁,開發(fā)過程:需求—>編碼—>自測—>預發(fā)布—>測試—>回滾—>改bug—>發(fā)布—>發(fā)現(xiàn)bug—>改bug—>發(fā)布……我們可以觀察到雁竞,整個過程中改bug出現(xiàn)了很多次,它與編碼工作一樣拧额,都是開發(fā)過程中不可缺少的一部分碑诉,編碼只是整個開發(fā)過程中的一部分,開發(fā)不僅僅是編碼而已侥锦。
編碼的完工≠項目的完工进栽。
因為自測的不完備,導致預發(fā)布過程或者后期的冒煙測試難度加大恭垦,加長回滾和bug修復過程快毛,這是一個自相矛盾的事情。

  • 測試人員會抓住所有的bug署照,用不著進行單元測試祸泪。

也會有人把鍋丟給測試,可能存在這樣一個觀點建芙,既然有測試了没隘,干嘛還要我費那么多精力去寫測試用例?
但是測試工程師往往不在意代碼層面禁荸,其測試工作只是業(yè)務(wù)上的集成測試右蒲,也就是我們熟知的黑盒測試,更多的是進行功能測試赶熟,對代碼中單個方法是沒有辦法進行測試的瑰妄,因此,測試出的bug的范圍也會很廣映砖,根本不能確定bug的范圍及發(fā)生的原因间坐,所以問題的定位及bug產(chǎn)生的原因,還得去花一些時間來確認邑退,如果已經(jīng)進行了自測竹宋,知道了哪部分代碼是健康的,至少可以縮小檢查的范圍地技,減少定位bug所花的時間蜈七。而且,單元測試也就是順手的一件事莫矗,雖然不能解決百分百的麻煩飒硅,但是給各方人員提供的便利也是很多的砂缩。

  • 不會寫。

想當初剛進入這個行業(yè)三娩,我壓根兒不知道這個事情庵芭,也根本沒有單元測試的概念,因為那時候我連開發(fā)工作都做的不是很好雀监,更不要提過程優(yōu)化了喳挑,直到一段時間后,熟悉了開發(fā)流程滔悉,可以把開發(fā)做好的時候,才開始慢慢接觸流程優(yōu)化单绑,但是一開始碰到的問題就是回官,我不會。
其實網(wǎng)上教程也是很多的搂橙,下一篇會進行簡單的介紹和教程歉提,代碼也會放到github中,不會可以學区转,但是不做的話就有些不負責任了苔巨。

<h1>代碼測試的重要性及必要性</h1>

測試常常是程序員十分厭倦的一個事情。測試能給我們帶來什么废离?了解這些是非常重要的侄泽,測試不可能保證一個程序是完全正確的,但是測試卻可以增強我們對程序完整的信心蜻韭,測試可以讓我們相信程序做了我們期望它做的事情悼尾。測試能夠使我們盡早的發(fā)現(xiàn)程序的bug和不足。
當然肖方,我們主要討論的是單元測試闺魏。單元測試是一個方法層面上的測試,也是最細粒度的測試俯画。用于測試一個類的每一個方法都已經(jīng)滿足了方法的功能要求析桥。在開發(fā)中,對于自己開發(fā)的模塊艰垂,只有在通過單元測試之后泡仗,才能提交到SVN庫或者Git 庫。
再一次強調(diào)材泄,你不是一個人沮焕,你的代碼有問題,同事pull下來的代碼也是有問題的拉宗,浪費大家的時間峦树。對于這件事情辣辫,我是深有感觸的,在去年的一次項目開發(fā)過程中魁巩,由于我沒有做好代碼審查和單元測試匆匆上傳到代碼庫急灭,導致其他開發(fā)人員也無法正常開展工作,還要幫著我去修改bug谷遂,這件事導致我有些自責葬馋,也在后續(xù)的開發(fā)工作中更認真,更專注肾扰,雖然偶爾也會犯錯畴嘶,但是在態(tài)度上不再吊兒郎當、無關(guān)痛癢集晚,代碼測試有時候也能體現(xiàn)出一個人的態(tài)度問題窗悯。
知道測試的重要性最好,只要寫就是對項目和編碼認真的體現(xiàn)偷拔,雖然一開始可能寫的不是很好很完善蒋院,邁出第一步就是正確的,隨著測試編碼的增多莲绰,測試用例也會逐漸完善欺旧,關(guān)鍵是要明確和認識到單元測試的重要性。

<h1>最終目的</h1>

前面論述了一下單元測試難以推進的原因以及單元測試的重要性蛤签,當我們開始認真的去做這件事了辞友,我們也要做好這件事,我們想要追求的是完美震肮,即使無法十全十美踏枣,也要盡自己的全力去爭取寫出漂亮的代碼,漂亮指得是易讀钙蒙、簡潔茵瀑、健壯,為了達到這個目的躬厌,我們就需要做覆蓋率高以及更完善的單元測試马昨。
測試的覆蓋率和完備性越高對于項目來說就越是一個利好的信號,即使做了單元測試扛施,但是較為懶散鸿捧,隨隨便便寫了幾個測試用例,這不能算得上單元測試疙渣,這種行為不僅是對項目不負責任匙奴,也是對自己不負責任。
不能和不為區(qū)別是很大的妄荔,不能代表的就是你沒有能力去做到一件事泼菌,而不為則是明明能做到卻不做谍肤。對于不能,那么首先要做的哗伯,就是通過自己的努力和學習將不能變?yōu)槟芑拇В赡墁F(xiàn)在項目中并沒有做單元測試,原因是因為不會焊刹,那就要學習如何去進行單元測試系任,掌握這個技能。

<h1>結(jié)語</h1>

認真些虐块,端正自己的態(tài)度俩滥,做好自己的單元測試。

(怎么感覺說出這些話的我這么正氣凜然贺奠,我不像是個剛正不阿的五道杠青年啊举农,哈哈哈哈哈。)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末敞嗡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子航背,更是在濱河造成了極大的恐慌喉悴,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玖媚,死亡現(xiàn)場離奇詭異箕肃,居然都是意外死亡,警方通過查閱死者的電腦和手機今魔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門勺像,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人错森,你說我怎么就攤上這事吟宦。” “怎么了涩维?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵殃姓,是天一觀的道長。 經(jīng)常有香客問我瓦阐,道長蜗侈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任睡蟋,我火速辦了婚禮踏幻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘戳杀。我一直安慰自己该面,他們只是感情好夭苗,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吆倦,像睡著了一般听诸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蚕泽,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天晌梨,我揣著相機與錄音,去河邊找鬼须妻。 笑死仔蝌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的荒吏。 我是一名探鬼主播敛惊,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼绰更!你這毒婦竟也來了瞧挤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤儡湾,失蹤者是張志新(化名)和其女友劉穎特恬,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徐钠,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡癌刽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了尝丐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片显拜。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖爹袁,靈堂內(nèi)的尸體忽然破棺而出远荠,到底是詐尸還是另有隱情,我是刑警寧澤失息,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布矮台,位于F島的核電站,受9級特大地震影響根时,放射性物質(zhì)發(fā)生泄漏瘦赫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一蛤迎、第九天 我趴在偏房一處隱蔽的房頂上張望确虱。 院中可真熱鬧,春花似錦替裆、人聲如沸校辩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宜咒。三九已至惠赫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間故黑,已是汗流浹背儿咱。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留场晶,地道東北人混埠。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像诗轻,于是被迫代替她去往敵國和親钳宪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,727評論 25 707
  • 1.測試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程扳炬、活動和任務(wù)的結(jié)構(gòu)性框架吏颖。軟件項目的開發(fā)包括:需求、設(shè)...
    Mr希靈閱讀 21,949評論 7 278
  • 1.問:你在測試中發(fā)現(xiàn)了一個 bug 恨樟,但是開發(fā)經(jīng)理認為這不是一個 bug 半醉,你應該怎樣解決。 首先厌杜,將問題提...
    qianyewhy閱讀 9,236評論 4 123
  • 文章來自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,188評論 2 126
  • 自上了高中以來夯尽,我感覺我自己變了很多,變得浮夸登馒、驕傲匙握、不可一世!對身旁的同學的勸阻不屑于顧陈轿,從當初的豪言壯志到如今...
    墨心i閱讀 200評論 0 0