感謝測(cè)試大牛邰曉梅(博客)的推薦。最近讀了《Fifty quick ideas to improve your tests》
這本書真的很不錯(cuò)
有可愛(ài)的插圖
也有可怕的樣例
偷學(xué)一點(diǎn)出去賣,收到熱烈的反饋
一點(diǎn)心得
書中提出了50條關(guān)于改進(jìn)測(cè)試的點(diǎn)子,按照主題分為產(chǎn)生測(cè)試靈感,設(shè)計(jì)好的case,改進(jìn)系統(tǒng)可測(cè)試性,以及管理大型測(cè)試集幾組。
不少點(diǎn)子都很有啟發(fā)性。更難能可貴的是,每個(gè)點(diǎn)子作者不僅提出見解,分析收益,更給出了如何實(shí)施的指導(dǎo)。
非常值得一讀。
以下是一些印象深刻的點(diǎn)子。
從問(wèn) “總是/從不” 開始
當(dāng)進(jìn)入一個(gè)新領(lǐng)域時(shí),最危險(xiǎn)的不是大家都認(rèn)為你是菜鳥的時(shí)候;而是已經(jīng)待的足夠久,以至于大家假定你已經(jīng)了解了領(lǐng)域里的基本常識(shí)。比如“飛行過(guò)程中不能開艙門”
快速理解領(lǐng)域常識(shí)的一個(gè)方法是問(wèn)什么事情應(yīng)該總是會(huì)發(fā)生的,或從來(lái)不會(huì)發(fā)生。從這些問(wèn)題,你可以迅速的知道最基本的假設(shè)和約定。
而且,由于這種絕對(duì)的論斷很容易被駁倒。往往當(dāng)列出一條“總是/從不”時(shí),就會(huì)有人指出不符合的特例。然后就可以由此展開對(duì)業(yè)務(wù)的深入討論。
帶入情緒
系統(tǒng)不僅僅可以有happy path(一切順利的開心路徑),還可以有膽戰(zhàn)心驚路徑, 漫不經(jīng)心路徑,尷尬路徑,健忘路徑……
避免用數(shù)學(xué)公式來(lái)描述測(cè)試
盡管公式初看起來(lái)非常嚴(yán)謹(jǐn)完善,但是公式往往只是復(fù)述了從別處搬來(lái)的規(guī)則。無(wú)益于我們發(fā)現(xiàn)還遺漏的用例,或增進(jìn)對(duì)系統(tǒng)的理解。相反,它會(huì)給我們虛假的信心相信測(cè)試已經(jīng)完全。
比如如下規(guī)則
| 交易日期 | 包括在報(bào)表? |
|---|---|
| 報(bào)表產(chǎn)生日期 - 30 < 交易日期 | 不包括 |
| 報(bào)表產(chǎn)生日期 - 30 < 交易日期 < 報(bào)表產(chǎn)生日期 | 包括 |
| 交易日期 > 報(bào)表產(chǎn)生日期 | 不包括 |
看起來(lái)非常完整。但是是否澄清了下面的疑問(wèn)呢?
- 交易日期和報(bào)表日期是僅僅包括日期還是日期時(shí)間格式?
- 時(shí)區(qū)會(huì)有影響么?
- 如果報(bào)表日期為3月3日,那么3月3日 00:01是否包括在里面? 23:59:59呢?
- 閏年和夏令時(shí)會(huì)不會(huì)對(duì)邊界發(fā)生影響?
避免使用公式,用具體的例子說(shuō)明系統(tǒng)的行為。
說(shuō)明測(cè)試的目的,而不是如何做
如前面可怕的樣例貼圖里的測(cè)試:“按這里,那里顯示xxx,再按這里,又會(huì)顯示xxx,……,最后輸入xxx,得到的結(jié)果是xxx”……
這樣只是描述步驟的測(cè)試,除了當(dāng)初寫它的人外沒(méi)人可以理解。這樣的測(cè)試無(wú)法讓干系人查看是否符合業(yè)務(wù),無(wú)法給測(cè)試人員啟發(fā),只能從頭到尾機(jī)械執(zhí)行。經(jīng)過(guò)一段時(shí)間的變更之后系統(tǒng)無(wú)法維護(hù),只能從頭再錄一次這樣的流程。
不要自動(dòng)化手工測(cè)試用例
即便最詳細(xì)的手工測(cè)試腳本,也只是指導(dǎo)測(cè)試人員探索系統(tǒng)的手冊(cè)而已。它本身并不能完整說(shuō)明系統(tǒng)應(yīng)該的行為。測(cè)試人員執(zhí)行時(shí)會(huì)發(fā)現(xiàn)很多用自動(dòng)化難以檢查的輸出。一旦流程出錯(cuò),對(duì)人來(lái)說(shuō)可以容易的繞過(guò)小問(wèn)題繼續(xù),而對(duì)電腦卻是復(fù)雜的技術(shù)問(wèn)題。
為自動(dòng)化測(cè)試設(shè)計(jì)專門的用例。自動(dòng)化測(cè)試并不是為了替代手工測(cè)試。
改善測(cè)試可讀性,而非寫測(cè)試的效率
太多的測(cè)試工具專注于高效的寫出測(cè)試用例。然而快速寫出一堆用例并不能真正增進(jìn)我們對(duì)系統(tǒng)的理解。無(wú)法理解的測(cè)試也是無(wú)法維護(hù)的。在系統(tǒng)長(zhǎng)期的生命周期中,測(cè)試的可讀性遠(yuǎn)遠(yuǎn)比快速寫出測(cè)試重要。