站在產(chǎn)品的角度學(xué)習(xí)前端知識
為什么做測試?我的需求是什么?可以用其他方式解決嗎?
1、對象 (What)——什么事情
通過TDD測試驅(qū)動,檢測代碼的質(zhì)量,提高代碼可用性,確定工作成果;
用代碼檢查代碼,代替用測試用例文檔檢查代碼,降低人工成本,檢測代碼的質(zhì)量,提高代碼可用性,讓開發(fā)人員更懂需求;
2、場所 (Where)——什么地點
3、時間和程序 (When)——什么時候
帶寫代碼之前通過先寫測試代碼再寫業(yè)務(wù)代碼來完成
寫完代碼之后通過代碼測試,或者通過測試文檔來完成
4、人員 (Who)——責(zé)任人
程序員:通過TDD測試驅(qū)動,在寫業(yè)務(wù)代碼之前,先把測試代碼寫完;在寫完測試代碼之后,在寫一段單元測試來檢測所寫的代碼(比較雞肋);
測試員:在理解需求后,編寫測試用例文檔,待程序員寫完代碼后,人工通過測試用例測試成果;
5、為什么(Why)——原因
節(jié)省成本,提高復(fù)用性:
原本程序員每修改一次代碼,就需要測試人員根據(jù)測試用例文檔,從頭到尾的測試,現(xiàn)在程序員每修改一次代碼,只需要執(zhí)行一遍測試用例,即可完成測試。
原本兩個人做的事,現(xiàn)在一個人做完了,原本兩個人都要熟悉需求,多一個單位熟悉需求就會出現(xiàn)不可預(yù)測的問題,導(dǎo)致延誤項目工期;
現(xiàn)在一個人熟悉完需求,通過測試驅(qū)動的方式就可以確保代碼質(zhì)量;幫助產(chǎn)品迭代:
同時可以幫助產(chǎn)品完善需求文檔:在寫測試用例的時候,發(fā)現(xiàn)有需求不明確的,已開發(fā)的維度(考慮周全)幫助產(chǎn)品經(jīng)理補(bǔ)足沒有考慮到的方面;不需要"業(yè)余"的測試人員:
原本測試人員基本是不知道代碼邏輯的,也不清楚哪些地方實現(xiàn)是否是有問題。(公司總會忽悠,說用一個不熟悉代碼的人,才能模擬出用戶需求,放屁把,普通測試人員根本不清楚用戶在場景當(dāng)下的需求,除非是高級測試人員,那就牛逼哥了,真正能模擬用戶需求的只有用戶)
通過程序員嚴(yán)謹(jǐn)?shù)乃季S,才能幫助產(chǎn)品設(shè)計考慮到各種情況下的不足。增值:
提高程序員的代碼質(zhì)量,通過預(yù)先思考,幫助程序員分析哪些功能是可以復(fù)用的,哪些邏輯是可以簡化的。
6、方式 (How)——如何
工具介紹
- karma:
- Karma是一個基于Node.js的JavaScript測試執(zhí)行過程管理工具
- 該工具可用于測試所有主流Web瀏覽器,也可集成到CI(Continuous integration)工具,也可和其他代碼編輯器一起使用
- 這個測試工具的一個強(qiáng)大特性就是,它可以監(jiān)控(Watch)文件的變化,然后自行執(zhí)行,通過console.log顯示測試結(jié)果
- Jasmine:
- Jasmine (茉莉)是一款 JavaScript BDD(行為驅(qū)動開發(fā))測試框架,它不依賴于其他任何 JavaScript 組件。它有干凈清晰的語法,讓您可以很簡單的寫出測試代碼
- Mocha:測試框架。提供describe,it,beforeEach等函數(shù)管理你的 testcase
- 簡單、易上手
- 支持TDD、BDD等多種接口
- 支持同步和異步的測試
- 支持多種方式導(dǎo)出結(jié)果
- 支持直接在瀏覽器上跑JavaScript代碼
- Chai:
- BDD(行為驅(qū)動開發(fā))和TDD(測試驅(qū)動開發(fā))雙測試風(fēng)格的斷言庫
- enzyme:
- React測試工具,可以類似 jquery 風(fēng)格的 api 操作react 節(jié)點
- Sinon:
- 提供 fake 數(shù)據(jù), 替換函數(shù)調(diào)用等功能
- Jest
- Facebook 官方支持
- 適應(yīng)性:Jest是模塊化、可擴(kuò)展和可配置的。
- 沙箱和快速:Jest虛擬化了JavaScript的環(huán)境,能模擬瀏覽器,并且并行執(zhí)行
- 快照測試:Jest能夠?qū)eact 樹進(jìn)行快照或別的序列化數(shù)值快速編寫測試,提供快速更新的用戶體驗。
- 支持異步代碼測試:支持promises和async/await
組合:
karma + JasmineVSMocha + Chai + SinonVSJest + Enzyme
karma + Jasmine:雖然很流行,但是在react體系中不推薦;更適用于AngularJS;
Mocha + Chai + Sinon 與 Jest + Enzyme 各有千秋,都可以先參數(shù)看看,喜歡用哪個選哪個;
- redux中文文檔推薦使用Jest + Enzyme Redux中文文檔 -編寫測試
- react官方也推薦使用 Jest
前期入門多學(xué)習(xí)學(xué)習(xí),多嘗試,沒壞處;可以對比兩種測試用例的差異;選擇自己喜歡的寫法;