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

JavaScript有這幾種測試分類

要去 images 定位 真的 需要 drive google ext 測試環境

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

原文: 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, Jasmine和Tape。

集成測試

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

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

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

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

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

功能測試

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

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

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

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

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

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

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

總結

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

歡迎加入我們Fundebug的全棧BUG監控交流群: 622902485


技術分享

JavaScript有這幾種測試分類