重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
在軟件開發(fā)過程中,每個(gè)單元的運(yùn)行都是非常關(guān)鍵的,并且直接關(guān)系到后期程序員的運(yùn)行。那么在進(jìn)行軟件開發(fā)過程中,經(jīng)常使用到的單元測(cè)試方法有哪些呢,一個(gè)好的單元測(cè)試是如何進(jìn)行實(shí)現(xiàn)的?下面云南電腦培訓(xùn)為大家介紹進(jìn)行Java單元測(cè)試的具體方法。
創(chuàng)新互聯(lián)專業(yè)提供聯(lián)通服務(wù)器托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買聯(lián)通服務(wù)器托管服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。
1、使用框架進(jìn)行單元測(cè)試
Java能夠提供單元測(cè)試方法的框架,在測(cè)試過程中,測(cè)試NG和JUnit是現(xiàn)在流行的測(cè)試框架。JUnit和TestNG框架測(cè)試有幾個(gè)重要功能:設(shè)置和運(yùn)行很容易;允許忽略或分組,并一起運(yùn)行多個(gè)測(cè)試;支持參數(shù)化測(cè)試,并且云南IT培訓(xùn)發(fā)現(xiàn)能夠通過在運(yùn)行時(shí)指定不同的值來執(zhí)行單元測(cè)試。
2、謹(jǐn)慎使用測(cè)試驅(qū)動(dòng)開發(fā)
測(cè)試驅(qū)動(dòng)開發(fā)是一個(gè)軟件開發(fā)的過程。在整個(gè)開發(fā)過程中,在開始編碼的時(shí)候,應(yīng)該根據(jù)程序的需求進(jìn)行編程測(cè)試。但是昆明IT培訓(xùn)發(fā)現(xiàn)由于這個(gè)時(shí)候還沒有進(jìn)行編程,所以初次測(cè)試會(huì)面臨失敗,只需要寫入少量的代碼就能通過測(cè)試,進(jìn)行重置代碼。
3、測(cè)試代碼的覆蓋率
代碼覆蓋率是以百分比測(cè)定執(zhí)行單元測(cè)試時(shí)進(jìn)行的代碼量。通常,高覆蓋率的代碼包含未被檢測(cè)出的錯(cuò)誤的概率較低,因?yàn)楦嗟脑创a在測(cè)試中被執(zhí)行。測(cè)試代碼覆蓋率的工具有:Clover,Corbetura,JaCoCo。使用工具測(cè)試能夠更好的提高測(cè)試質(zhì)量。
4、將測(cè)試數(shù)據(jù)外部?jī)?yōu)化
在JUnit4之前,測(cè)試用例執(zhí)行的數(shù)據(jù)必須被測(cè)試用例硬編碼,這會(huì)引起限制。為了使用不同的數(shù)據(jù)執(zhí)行測(cè)試,必須修正測(cè)試用例代碼。但是,昆明電腦培訓(xùn)認(rèn)為JUnit4以及TestNG支持外部化測(cè)試數(shù)據(jù),無需變更源代碼,就可以對(duì)不同的數(shù)據(jù)組執(zhí)行測(cè)試用例。
1、Jasmine
Jasmine是一個(gè)行為驅(qū)動(dòng)的測(cè)試開發(fā)框架,用于對(duì)JavaScript代碼進(jìn)行測(cè)試。它不依賴其它任何JavaScript框架,也不需要DOM。它的語法簡(jiǎn)潔、明確,寫測(cè)試非常容易。
2、Mocha
Mocha是一個(gè)功能豐富的JavaScript測(cè)試框架,既運(yùn)行于Node.js環(huán)境中,也可以運(yùn)行于瀏覽器環(huán)境中。Mocha以串行方式運(yùn)行測(cè)試,能做出靈活而準(zhǔn)確的報(bào)告,也能將測(cè)試中未捕捉的異常映射到正確的測(cè)試用例。
3、Chai
Chai是個(gè)支持BDD/TDD的庫,可用于node和瀏覽器,可配合任何JavaScript測(cè)試框架使用。
4、QUnit
QUnit是個(gè)功能強(qiáng)大又易于使用的JavaScript單元測(cè)試框架。jQuery、jQueryUI和jQueyMobile項(xiàng)目都使用這個(gè)框架,它能測(cè)試普通的JavaScript代碼。
5、Sinon
Sinon.JS為JavaScript提供了獨(dú)立的spies、stubs和mocks[譯者注:Spy、Stub和Mock都是測(cè)試專用名詞,Stub常被翻譯為樁,spies是Spy的復(fù)數(shù)形式,是一種可以監(jiān)視方法、調(diào)用和參數(shù)的技術(shù)]。它不依賴任何東西,可以配合任何單元測(cè)試框架工作。
6、Karma
Karma是針對(duì)連通瀏覽器的一個(gè)框架無關(guān)測(cè)試運(yùn)行器。每一個(gè)測(cè)試結(jié)果對(duì)應(yīng)每個(gè)瀏覽器,它的測(cè)試和顯示都是通過命令行暴露給開發(fā)者的,這樣他們就可以看到瀏覽器測(cè)試的通過或失敗。
7、Selenium
Selenium有一個(gè)簡(jiǎn)單的目標(biāo):就是自動(dòng)化瀏覽器。它主要用于自動(dòng)化測(cè)試web應(yīng)用程序,但是只是很簡(jiǎn)單地考慮到了基于網(wǎng)絡(luò)的管理任務(wù)。
8、WebdriverIO
WebdriverIO允許用戶僅添加幾行代碼就可以控制瀏覽器或移動(dòng)應(yīng)用程序,使測(cè)試代碼更簡(jiǎn)單、簡(jiǎn)潔、易讀。集成的TestRunner同樣允許你以同步的方式調(diào)用異步命令,這樣你不需要關(guān)心如何處理Promise以避免競(jìng)態(tài)條件。此外,它取消了所有的繁瑣的設(shè)置工作,并且會(huì)為您管理的Selenium會(huì)話。
9、Nightwatch
Nightwatch.js是一個(gè)易于使用的Node.js,它是為基于瀏覽器的app和網(wǎng)站設(shè)計(jì)的終端到終端(E2E)的測(cè)試方法。它使用強(qiáng)大的W3CWebDriverAPI,用于在DOM元素上執(zhí)行命令和斷言。
10、PhantomCSS
PhantomCSS獲得CasperJS捕獲的屏幕截圖,并使用Resemble.js將其與基準(zhǔn)圖進(jìn)行對(duì)比,以測(cè)試RGB像素差異。java課程發(fā)現(xiàn)PhantomCSS然后生成圖像差異對(duì)比,用于幫助您找到原因。
11、PhantomFlow
PhantomFlow使用決策樹提供UI測(cè)試方案。針對(duì)PhantomJS,CasperJS和PhantomCSS的NodeJS包裝器——PhantomFlow能夠流暢地在代碼中描述用戶流程,同時(shí)生成用于可視化的結(jié)構(gòu)化樹數(shù)據(jù)。
靜態(tài)測(cè)試包括代碼檢查、靜態(tài)結(jié)構(gòu)分析、代碼質(zhì)量度量等。它可以由人工進(jìn)行,充分發(fā)揮人的邏輯思維優(yōu)勢(shì),也可以借助軟件工具自動(dòng)進(jìn)行。代碼檢查代碼檢查包括代碼走查、桌面檢查、代碼審查等,主要檢查代碼和設(shè)計(jì)的一致性, 代碼對(duì)標(biāo)準(zhǔn)的遵循、可讀性,代碼的邏輯表達(dá)的正確性,代碼結(jié)構(gòu)的合理性等方面;可以發(fā)現(xiàn)違背程序編寫標(biāo)準(zhǔn)的問題,程序中不安全、不明確和模糊的部分,找出程序中不可移植部分、違背程序編程風(fēng)格的問題,包括變量檢查、命名和類型審查、程序邏輯審查、程序語法檢查和程序結(jié)構(gòu)檢查等內(nèi)容。”。看了一系列的靜態(tài)代碼掃描或者叫靜態(tài)代碼分析工具后,總結(jié)對(duì)工具的看法:靜態(tài)代碼掃描工具,和編譯器的某些功能其實(shí)是很相似的,他們也需要詞法分析,語法分析,語意分析...但和編譯器不一樣的是他們可以自定義各種各樣的復(fù)雜的規(guī)則去對(duì)代碼進(jìn)行分析。