論單元測(cè)試之重要性,論單元測(cè)試

    單元測(cè)試的重要性不言而喻,自我開(kāi)發(fā)生涯以來(lái),從很少注釋過(guò)過(guò)場(chǎng)場(chǎng),到非常重視。愛(ài)掏網(wǎng) - it200.com

    單元測(cè)試為什么會(huì)讓人忽視呢?

    通常情況像一些查詢(xún)或者增刪改之類(lèi),拿我來(lái)說(shuō),即便報(bào)錯(cuò)我大概一掃,我就知道錯(cuò)誤是什么了,該如何排查,因?yàn)榫湍肧pringMVC來(lái)說(shuō)或者M(jìn)yBatis等,再不濟(jì)就是Spring的依賴(lài)注入問(wèn)題,拿MyBatis來(lái)說(shuō),要么就是sql問(wèn)題,要么就是參數(shù)問(wèn)題,再不濟(jì)就是與Spring動(dòng)態(tài)掃描有關(guān)或者是mybatis中專(zhuān)門(mén)寫(xiě)sql的配置文件某個(gè)地方語(yǔ)法錯(cuò)誤等,這些錯(cuò)誤都是可預(yù)見(jiàn)的,說(shuō)句不好聽(tīng)的話(huà),再不濟(jì)百度一搜,頓時(shí)分分秒就KO了。愛(ài)掏網(wǎng) - it200.com但是大家有沒(méi)有想過(guò)這樣一個(gè)問(wèn)題?為什么我們老是在犯這些重復(fù)性錯(cuò)誤呢?原因是什么呢?

    不重視測(cè)試。愛(ài)掏網(wǎng) - it200.com

    當(dāng)然了就專(zhuān)業(yè)來(lái)說(shuō),我們是軟件開(kāi)發(fā)工程師,專(zhuān)注于開(kāi)發(fā),至于測(cè)試方面,我們又不是專(zhuān)門(mén)的測(cè)試,管我們什么事。愛(ài)掏網(wǎng) - it200.com

    我只能說(shuō):此言差異。愛(ài)掏網(wǎng) - it200.com

    為什么呢?

    坦白的說(shuō),程序的Bug基本都是由于我們這些開(kāi)發(fā)人員導(dǎo)致的,比如說(shuō)代碼風(fēng)格亂七八糟,寫(xiě)完代碼看到功能實(shí)現(xiàn)了,就什么都不管了,也不多測(cè)測(cè),以至于每次都是測(cè)試人員來(lái)測(cè),發(fā)現(xiàn)誰(shuí)的錯(cuò)誤就通知誰(shuí),而誰(shuí)誰(shuí)就開(kāi)始改了。愛(ài)掏網(wǎng) - it200.com

    我認(rèn)真想了下,其實(shí)很多錯(cuò)誤是可以避免的。愛(ài)掏網(wǎng) - it200.com

    就拿我公司來(lái)說(shuō),我們沒(méi)有測(cè)試沒(méi)有前端沒(méi)有運(yùn)維,而我作為Java后臺(tái)開(kāi)發(fā),同時(shí)兼任前端、測(cè)試、運(yùn)維,記得在第一個(gè)項(xiàng)目初期時(shí),為了加快項(xiàng)目進(jìn)度,盡快讓老板看到對(duì)應(yīng)的效果,我們快速開(kāi)發(fā),能粘貼復(fù)制盡量不手寫(xiě),遇到問(wèn)題百度搜索,找到對(duì)應(yīng)的解決方案,代碼復(fù)制過(guò)來(lái),看能不能跑起來(lái),能跑起來(lái),就不管了,功能實(shí)現(xiàn)就好,跑不起來(lái),繼續(xù)百度或者Google,當(dāng)然一般情況百度比較多。愛(ài)掏網(wǎng) - it200.com

    前期項(xiàng)目急,甚至表單校驗(yàn)懶得寫(xiě),甚至有些代碼注釋都不寫(xiě),命名的話(huà)想到規(guī)范就規(guī)范,想不起,湊合吧,對(duì)于那時(shí)的我來(lái)說(shuō),這些都不是最重要的,最重要的是,每周完成工作任務(wù),提交代碼,功能實(shí)現(xiàn)。愛(ài)掏網(wǎng) - it200.com當(dāng)然欲速則不達(dá),再怎么快,總會(huì)因?yàn)檫@樣的錯(cuò),那樣的錯(cuò)導(dǎo)致項(xiàng)目進(jìn)度延遲。愛(ài)掏網(wǎng) - it200.com而且這些錯(cuò)誤是可以完全避免的。愛(ài)掏網(wǎng) - it200.com

    比如我們使用的框架是Spring+MyBatis+SpringMVC,采用的表現(xiàn)層技術(shù)是JSP,數(shù)據(jù)庫(kù)為MySQL。愛(ài)掏網(wǎng) - it200.com

    JSP對(duì)于廣大的Java同行們,并不陌生。愛(ài)掏網(wǎng) - it200.com

    話(huà)走的有點(diǎn)偏。愛(ài)掏網(wǎng) - it200.com本篇著重與凸顯單元測(cè)試之重要性。愛(ài)掏網(wǎng) - it200.com

    進(jìn)入正題:

    無(wú)論是前后端分離開(kāi)發(fā),還是想我上述列出的前后端不是特別分離的jsp技術(shù)等,單元測(cè)試起到不可估量的作用。愛(ài)掏網(wǎng) - it200.com

    我總結(jié)到,為什么表現(xiàn)層方面就會(huì)出現(xiàn)這樣的那樣的錯(cuò)誤,關(guān)鍵在于控制層代碼有問(wèn)題,也就是Controller層。愛(ài)掏網(wǎng) - it200.com

    通常情況下,像我現(xiàn)在開(kāi)發(fā),通常Controller代碼,我會(huì)通過(guò)單元測(cè)試測(cè)試好幾遍,當(dāng)然也做條件,這樣的話(huà),可以避免一些簡(jiǎn)單的錯(cuò)誤,什么空指針,參數(shù)問(wèn)題等等。愛(ài)掏網(wǎng) - it200.com而且對(duì)于表單提交方面的,例如注冊(cè)、添加用戶(hù)、批量增加或者修改等,都是可以通過(guò)單元測(cè)試測(cè)試是否正常。愛(ài)掏網(wǎng) - it200.com

    記得某位朋友曾經(jīng)說(shuō)過(guò),從單元測(cè)試到業(yè)務(wù)測(cè)試再到UI測(cè)試(WEB測(cè)試),越底層,花費(fèi)的時(shí)間成本越小,很容易找到錯(cuò)誤,越到高層越不易排錯(cuò),當(dāng)然了,排錯(cuò)的方式也很重要。愛(ài)掏網(wǎng) - it200.com

    這里我想說(shuō)的是,盡量能在單元測(cè)試可以預(yù)見(jiàn)錯(cuò)誤的前提下,盡量排錯(cuò)錯(cuò)誤的可能性,因?yàn)榈絎EB階段是非常讓人痛苦的。愛(ài)掏網(wǎng) - it200.com

    越簡(jiǎn)單的事情往往都會(huì)讓人忽略的,坦白的說(shuō)吧,我發(fā)現(xiàn)一個(gè)很貼近現(xiàn)實(shí)的情況,就是我們開(kāi)發(fā)人員,就我個(gè)人而言,有的時(shí)候覺(jué)得存在Bug,除非其他同事發(fā)現(xiàn)了,說(shuō)了下,或者實(shí)際業(yè)務(wù)出問(wèn)題,不然我不會(huì)改的,也懶得改。愛(ài)掏網(wǎng) - it200.com我想這是我半年前的心理。愛(ài)掏網(wǎng) - it200.com現(xiàn)在的我以寫(xiě)的代碼讓人盡可能容易讓同事看的懂,盡量簡(jiǎn)潔,同時(shí)現(xiàn)在我對(duì)于我寫(xiě)的代碼,我可以清楚的知道它是如何跑起來(lái)的,會(huì)出現(xiàn)哪些問(wèn)題。愛(ài)掏網(wǎng) - it200.com當(dāng)然了,對(duì)于一些簡(jiǎn)單的低級(jí)錯(cuò)誤,我現(xiàn)在已經(jīng)通過(guò)單元測(cè)試排除掉了。愛(ài)掏網(wǎng) - it200.com而且再加上嚴(yán)格的表單校驗(yàn)。愛(ài)掏網(wǎng) - it200.com統(tǒng)一規(guī)范的js書(shū)寫(xiě)和每天十到十五分鐘早會(huì)的匯報(bào)和簡(jiǎn)單交流及其加強(qiáng)溝通的情況下,我們的Bug越來(lái)越少了,代碼整體的性能也越來(lái)越好,簡(jiǎn)潔優(yōu)美,當(dāng)然了,這還遠(yuǎn)遠(yuǎn)不夠,相對(duì)于第一個(gè)項(xiàng)目而言,我們的第二個(gè)項(xiàng)目一直到現(xiàn)在的第三個(gè)項(xiàng)目,越來(lái)越好了。愛(ài)掏網(wǎng) - it200.com希望繼續(xù)努力保持下去。愛(ài)掏網(wǎng) - it200.com

    ?

    另外補(bǔ)充到:

    對(duì)于前后端交互,無(wú)論是AJAX或者vue.js等等,SpringMVC的Controller代碼,基本上都是可以通過(guò)單元測(cè)試得到結(jié)果的,單元測(cè)試過(guò)了,自然出錯(cuò)率會(huì)減少很多。愛(ài)掏網(wǎng) - it200.com

    當(dāng)然了,我說(shuō)的單元測(cè)試,不是簡(jiǎn)單的運(yùn)行就可以了,而是有條件的列出實(shí)際情況,這需要根據(jù)實(shí)際業(yè)務(wù)情況而定,當(dāng)然了也不能總是在單元測(cè)試了,畢竟開(kāi)發(fā)進(jìn)度要保持增長(zhǎng)。愛(ài)掏網(wǎng) - it200.com

    ?

    總結(jié):

    上面的描述,也許不好理解,也許重點(diǎn)不突出。愛(ài)掏網(wǎng) - it200.com下面我要列出我認(rèn)為重要的幾點(diǎn)?

    (1)小公司而言,后臺(tái)兼任前后臺(tái)開(kāi)發(fā),確保后臺(tái)參數(shù),可以在前臺(tái)校驗(yàn)的,盡量放在前臺(tái),這對(duì)于減輕服務(wù)器負(fù)載非常有幫助;

    (2)controller代碼中的各個(gè)@RequestMapping下的代碼是可以通過(guò)單元測(cè)試避免很多錯(cuò)誤的,例如空指針或者sql有誤或者傳參類(lèi)型問(wèn)題或者resultType或resultMap常見(jiàn)的問(wèn)題等,這些是可以避免的;

    (3)寫(xiě)代碼,無(wú)論是js或者Java代碼,一定要清楚的知道它是如何運(yùn)行的,這里說(shuō)的,并不是要你知道非常清晰的每一步,因?yàn)槟鞘怯?jì)算機(jī)底層原理,這個(gè)底層原理我也不懂,正在學(xué)習(xí)中。愛(ài)掏網(wǎng) - it200.com我所說(shuō)的知道它是如何運(yùn)行的,是指,你能通過(guò)大腦想象,描述它是怎么走了,比如這個(gè)參數(shù)傳到這個(gè),但是參數(shù)值有誤,會(huì)出現(xiàn)什么情況等等這樣的情況,這樣可以確保你的思維是清楚,思維的清楚,也代表代碼邏輯的清楚。愛(ài)掏網(wǎng) - it200.com作為開(kāi)發(fā)人員,連自己的代碼都不知道怎么描述,說(shuō)個(gè)所以然來(lái),那么他的代碼是非常糟糕的;

    (4)代碼,以追求簡(jiǎn)單易懂,清楚明了為主,讓維護(hù)的人易維護(hù),讓幾個(gè)月后的自己感謝自己。愛(ài)掏網(wǎng) - it200.com更讓整體系統(tǒng)性能更好。愛(ài)掏網(wǎng) - it200.com其實(shí),很多簡(jiǎn)單的事情堆積起來(lái)就是一件不平凡的事情。愛(ài)掏網(wǎng) - it200.com

    ?

    以上就說(shuō)這么多了,歡迎編程的友友們不吝賜教。愛(ài)掏網(wǎng) - it200.com

    ?

    聲明:所有內(nèi)容來(lái)自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
    發(fā)表評(píng)論
    更多 網(wǎng)友評(píng)論0 條評(píng)論)
    暫無(wú)評(píng)論

    返回頂部

    主站蜘蛛池模板: 五十路熟女人妻一区二区 | 成人免费av一区二区三区| 国产人妖视频一区在线观看| 红杏亚洲影院一区二区三区| 影音先锋中文无码一区| 日韩精品无码中文字幕一区二区| 国产日韩视频一区| 精品视频一区二区三区四区| 亚洲视频一区调教| 一区二区三区日韩| 另类免费视频一区二区在线观看| 成人国内精品久久久久一区| 国产成人精品一区二区三区| 国产熟女一区二区三区五月婷| 亚洲av成人一区二区三区观看在线| 日韩人妻一区二区三区蜜桃视频| 亚洲老妈激情一区二区三区| 一区二区视频传媒有限公司| 中文字幕在线观看一区二区三区| 亚洲一区二区三区在线视频| 国产av夜夜欢一区二区三区| 福利在线一区二区| 内射少妇一区27P| 一区二区三区四区精品| а天堂中文最新一区二区三区| 国产精品亚洲综合一区| 久久久精品日本一区二区三区| 日韩精品无码视频一区二区蜜桃 | 超清无码一区二区三区| 韩国资源视频一区二区三区| 亚洲一区二区无码偷拍| 国产主播在线一区| 成人国产精品一区二区网站公司| 国产品无码一区二区三区在线| 精品一区二区三人妻视频| 日本一区二区三区不卡在线视频 | 国产精华液一区二区区别大吗 | 亚洲欧美成人一区二区三区| 麻豆一区二区免费播放网站| 国产肥熟女视频一区二区三区 | 亚洲熟女综合色一区二区三区|