01 為什么需要測試
我們按照產(chǎn)品確定的需求享扔,用編程語言把需求邏輯實現(xiàn)了狱意。但是筋量,怎么驗證我們的代碼實現(xiàn)是符合產(chǎn)品的需求呢烹吵?這個時候碉熄,就需要測試了。
02 測試的分類
就我們常見的測試肋拔,有以下幾種類型锈津。
1)前端功能的手工測試,即像正常的用戶一樣凉蜂,手工使用我們開發(fā)出來的每個功能琼梆,如果軟件的一切流程都符合需求的預(yù)期,就說明測試通過了窿吩。
2) 后端的接口測試茎杂,與前端測試類似,也是通過輸入?yún)?shù)纫雁,請求接口后煌往,獲得響應(yīng)值。通過觀察響應(yīng)值與預(yù)期值的比較轧邪,得出測試結(jié)果刽脖。
以上兩類手工測試的步驟,其實又可以通過腳本錄制或編寫忌愚,實現(xiàn)自動化測試曲管。
3)單元用例測試。這個是從更細(xì)的粒度來對代碼邏輯進行測試硕糊,它關(guān)注的往往是比較單一的小代碼片段院水,一個函數(shù)或方法,就可以編寫對應(yīng)的單元測試癌幕。
4)性能測試。顧名思義昧穿,就是針對性能進行的測試勺远,通過大量的并發(fā)請求,來測試服務(wù)器的處理能力时鸵;通過多任務(wù)處理胶逢,來測試前端渲染的速度,等等饰潜,都是性能測試初坠。
5)安全測試。從安全的角度來對軟件進行測試彭雾,就是類似黑客攻擊的方式碟刺,嘗試找出代碼可能存在的安全漏洞。
03 該怎樣對待測試
在編程界薯酝,有“測試驅(qū)動”的開發(fā)模式半沽,就是在寫代碼前爽柒,先寫測試用例,每次覺得代碼邏輯寫完了者填,就跑一遍測試用例浩村,只有測試通過了才算完成。但是占哟,據(jù)我了解心墅,大部分的開發(fā)人員,包括我榨乎,也沒有能夠按照“測試驅(qū)動”的模式開發(fā)怎燥。
很多時候,我們都是在需求排期壓力下谬哀,匆匆寫完業(yè)務(wù)邏輯就算完成開發(fā)了刺覆。如果要求嚴(yán)格一點的公司,會要求測試用例史煎,但那也是在開發(fā)完需求后谦屑,再按照已完成的邏輯,造出來一些簡單的用例篇梭,其測試點根本無法覆蓋大部分的邊界條件氢橙。
在這么多年的開發(fā)經(jīng)驗里,我覺得測試是我們開發(fā)人員一個很容易忽略的地方恬偷。如果能認(rèn)真對待測試悍手,其實對我們的代碼質(zhì)量會有很大的幫助,也減輕了將來重構(gòu)代碼的負(fù)擔(dān)袍患。有時候坦康,我們要動一塊很久前的代碼,即使這段代碼是自己寫的诡延,也不太記得當(dāng)時的邏輯細(xì)節(jié)了滞欠。如果有完善的測試用例,不管你怎么改肆良,只要保證測試用例能通過筛璧,就基本不會出錯了。
04 后端怎樣做好測試
作為一名后端開發(fā)人員惹恃,首先是要保證單元測試的覆蓋率夭谤。從細(xì)粒度上就保證了覆蓋大部分代碼,那么最終交付的代碼就會比較穩(wěn)定巫糙。當(dāng)你看一個方法不順眼朗儒,要把它重構(gòu)的時候,只要保證對這個方法的調(diào)用方能得到同樣的結(jié)果,就可以放心地改了采蚀。
接口測試是必須的疲牵。我們最終交付出去的,其實是前端需要的一個個接口榆鼠,因此纲爸,對接口進行測試,是對我們工作成果的保障妆够。后端提供的接口识啦,有可能是不同版本的前端都會調(diào)用的,我們每次修改代碼神妹,都必須滿足所有支持的在用版本颓哮。沒有接口測試,前端同學(xué)每次聯(lián)調(diào)都發(fā)現(xiàn)得到不同的結(jié)果鸵荠,是會 kill 人的啊冕茅。
性能測試視情況來做。如果項目的目標(biāo)用戶數(shù)是一個較大的數(shù)量級蛹找,就要考慮系統(tǒng)的性能問題了姨伤。而對于一般的內(nèi)部幾百人使用的系統(tǒng),一般也不會有太大的性能問題庸疾,等客戶反饋操作響應(yīng)慢時乍楚,再關(guān)注性能問題也可。
05 測試工具的使用
對于JAVA程序員來說届慈,單元測試一般是JUnit了徒溪,而接口測試和性能測試,我覺得都可以使用JMeter這款開源工具金顿。這些都是比較成熟臊泌,通用的測試工具,有社區(qū)的支持揍拆,也有大量用戶的使用分享渠概。工具不在多,在于熟練精通礁凡。用好一個工具高氮,自己有能力還可以擴展工具慧妄,使自己的能力得到延續(xù)顷牌,就是很好的選擇。
06 結(jié)語
做任何事情塞淹,都應(yīng)該認(rèn)真對待窟蓝。要想寫出穩(wěn)定、高質(zhì)量的代碼,就要認(rèn)真做好測試這件事运挫;要想在技術(shù)之路上走得更遠状共,就不能滿足于實現(xiàn)需求。每一個好開發(fā)谁帕,都應(yīng)該是一個好測試峡继。