前言
如果你聽說過“測試驅(qū)動開發(fā)”(TDD:Test-Driven Development),單元測試就不陌生。
單元測試是用來對一個模塊、一個函數(shù)或者一個類來進(jìn)行正確性檢驗的測試工作。
比如對函數(shù)abs(),我們可以編寫出以下幾個測試用例:
輸入正數(shù),比如1、1.2、0.99,期待返回值與輸入相同;
輸入負(fù)數(shù),比如-1、-1.2、-0.99,期待返回值與輸入相反;
輸入0,期待返回0;
輸入非數(shù)值類型,比如None、[]、{},期待拋出TypeError。
把上面的測試用例放到一個測試模塊里,就是一個完整的單元測試。
如果單元測試通過,說明我們測試的這個函數(shù)能夠正常工作。如果單元測試不通過,要么函數(shù)有bug,要么測試條件輸入不正確,總之,需要修復(fù)使單元測試能夠通過。
單元測試通過后有什么意義呢?如果我們對abs()函數(shù)代碼做了修改,只需要再跑一遍單元測試,如果通過,說明我們的修改不會對abs()函數(shù)原有的行為造成影響,如果測試不通過,說明我們的修改與原有行為不一致,要么修改代碼,要么修改測試。
這種以測試為驅(qū)動的開發(fā)模式最大的好處就是確保一個程序模塊的行為符合我們設(shè)計的測試用例。在將來修改的時候,可以極大程度地保證該模塊行為仍然是正確的。
*廖雪峰 python3 教程-單元測試*
學(xué)python3看到這里的時候,想起之前做2.0上線測試用例,不斷完善用例時自己的心得,有種相見恨晚的感受。
產(chǎn)品的基礎(chǔ)架構(gòu)出來后,各類功能的開發(fā)和測試,如果都能夠從這個理念出發(fā),那么 開發(fā)和產(chǎn)品的溝通會順利很多,效率也會提高很多。
因此打算做做總結(jié),為接下來要做的2.2 做準(zhǔn)備。
測試用例一般包括以下幾個部分:
前置條件
輸入
預(yù)期結(jié)果
測試結(jié)果及描述
PM 在做產(chǎn)品設(shè)計的時候,就編寫好測試用例的1-3部分,不僅有利于之后的測試,還有助于開發(fā)團(tuán)隊精準(zhǔn)了解具體需求,提高需求的邏輯完備性。
針對比較重要的開發(fā)任務(wù),建議這樣做。
實例
在實際操作過程中,最容易發(fā)生遺漏的地方是 “輸入”部分。因此,我們從輸入的規(guī)則上,就應(yīng)該盡量做到遍歷所有情況,具有邏輯完備性。
遍歷規(guī)則:
有數(shù)據(jù)輸入
有效數(shù)據(jù)輸入:功能步驟1,功能步驟2,...
無效數(shù)據(jù)輸入
無數(shù)據(jù)輸入
再拿上面取絕對值函數(shù)abs()為例:
有數(shù)據(jù)輸入:
有效數(shù)據(jù)輸入:
輸入正數(shù)
輸入負(fù)數(shù)
無效數(shù)據(jù)輸入:
輸入非數(shù)值類型
無數(shù)據(jù)輸入:
應(yīng)用到我們客棧一個很小的功能測試用例,則體現(xiàn)如下:需求者確認(rèn)報價

以這個規(guī)則,可以從方法上提升測試的質(zhì)量,反過來也能提升產(chǎn)品和開發(fā)的溝通效率。