感謝測試大牛邰曉梅(博客)的推薦筐赔。最近讀了《Fifty quick ideas to improve your tests》
這本書真的很不錯

有可愛的插圖








也有可怕的樣例


偷學(xué)一點出去賣瘫辩,收到熱烈的反饋

一點心得
書中提出了50條關(guān)于改進測試的點子,按照主題分為產(chǎn)生測試靈感联喘,設(shè)計好的case纳鼎,改進系統(tǒng)可測試性果元,以及管理大型測試集幾組契耿。
不少點子都很有啟發(fā)性。更難能可貴的是,每個點子作者不僅提出見解俊性,分析收益略步,更給出了如何實施的指導(dǎo)。
非常值得一讀定页。
以下是一些印象深刻的點子趟薄。
從問 “總是/從不” 開始
當(dāng)進入一個新領(lǐng)域時,最危險的不是大家都認(rèn)為你是菜鳥的時候典徊;而是已經(jīng)待的足夠久杭煎,以至于大家假定你已經(jīng)了解了領(lǐng)域里的基本常識。比如“飛行過程中不能開艙門”
快速理解領(lǐng)域常識的一個方法是問什么事情應(yīng)該總是會發(fā)生的卒落,或從來不會發(fā)生羡铲。從這些問題,你可以迅速的知道最基本的假設(shè)和約定儡毕。
而且也切,由于這種絕對的論斷很容易被駁倒。往往當(dāng)列出一條“總是/從不”時妥曲,就會有人指出不符合的特例。然后就可以由此展開對業(yè)務(wù)的深入討論钦购。
帶入情緒
系統(tǒng)不僅僅可以有happy path(一切順利的開心路徑)檐盟,還可以有膽戰(zhàn)心驚路徑, 漫不經(jīng)心路徑,尷尬路徑押桃,健忘路徑……
避免用數(shù)學(xué)公式來描述測試
盡管公式初看起來非常嚴(yán)謹(jǐn)完善葵萎,但是公式往往只是復(fù)述了從別處搬來的規(guī)則。無益于我們發(fā)現(xiàn)還遺漏的用例唱凯,或增進對系統(tǒng)的理解羡忘。相反,它會給我們虛假的信心相信測試已經(jīng)完全磕昼。
比如如下規(guī)則
交易日期 | 包括在報表卷雕? |
---|---|
報表產(chǎn)生日期 - 30 < 交易日期 | 不包括 |
報表產(chǎn)生日期 - 30 < 交易日期 < 報表產(chǎn)生日期 | 包括 |
交易日期 > 報表產(chǎn)生日期 | 不包括 |
看起來非常完整。但是是否澄清了下面的疑問呢票从?
- 交易日期和報表日期是僅僅包括日期還是日期時間格式漫雕?
- 時區(qū)會有影響么?
- 如果報表日期為3月3日峰鄙,那么3月3日 00:01是否包括在里面浸间? 23:59:59呢?
- 閏年和夏令時會不會對邊界發(fā)生影響吟榴?
避免使用公式魁蒜,用具體的例子說明系統(tǒng)的行為。
說明測試的目的,而不是如何做
如前面可怕的樣例貼圖里的測試:“按這里兜看,那里顯示xxx锥咸,再按這里,又會顯示xxx铣减,……她君,最后輸入xxx,得到的結(jié)果是xxx”……
這樣只是描述步驟的測試葫哗,除了當(dāng)初寫它的人外沒人可以理解缔刹。這樣的測試無法讓干系人查看是否符合業(yè)務(wù),無法給測試人員啟發(fā)劣针,只能從頭到尾機械執(zhí)行校镐。經(jīng)過一段時間的變更之后系統(tǒng)無法維護,只能從頭再錄一次這樣的流程捺典。
不要自動化手工測試用例
即便最詳細(xì)的手工測試腳本鸟廓,也只是指導(dǎo)測試人員探索系統(tǒng)的手冊而已。它本身并不能完整說明系統(tǒng)應(yīng)該的行為襟己。測試人員執(zhí)行時會發(fā)現(xiàn)很多用自動化難以檢查的輸出引谜。一旦流程出錯,對人來說可以容易的繞過小問題繼續(xù)擎浴,而對電腦卻是復(fù)雜的技術(shù)問題员咽。
為自動化測試設(shè)計專門的用例。自動化測試并不是為了替代手工測試贮预。
改善測試可讀性贝室,而非寫測試的效率
太多的測試工具專注于高效的寫出測試用例。然而快速寫出一堆用例并不能真正增進我們對系統(tǒng)的理解仿吞。無法理解的測試也是無法維護的滑频。在系統(tǒng)長期的生命周期中,測試的可讀性遠(yuǎn)遠(yuǎn)比快速寫出測試重要唤冈。