1. 程式人生 > >JavaScript有這幾種測試

JavaScript有這幾種測試

譯者按: 也許你討厭測試,但是你不得不面對它,所以至少區分一下單元測試、整合測試與功能測試?對吧...

原文: What are Unit Testing, Integration Testing and Functional Testing?

譯者: Fundebug

為了保證可讀性,本文采用意譯而非直譯。另外,本文版權歸原作者所有,翻譯僅用於學習

JavaScript程式碼測試有很多分類,比如單元測試(unit test)整合測試(integration test)功能測試(functional test)端到端測試(end to end test)迴歸測試(regression test)

瀏覽器測試(browser test)...

也許你會傻傻地分不清楚,它們是什麼?如何使用?什麼情況下使用?這篇部落格將解答你的疑問。

單元測試

單元測試指的是測試小的程式碼塊,通常指的是獨立測試單個函式如果某個測試依賴於一些外部資源,比如網路或者資料庫,那它就不是單元測試

單元測試一般很容易寫。一個單元測試通常是這樣的:為某個函式提供某些輸入值,然後驗證函式的返回值是否正確。然而,如果你的程式碼設計非常糟糕,則單元測試會很難寫。從另一個角度理解,單元測試可以幫助我們寫更好的程式碼。

從某種意義上,單元測試就是程式碼的骨幹。通過單元測試,可以幫助你優化程式碼設計,可以保證修改程式碼時正確無誤。

單元測試可以幫助我們避免一些常見的BUG。通常,程式設計師會在同一個細節上反覆犯錯,如果為這些BUG新增單元測試,則可以有效避免這種情況。當然,你也可以使用整合測試功能測試來解決這個問題,但是單元測試更加適合,因為單元測試更加細緻,可以幫助我們快速定位和解決問題。

什麼時候應該做單元測試呢?採用測試驅動開發(test driven development)的話,你應該一直寫單元測試。好的單元測試不僅可以避免BUG,還可以優化程式碼,並且保證修改或者重構程式碼時不會出錯

流行的JavaScript單元測試工具有Mocha, JasmineTape

整合測試

整合測試就是測試應用中不同模組如何整合,如何一起工作,這和它的名字一致。整合測試與單元測試相似,但是它們也有很大的不同:單元測試是測試每個獨立的模組,而整合測試恰好相反。比如,當測試需要訪問資料庫的程式碼時,單元測試不會真的去訪問資料庫,而整合測試則會

單元測試不夠時,這時就需要整合測試了。當你需要去驗證兩個獨立的模組,比如資料庫和應用,保證它們能夠正確的一起工作,這時就需要整合測試了。為了驗證測試結果,你就需要通過查詢資料庫驗證資料正確性。

整合測試通常比單元測試慢,因為它更加複雜。並且,整合測試還需要配置測試環境,比如配置測試資料庫或者其他依賴的元件。這就使得編寫和維護整合測試更加困難,因此,你應該專注於單元測試,除非你真的需要整合測試。

你需要的整合測試應該少於單元測試。除非你需要測試多個模組,或者你的程式碼太複雜時,你才需要整合測試。並且,當你的程式碼過於複雜時,我建議優化程式碼以便進行單元測試,而不是直接寫整合測試。

通常,我們可以使用單元測試工具編寫整合測試。

功能測試

功能測試有時候也被稱作端到端測試,或者瀏覽器測試,它們指的是同一件事。

功能測試指的是測試應用的某個完整的功能。對於網頁應用,功能測試意味著使用工具模擬瀏覽器,然後通過點選頁面來測試應用。

單元測試可以測試單個函式,整合測試可以測試兩個模組一起工作。功能測試則完全是另外一個層次。你可以有上百個單元測試,但是通常你只有少量的功能測試。這是因為功能測試太複雜了,難於編寫和維護。功能測試很慢,因為它需要模擬真實使用者進行網頁互動。

事實上,你不需要編寫非常詳細的功能測試。功能測試並不意味著你需要測試每一個功能,其實,你只需要測試一些常見的使用者行為。如果你需要在瀏覽器中手動測試應用的某個流程,比如註冊賬號,這時你可以編寫一個功能測試。

對於單元測試,你會使用程式碼去驗證結果,在功能測試中也應該這樣做。以註冊賬號為例,你可以驗證瀏覽器是否跳轉到了"感謝註冊"頁面。

當有些測試你需要手動在瀏覽器下重複進行時,你應該編寫功能測試。注意不要寫得太細緻了,否則維護這些測試將是一個噩夢。

最流行的功能測試工具是 SeleniumSelenium WebDriver或者Protractor通常與Selenium一起使用,有時也使用PhantomJSCasperJS ,注意你不需要使用真實瀏覽器。

總結

測試JavaScript程式碼時,應該著重於單元測試,它非常容易編寫和維護,除了可以減少BUG還有很多益處。而整合測試與功能測試應該作為補充。

關於Fundebug

Fundebug專注於JavaScript、微信小程式、微信小遊戲、支付寶小程式、React Native、Node.js和Java實時BUG監控。 自從2016年雙十一正式上線,Fundebug累計處理了7億+錯誤事件,得到了Google、360、金山軟體、百姓網等眾多知名使用者的認可。歡迎免費試用!

版權宣告

轉載時請註明作者Fundebug以及本文地址:
https://blog.fundebug.com/2017/06/26/javascript-test-type/