中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript單元測試的作用是什么

發布時間:2021-06-22 16:05:25 來源:億速云 閱讀:151 作者:chen 欄目:web開發

這篇文章主要介紹“JavaScript單元測試的作用是什么”,在日常操作中,相信很多人在JavaScript單元測試的作用是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”JavaScript單元測試的作用是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

在JavaScript中,單元測試是針對程序模塊(軟件設計的最小單位)來進行正確性檢驗的測試工作,其目標是隔離程序模塊并證明這些單個模塊是正確的。單元測試能確保在開發過程的早期就發現問題,可以使程序員方便地檢查代碼片斷是否依然正常工作。

本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

1、什么是單元測試?有什么用?

在計算機編程中,單元測試(又稱為模塊測試)是針對程序模塊(軟件設計的最小單位)來進行正確性檢驗的測試工作。程序單元是應用的最小可測試部件。在過程化編程中,一個單元就是單個程序、函數、過程等;對于面向對象編程,最小單元就是方法,包括基類(超類)、抽象類、或者派生類(子類)中的方法。

每個理想的測試案例獨立于其它案例;為測試時隔離模塊,經常使用stubs、mock 或fake等測試馬甲程序。單元測試通常由軟件開發人員編寫,用于確保他們所寫的代碼符合軟件需求和遵循開發目標。

單元測試的目標是隔離程序模塊并證明這些單個模塊是正確的。單元測試能確保在開發過程的早期就能發現問題,是為了讓程序“死得更早”。我們應該從開發的早期就為所有函數和方法編寫單元測試,可讀性強的單元測試可以使程序員方便地檢查代碼片斷是否依然正常工作。良好設計的單元測試案例覆蓋程序單元分支和循環條件的所有路徑。采用這種自底向上的測試路徑,先測試程序模塊再測試模塊的集合,一旦變更導致錯誤發生,借助于單元測試可以快速定位并修復錯誤。

2、JavaScript單元測試現狀

單元測試在后臺開發中非常流行和普及,比如JAVA開發者的JUnit等,而在前端開發中則使用的非常少。究其原因,主要是單元測試更適用于邏輯代碼的測試,這對于JAVA等后臺編程語言來說測試起來非常方便,但是前端開發很多時候要要UI打交道,UI相關的代碼不是不可以進行單元測試,但的確很麻煩,比起邏輯代碼來說困難多了,這就導致了單元測試在前端開發沒有普及起來。

但是隨著單元測試的普及,尤其是敏捷開發的推動,涌現了許多優秀的JavaScript單元測試框架,如QUnit、Jasmine等。所有的這些框架基本上都能對Javascript代碼進行很好的測試,當然UI部分的代碼測試一樣比較麻煩,但是我們可以通過精心構造我們的測試代碼來測試部分UI代碼。但是每個框架都不是萬能的,它們都有各自擅長的領域,下面選取了幾個具有代表性的框架進行介紹。

3、單元測試常用框架

l   QUnit框架

a) 簡介

QUnit是jQuery團隊開發的JavaScript單元測試工具,功能強大且使用簡單。目前所有的JQuery代碼都使用QUnit進行測試,原生的JavaScript也可以使用QUnit。

最初,John Resig將QUnit設計為jQuery的一部分。2008年,QUnit才有了自己的名字、主頁和API文檔,也開始允許其他人用它來做單元測試。但當時QUnit還是基于jQuery的。直到2009年,QUnit才可以完全的獨立運行。

b)優點

使用起來非常方便,有漂亮的外觀和完整的測試功能(包括異步測試);

非常簡單,容易上手,目前公開的API只有19個;

不需要依賴其它任何軟件包或框架,只要能運行JS的地方就可以,QUnit本身只有一個JS文件和CSS文件,當然如果需要可以和jQuery等其它框架集成;

不僅支持在瀏覽器中測試,還支持在Rhino和node.js等后端測試。

c) 不足

對自動化支持不好,很難和Ant、Maven或自動構建等工具集成,主要用在瀏覽器中進行測試。

l  Jasmine框架

a)簡介

Jasmine是一個有名的JavaScript單元測試框架,它是獨立的行為驅動開發框架,語法清晰易懂。

行為驅動開發(BDD):是一種敏捷軟件開發的技術,它鼓勵軟件項目中的開發者、QA和非技術人員或商業參與者之間的協作。BDD最初是由Dan North在2003年命名,它包括驗收和客戶測試驅動等的極限編程的實踐,作為對測試驅動開發的回應。在過去的數年里,得到了極大的發展。

BDD的重點是通過與利益相關者的討論取得對預期的軟件行為的清醒認識。它通過用自然語言書寫非程序員可讀的測試用例擴展了測試驅動開發方法。行為驅動開發人員使用混合了領域中統一的語言的母語語言來描述他們的代碼的目的。這讓開發者得以把精力集中在代碼應該怎么寫,而不是技術細節上,而且也最大程度的減少了將代碼編寫者的技術語言與商業客戶、用戶、利益相關者、項目管理者等的領域語言之間來回翻譯的代價。

BDD的做法包括:

l  確立不同利益相關者要實現的遠景目標

l  使用特性注入方法繪制出達到這些目標所需要的特性

l  通過由外及內的軟件開發方法,把涉及到的利益相關者融入到實現的過程中

l  使用例子來描述應用程序的行為或代碼的每個單元

l  通過自動運行這些例子,提供快速反饋,進行回歸測試

l  使用“應當(should)”來描述軟件的行為,以幫助闡明代碼的職責,以及回答對該軟件的功能性的質疑

l  使用“確保(ensure)”來描述軟件的職責,以把代碼本身的效用與其他單元(element)代碼帶來的邊際效用中區分出來。

l  使用mock作為還未編寫的相關代碼模塊的替身

BDD特性注入:一個公司可能有多個會帶來商業利益的不同愿景,通常包括盈利、省錢或保護錢。一旦某個愿景被開發小組確定為當前條件下的最佳愿景,他們將需要更多的幫助來成功實現這個遠景。

然后確定該愿景的主要利益相關者,會帶入其他的利益相關者。每個相關者要定義為了實現該愿景他們需要完成的目標。例如,法務部門可能要求某些監管要得到滿足。市場營銷負責人可能要參加將使用該軟件的用戶的社區。安全專家需要確保該軟件不會受到SQL注入的攻擊。

通過這些目標,會定義出要實現這些目標所需要的大概的題目或者特性集合。例如,“允許用戶排序貢獻值”或“交易審計”。從這些主題,可以確定用戶功能以及用戶界面的第一批細節。

b)       優點

它是基于行為驅動開發實現的測試框架,它的語法非常貼近自然語言,簡單明了,容易理解。

能很方便的和Ant、Maven等進行集成進行自動化測試,也可以方便和Jekins等持續集成工具進行集成,可以生成測試結果的XMl文檔。

它有豐富的API,同時用戶也支持用戶擴展它的API,這一點很少有其它框架能夠做到。

使用方便簡單,只需要引入兩個js文件即可

不僅支持在瀏覽器中測試,還支持在Rhino和node.js等后端測試。

對于Ruby語言有特別的支持,能夠非常方便的集成到Ruby項目中去

c) 不足

在瀏覽器中的測試界面不如QUnit美觀、詳細。

l  JsTestDriver

a)        簡介

JsTestDriver是一個JavaScript單元測試工具,易于與持續構建系統相集成并能夠在多個瀏覽器上運行測試輕松實現TDD風格的開發。當在項目中配置好JsTestDriver以后,如同junit測試java文件一般,JsTestDriver可以直接通過運行js文件來進行單元測試。JsTestDriver框架本身就是JAVA的jar包,需要在本地運行并監聽一個端口。

b)       優點

可以一次測試多個瀏覽器,使用方法是在啟動服務時可以將多個瀏覽器的路徑作為參數傳進去。可以在多臺機器上的瀏覽器中運行,包括移動設備。

測試運行得很快,因為不需要將結果添加到DOM中呈現出來,它們能夠同時在任意多的瀏覽器中運行,未修改的文件瀏覽器會從緩存提取。

不需要HTML配件文件,僅僅只需提供一個或多個腳本和測試腳本,測試運行器運行時會創建一個空文件。

能很方便的和Ant、Maven等進行集成進行自動化測試,也可以方便和Jekins等持續集成工具進行集成,可以生成測試結果的XML文檔。

有Eclipse和IntelliJ插件,可以很方便的在這兩個IDE中進行測試,和JUnit很像。

支持其它測試框架,可以測試其它測試框架寫的測試代碼,比如有對應的插件可以將QUnit和Jasmine測試代碼轉換成JsTestDriver的測試代碼。

c)        不足

不能在瀏覽器中測試,只能通過自動化工具或控制臺運行。生成的結果不夠直觀。

安裝使用稍微有點麻煩,依賴于JAVA環境。

l  FireUnit

a)        簡介

FireUnit是一個基于Firebug的Javascript的單元測試框架。簡單說來,FireUnit給Firebug增加了一個標簽面板,并提供了一些簡單的JavaScript API來記錄和查看測試。

b)       優點

簡單易用

c)        不足

功能不多,測試代碼常常寫在源碼里,雖然可以實時地看到效果,但耦合太強,不易清理

只運行在Firefox下

到此,關于“JavaScript單元測試的作用是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

塘沽区| 上杭县| 伊宁市| 义乌市| 齐河县| 清新县| 桦甸市| 渭源县| 上杭县| 松潘县| 金华市| 铜梁县| 冀州市| 沐川县| 延庆县| 磐安县| 沁阳市| 湄潭县| 阜新| 广宗县| 南乐县| 鲁甸县| 曲麻莱县| 肇州县| 瓦房店市| 休宁县| 乌兰察布市| 醴陵市| 景德镇市| 安达市| 丘北县| 涟源市| 霞浦县| 宁晋县| 新宁县| 海伦市| 张家口市| 宜州市| 青州市| 东城区| 通江县|