SlideShare a Scribd company logo
Unit Testing
Jason Tseng
測試幫忙做了哪些事?
● 重構 UI 或 API 層時可以確保輸入輸出的一致性
● 上新功能時都可以確保現有功能沒有壞
● 同事不小心改壞會發現改壞了
Unit testing framework 有什麼東西
● 組合各測試並顯示成巢狀結構:
describe、it、beforeEach、afterEach
● 功能型:timeout(1000)、非同步測試的done()
● 驗證型:expect(result).toEqual(true),單一包測試可有多個expect,全過才是通過
Unit testing 不需要哪些東西
● 以前端為例:不需要btn.click(),那是e2e 才要做的
● 不需要和API 或 DB 溝通(有溝通的叫Integration test)
● 不綁框架(React or Vue),人家的框架不需要我們幫他寫測試
Unit testing 前置作業
● Setup & Teardown
● 最好為純函數(Pure function)
● 測試本身不依賴於任何框架(
Frameworks: React or Vue)
測試重點
● 自定義function 輸入及輸出
● 於此 function 內相同輸入會有相同輸出
何時要寫測試?
● 完成該feature 會用到的那些functions
● QA、PM 測到你的bug,修正並補上缺少的測試,確保不會發生第二次
怎麼做到 Test-driven development(TDD)?
● 先寫測試,再寫feature,稱作Test-driven development(TDD)
測試寫在哪?
以前端為例
1. 專案根目錄下的tests/ 資料夾放置環境設定,於各個.js 檔案的資料夾層旁放.test.js 檔案
範例:Object.is
範例:SEP
getFormattedDigitByTypeAndNumber.js
輸入:type = ’cpc’ ; number = 1000.25;
輸出:’1,000.25’;
輸入:type = ’ctr’ ; number = 0.2567;
輸出:’25.67%’;
function getFormattedDigitByTypeAndNumber(type, number) {
var formattedDigit = ‘’;
// your algorithm
return formattedDigit;
}
Mock a function 時機
● 覆蓋一隻function 的輸入輸出,EX: 某些 API 需要登入才能測試,我就創造登入部分永遠是
登入成功的結果
● 若有使用人家套件但有api_key 的時候繞過它
如何開始?
● 先儘可能將自己的所有function 改為 pure function
● 承上,code 需寫成樹枝狀,而非麵條狀
● 同一 function 傳入參數越少越好,參數越多將面臨測試數量等比上升
● 最好一隻function 是一隻檔案
● 找一套屬於自己語言的測試,前端為例,初學先找framework(Jest or Jasmine),很熟悉則
自己組合(Karma + Mocha + Chai (+ sinon))
● 一個 function 的檔案搭配一個.test 檔案
Unit testing

More Related Content

PDF
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
PPTX
jasmine入门指南
PPTX
單元測試
PPTX
例外處理與單元測試
ODP
PHPUnit
ODP
How+we+make+tests
PPTX
Unit test
PDF
例外處理實務
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
jasmine入门指南
單元測試
例外處理與單元測試
PHPUnit
How+we+make+tests
Unit test
例外處理實務

Similar to Unit testing (20)

PPTX
Java script测试之js unit ut
PDF
單元測試-到底單什麼元,測什麼試
PPT
2014/02: 嵌入式測試驅動開發
PPT
PHP 单元测试
PPT
GTest交流与经验总结
PDF
Testing in python 2.7.3
PDF
Legacy code 讀書會 1st (Ch1 - Ch5)
PPTX
单元测试(H2等)和持续集成(Hudson)实战简介
PDF
Foundation of software development 1
PDF
Unit test
PDF
Tcon分享 芈峮
PDF
豆瓣I os自动化测试实践和经验
PPT
The way to continuous delivery
PDF
Angular Testing for Book Club Online of Angular Taiwan
PDF
Tip for Editors
PDF
使用 Pytest 進行單元測試 (PyCon TW 2021)
PDF
網路最佳化管理實務 - 第五章
PPTX
軟體測試效能評估(By ronald)
PDF
達暉資訊 - 2014 教育訓練 - 如何進行負載測試
PPTX
淺談測試Part1
Java script测试之js unit ut
單元測試-到底單什麼元,測什麼試
2014/02: 嵌入式測試驅動開發
PHP 单元测试
GTest交流与经验总结
Testing in python 2.7.3
Legacy code 讀書會 1st (Ch1 - Ch5)
单元测试(H2等)和持续集成(Hudson)实战简介
Foundation of software development 1
Unit test
Tcon分享 芈峮
豆瓣I os自动化测试实践和经验
The way to continuous delivery
Angular Testing for Book Club Online of Angular Taiwan
Tip for Editors
使用 Pytest 進行單元測試 (PyCon TW 2021)
網路最佳化管理實務 - 第五章
軟體測試效能評估(By ronald)
達暉資訊 - 2014 教育訓練 - 如何進行負載測試
淺談測試Part1
Ad

Unit testing