最流行的Javascript的測試框架
1?????????引言
大多數(shù)測試自動化框架都是基于一套通用的敏捷測試實踐。一般來說,開發(fā)團隊會收集映射到一個功能的用戶故事。用戶故事是一句描述性的話,它說明了該功能的角色/作用、動作和原因。如果你想輸入用戶憑證訪問系統(tǒng),每個故事必須有明確定義的驗收標準,以確保實現(xiàn)的功能符合利益相關(guān)者/目標用戶的期望。
今天有很多有競爭性的測試運行器在使用,但大多數(shù)前端開發(fā)者使用Mocha, Jest, Jasmine, Karma, Puppeteer。好消息是,它們很相似,你選擇哪一個并不重要。
下面我們提供了一個Mocha測試樣本。同樣的事情也可以用其他的測試框架來寫。
假設(shè)你正在測試一個計算器的web應(yīng)用程序。首先創(chuàng)建一個describe塊,它將包含一個或多個測試。
describe('calculator',?function?()?{})
接下來,使用it函數(shù)添加一個測試。測試中包含了你要測試的內(nèi)容的描述:
describe("calculator",?function?()?{
it("應(yīng)正確顯示初始數(shù)據(jù)",?()?=>?{});
});
現(xiàn)在,使用expect函數(shù)添加一個斷言。這個斷言檢查計算器的顯示屏是否顯示了預(yù)期的信息。只有當(dāng)計算器顯示為零時,測試才會通過。
it("應(yīng)正確顯示初始數(shù)據(jù)",?()?=>?{
expect(calculator.initialState.display).to.equal("0");
});
要運行你的測試代碼,在輸入類似這樣的命令行npm test。當(dāng)框架檢測到你的源代碼的變化時,會執(zhí)行你的測試。每次框架運行測試時,都會指示測試是否通過或失敗。
2?????????MochaJS
2.1.1????官網(wǎng)
http://mochajs.org/
2.1.2????許可
MIT
2.1.3????特點
自2011年以來,MochaJS一直是最流行的javaScript測試框架之一。它在Node.js上運行,為前端和后端異步測試提供了兼容性。在良好的文檔支持下,Mocha在過去的幾年里已經(jīng)被證明是一個成熟的框架。
托管在Github上,Mocha的靈活性得到了認可,因此,它已經(jīng)被證明是JavaScript開發(fā)人員最信賴的測試程序庫之一。
Mocha的主要優(yōu)點:
1.???????為前端和后端測試提供兼容性
2.???????支持NodeJS調(diào)試器,使錯誤跟蹤變得更容易。
3.???????準確的報告
4.???????提供對所有瀏覽器的支持,包括無頭Chrome庫。
5.???????非常方便開發(fā)人員編寫測試用例的框架。
3?????????JEST
3.1.1????官網(wǎng)
https://jestjs.io/
3.1.2????許可
MIT
3.1.3????特點
JEST可以說是Facebook使用和維護的最流行的JavaScript測試框架。JEST測試框架提供了?"零配置"的測試體驗。
JEST是基于React的應(yīng)用程序的首選框架。它提供了一個毋庸置疑的且非常方便的用戶界面。這個框架捆綁了一些有用的功能,比如快照測試和內(nèi)置的代碼覆蓋工具。
JEST的主要優(yōu)點:
1.???????兼容NodeJS、React、Angular、VueJS和其他基于Babel的項目。
2.???????支持文件的標準語法。
3.???????速度快,性能高。
4.???????使用實時快照可以管理較大對象的測試。
4?????????Jasmine
4.1.1????官網(wǎng)
https://jasmine.github.io/
4.1.2????許可
MIT
4.1.3????特點
Jasmine于2010年推出,是一個開源的JavaScript測試框架。它能夠測試所有類型的JavaScript應(yīng)用程序。這個框架支持行為驅(qū)動開發(fā)(BDD)。使用Jasmine,人們可以在網(wǎng)站上執(zhí)行類似于用戶行為的測試案例。Jasmine受JS Spec、Rspec的影響很大。
Jasmine對前端測試非常有幫助。它既包括可見性測試,也包括UI在各種不同分辨率設(shè)備上的響應(yīng)性測試。人們還可以通過自定義延遲和等待時間來模擬實際的用戶行為。
Jasmine的主要優(yōu)點:
1.???????提供小巧、簡潔、直接的語法,便于測試。
2.???????不需要任何文檔對象模型(DOM)。
3.???????提供對前端和后端測試的支持。
4.???????易于編碼,因為所使用的語法與自然語言非常相似。
5.???????強大的文件和社區(qū)支持
5?????????Karma
5.1.1????官網(wǎng)
https://karma-runner.github.io/latest/index.html
5.1.2????許可
MIT
5.1.3????特點
Karma是另一個流行的開源生產(chǎn)測試環(huán)境。它允許QA在不同的環(huán)境下對應(yīng)用程序進行測試。Karma允許應(yīng)用程序腳本在真實的瀏覽器和手機、平板電腦等設(shè)備上執(zhí)行。Karma旨在為開發(fā)者提供一個測試環(huán)境,在這個環(huán)境中,他們不需要設(shè)置大量的配置。相反,他們只需運行測試并獲得即時反饋。
使用Karma的主要好處:
1.???????支持與Jenkins、Travis和Semaphore等頂級CI/CD工具的集成。
2.???????可以在實際設(shè)備和瀏覽器上進行測試
3.???????提供對PhantomJS等無頭環(huán)境的支持。
4.???????支持直接從終端或IDE進行遠程測試
5.???????是框架不可知的,這意味著可以用Mocha、Jasmine等流行框架來描述測試。人們也可以為特定的框架寫一個簡單的適配器。
6?????????Puppeteer (Node Library)
6.1.1????官網(wǎng)
https://github.com/puppeteer/puppeteer
https://developers.google.com/web/tools/puppeteer/get-started
6.1.2????許可
Apache 2.0
6.1.3????特點
注意:Puppeteer?是一個程序庫,而不是類似于上面其他的庫的框架。之所以將其包含在內(nèi),是因為它在Chrome瀏覽器的JavaScript測試方面提供了許多優(yōu)勢。
Puppeteer是一個提供高級API的Node程序庫庫。這個API用于通過DevTools協(xié)議控制Chrome或Chromium。Puppeteer的主要局限性之一是它只適用于Chrome和Chromium。Puppeteer可以用于特定瀏覽器的應(yīng)用,如頁面結(jié)構(gòu)測試、抓取網(wǎng)站截圖等。
還可以為單頁應(yīng)用(SPA)抓取和捕獲預(yù)渲染的內(nèi)容。
Puppeteer的其他優(yōu)點包括:
1.???????輕松實現(xiàn)UI測試、表單提交和鍵盤輸入的自動化。
2.???????輕松生成網(wǎng)頁的屏幕截圖和PDF文件。
3.???????支持測試chrome擴展。
4.???????人們可以很容易地使用時間線跟蹤來診斷網(wǎng)站的性能問題。雖然Puppeteer是最近才出現(xiàn)在測試領(lǐng)域的,但已經(jīng)被大量的開發(fā)者所采用。Puppeteer的未來看起來很有希望。
7?????????參考
https://testguild.com/top-8-essential-javascript-automation-frameworks/
https://www.browserstack.com/guide/top-javascript-testing-frameworks
https://www.lambdatest.com/blog/top-javascript-automation-testing-framework/
JavaScript
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。