譯者按: 也許你討厭測試,可是你不得不面對它,因此至少區分一下單元測試、集成測試與功能測試?對吧...javascript
原文: What are Unit Testing, Integration Testing and Functional Testing?java
譯者: Fundebuggit
爲了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸原做者全部,翻譯僅用於學習。程序員
JavaScript代碼測試有不少分類,好比單元測試(unit test)、集成測試(integration test)、功能測試(functional test)、端到端測試(end to end test)、迴歸測試(regression test)、瀏覽器測試(browser test)...github
也許你會傻傻地分不清楚,它們是什麼?如何使用?什麼狀況下使用?這篇博客將解答你的疑問。數據庫
單元測試指的是測試小的代碼塊,一般指的是獨立測試單個函數。若是某個測試依賴於一些外部資源,好比網絡或者數據庫,那它就不是單元測試。小程序
單元測試通常很容易寫。一個單元測試一般是這樣的:爲某個函數提供某些輸入值,而後驗證函數的返回值是否正確。然而,若是你的代碼設計很是糟糕,則單元測試會很難寫。從另外一個角度理解,單元測試能夠幫助咱們寫更好的代碼。微信小程序
從某種意義上,單元測試就是代碼的骨幹。經過單元測試,能夠幫助你優化代碼設計,能夠保證修改代碼時正確無誤。瀏覽器
單元測試能夠幫助咱們避免一些常見的BUG。一般,程序員會在同一個細節上反覆犯錯,若是爲這些BUG添加單元測試,則能夠有效避免這種狀況。固然,你也可使用集成測試和功能測試來解決這個問題,可是單元測試更加適合,由於單元測試更加細緻,能夠幫助咱們快速定位和解決問題。微信
何時應該作單元測試呢?採用測試驅動開發(test driven development)的話,你應該一直寫單元測試。好的單元測試不只能夠避免BUG,還能夠優化代碼,而且保證修改或者重構代碼時不會出錯。
流行的JavaScript單元測試工具備Mocha, Jasmine和Tape。
集成測試就是測試應用中不一樣模塊如何集成,如何一塊兒工做,這和它的名字一致。集成測試與單元測試類似,可是它們也有很大的不一樣:單元測試是測試每一個獨立的模塊,而集成測試剛好相反。好比,當測試須要訪問數據庫的代碼時,單元測試不會真的去訪問數據庫,而集成測試則會。
單元測試不夠時,這時就須要集成測試了。當你須要去驗證兩個獨立的模塊,好比數據庫和應用,保證它們可以正確的一塊兒工做,這時就須要集成測試了。爲了驗證測試結果,你就須要經過查詢數據庫驗證數據正確性。
集成測試一般比單元測試慢,由於它更加複雜。而且,集成測試還須要配置測試環境,好比配置測試數據庫或者其餘依賴的組件。這就使得編寫和維護集成測試更加困難,所以,你應該專一於單元測試,除非你真的須要集成測試。
你須要的集成測試應該少於單元測試。除非你須要測試多個模塊,或者你的代碼太複雜時,你才須要集成測試。而且,當你的代碼過於複雜時,我建議優化代碼以便進行單元測試,而不是直接寫集成測試。
一般,咱們可使用單元測試工具編寫集成測試。
功能測試有時候也被稱做端到端測試,或者瀏覽器測試,它們指的是同一件事。
功能測試指的是測試應用的某個完整的功能。對於網頁應用,功能測試意味着使用工具模擬瀏覽器,而後經過點擊頁面來測試應用。
單元測試能夠測試單個函數,集成測試能夠測試兩個模塊一塊兒工做。功能測試則徹底是另一個層次。你能夠有上百個單元測試,可是一般你只有少許的功能測試。這是由於功能測試太複雜了,難於編寫和維護。功能測試很慢,由於它須要模擬真實用戶進行網頁交互。
事實上,你不須要編寫很是詳細的功能測試。功能測試並不意味着你須要測試每個功能,其實,你只須要測試一些常見的用戶行爲。若是你須要在瀏覽器中手動測試應用的某個流程,好比註冊帳號,這時你能夠編寫一個功能測試。
對於單元測試,你會使用代碼去驗證結果,在功能測試中也應該這樣作。以註冊帳號爲例,你能夠驗證瀏覽器是否跳轉到了"感謝註冊"頁面。
當有些測試你須要手動在瀏覽器下重複進行時,你應該編寫功能測試。注意不要寫得太細緻了,不然維護這些測試將是一個噩夢。
最流行的功能測試工具是 Selenium。Selenium WebDriver或者Protractor一般與Selenium一塊兒使用,有時也使用PhantomJS和CasperJS ,注意你不須要使用真實瀏覽器。
測試JavaScript代碼時,應該着重於單元測試,它很是容易編寫和維護,除了能夠減小BUG還有不少益處。而集成測試與功能測試應該做爲補充。
Fundebug專一於JavaScript、微信小程序、微信小遊戲、支付寶小程序、React Native、Node.js和Java實時BUG監控。 自從2016年雙十一正式上線,Fundebug累計處理了7億+錯誤事件,獲得了Google、360、金山軟件、百姓網等衆多知名用戶的承認。歡迎免費試用!
轉載時請註明做者Fundebug以及本文地址:
https://blog.fundebug.com/2017/06/26/javascript-test-type/