如何鑒定什么是高質(zhì)量的測(cè)試?首先框定一下Scope,本文所說(shuō)的測(cè)試是面向用戶業(yè)務(wù)需求的測(cè)試,寫(xiě)的測(cè)試是面向真實(shí)業(yè)務(wù)需求的,站在真實(shí)用戶的視角去看的。如果你的寫(xiě)測(cè)試不是面向真實(shí)業(yè)務(wù)的,就需要你使用用戶視角去看問(wèn)題。什么是用戶視角呢?舉個(gè)例子,當(dāng)你的系統(tǒng)進(jìn)行了分層設(shè)計(jì),你在測(cè)試用戶登錄功能中的ApplicationService層時(shí),此時(shí),Controller層就是你的用戶,你寫(xiě)測(cè)試是需要在Controller這個(gè)用戶的視角去看。
借用中醫(yī)看人的比方,首先看你的面相、氣色、體態(tài),然后再給你把脈,感知你的心跳節(jié)奏、脈搏狀況。無(wú)非是先看外、再探內(nèi)。一個(gè)健康的人應(yīng)該是內(nèi)外和諧的。內(nèi)部氣血相通、外部面色紅潤(rùn),再加上體型優(yōu)雅,大半可以斷定這是一個(gè)健康的人。
借鑒中醫(yī)看人的套路來(lái)看看什么是高質(zhì)量的測(cè)試。首先,從外形上看,測(cè)試命名是要表達(dá)業(yè)務(wù)含義的,測(cè)試命名推薦采用能夠符合give…when…then三段式格式,另外強(qiáng)烈建議不要采取駝峰命名法,即便你用的Java語(yǔ)言。
外形還沒(méi)看,再來(lái)看測(cè)試體,測(cè)試題是否三步曲齊全:
- Given:有沒(méi)有數(shù)據(jù)準(zhǔn)備。
- When:有沒(méi)有目標(biāo)調(diào)用。
- Then:有沒(méi)有斷言。
具備了基本形狀,我們?cè)偃タ纯催@些光鮮外表下是否“氣血相同”?首先看三步曲是否邁對(duì)了:
- Given,是否是用戶關(guān)注的場(chǎng)景(有沒(méi)有跟測(cè)試名一致),如果不是豈不是 表里不一。
- When,是否正確調(diào)用,是否按要求調(diào)用,如果不是豈不是 聲東擊西。
- Then,是否是用戶真正關(guān)注的結(jié)果,如果不是豈不是 掛羊頭賣(mài)狗肉。
三步曲邁對(duì)了,接著可以發(fā)出靈魂的拷問(wèn):
- 這個(gè)測(cè)試到底測(cè)試的哪個(gè)用戶需求場(chǎng)景?是真實(shí)的用戶需求,還是我自己假想的需求。
- 測(cè)試用例足夠覆蓋全所有的用戶需求場(chǎng)景了嗎?我要不要找BA聊聊看漏了什么場(chǎng)景,要不要找QA問(wèn)問(wèn)有沒(méi)有邊界場(chǎng)景沒(méi)覆蓋到。
最后,整體反觀所有測(cè)試。有一些通用標(biāo)準(zhǔn)。是否有大量重復(fù)代碼,測(cè)試是一等公民,需要你給予足夠的重視。
當(dāng)然,有了上述的診斷方法,不代表你就能寫(xiě)出高質(zhì)量的測(cè)試,要想寫(xiě)出高質(zhì)量的測(cè)試,還需要更多的思考和練習(xí)。《有效的單元測(cè)試》能夠給你不同的視角,激發(fā)你的思考。FizzBuzz、GildedRose、Tennis、Args、GuessNumber、MarsRover這些都是很好的練習(xí)素材。
另外,測(cè)試是敏捷中為數(shù)不多、價(jià)值連城的活文檔,這份文檔你一定要堅(jiān)持寫(xiě),而且還要寫(xiě)出高質(zhì)量的內(nèi)容。