「React」為什么要寫測試用例?

站在產(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)——原因

  1. 節(jié)省成本,提高復(fù)用性:
    原本程序員每修改一次代碼,就需要測試人員根據(jù)測試用例文檔,從頭到尾的測試,現(xiàn)在程序員每修改一次代碼,只需要執(zhí)行一遍測試用例,即可完成測試。
    原本兩個人做的事,現(xiàn)在一個人做完了,原本兩個人都要熟悉需求,多一個單位熟悉需求就會出現(xiàn)不可預(yù)測的問題,導(dǎo)致延誤項目工期;
    現(xiàn)在一個人熟悉完需求,通過測試驅(qū)動的方式就可以確保代碼質(zhì)量;

  2. 幫助產(chǎn)品迭代:
    同時可以幫助產(chǎn)品完善需求文檔:在寫測試用例的時候,發(fā)現(xiàn)有需求不明確的,已開發(fā)的維度(考慮周全)幫助產(chǎn)品經(jīng)理補(bǔ)足沒有考慮到的方面;

  3. 不需要"業(yè)余"的測試人員:
    原本測試人員基本是不知道代碼邏輯的,也不清楚哪些地方實現(xiàn)是否是有問題。(公司總會忽悠,說用一個不熟悉代碼的人,才能模擬出用戶需求,放屁把,普通測試人員根本不清楚用戶在場景當(dāng)下的需求,除非是高級測試人員,那就牛逼哥了,真正能模擬用戶需求的只有用戶)
    通過程序員嚴(yán)謹(jǐn)?shù)乃季S,才能幫助產(chǎn)品設(shè)計考慮到各種情況下的不足。

  4. 增值:
    提高程序員的代碼質(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 + Jasmine VS Mocha + Chai + Sinon VS Jest + Enzyme

karma + Jasmine:雖然很流行,但是在react體系中不推薦;更適用于AngularJS;

Mocha + Chai + SinonJest + Enzyme 各有千秋,都可以先參數(shù)看看,喜歡用哪個選哪個;

前期入門多學(xué)習(xí)學(xué)習(xí),多嘗試,沒壞處;可以對比兩種測試用例的差異;選擇自己喜歡的寫法;

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 Update [20160725] Facebook 官方提供了一個可以生成React Starter項目的...
    令狐蔥001閱讀 1,792評論 0 1
  • 大多數(shù)開發(fā)者都知道需要寫單元測試,但是不知道每個單元測試應(yīng)用的主要內(nèi)容以及如何做單元測試,在介紹jest測試框架前...
    糖小工閱讀 6,228評論 0 11
  • 歡迎移步我的博客閱讀:《React 測試驅(qū)動教程》 測試是開發(fā)周期中的一個重要組成部分。沒有測試的代碼被稱為:遺留...
    Jovey閱讀 7,499評論 8 31
  • 2017年11月7日??纪杲處熧Y格證,心里別樣的輕松。 晚上孩子難得睡得早,一時間不知道干點什么。拿起手機(jī),...
    向陽總有光_4395閱讀 222評論 1 1
  • 烈日炎炎,朋友蒙著一大塊紗巾防曬,還是熱得直冒汗,見我一點汗也沒有很奇怪:“不熱嗎?不蒙點什么嗎?”“還可以,因為...
    洞庭府君閱讀 403評論 0 2

友情鏈接更多精彩內(nèi)容