生活随笔
收集整理的這篇文章主要介紹了
Java测试提示
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
介紹 我喜歡自動(dòng)化測(cè)試。 在一次極少的轉(zhuǎn)移到op-ed 1中,我想到了一些想法(閱讀–意見(jiàn))。
在開(kāi)始如何最好地構(gòu)成您的測(cè)試之前,我先簡(jiǎn)單問(wèn)一下–測(cè)試的原因是什么? 大致來(lái)說(shuō),我認(rèn)為它們是:
減少錯(cuò)誤總數(shù)/提高產(chǎn)品穩(wěn)定性 確保軟件按照規(guī)范運(yùn)行 以低成本,低影響實(shí)現(xiàn)上述目標(biāo)。 我認(rèn)為這可以歸結(jié)為提供可以滿足客戶需求(功能),不執(zhí)行客戶不想要的功能(錯(cuò)誤)的軟件,并且不會(huì)造成太大的噪音(成本)。
選擇系統(tǒng)
選擇一個(gè)入門(mén)門(mén)檻低,人們渴望學(xué)習(xí)或已經(jīng)知道的系統(tǒng):
在其中有價(jià)值的學(xué)習(xí)中,例如流行的行業(yè)標(biāo)準(zhǔn),這些系統(tǒng)將得到更好的文檔記錄,更好的理解,更可靠,并且您的同事將更容易加入。 我的意思是使用“范式”系統(tǒng),即按原意使用它,而不是以異常的“范式”方式使用,這將使您的同事生活困難,并阻止采用。 您可以測(cè)試多個(gè)配置,其中某些測(cè)試僅適用于某些模塊和配置嗎?
它堅(jiān)固嗎?
對(duì)測(cè)試對(duì)象的更改是否容易導(dǎo)致識(shí)別需要更改的測(cè)試? 對(duì)基礎(chǔ)實(shí)現(xiàn)的更改不應(yīng)默默地破壞測(cè)試。 避免使用完全動(dòng)態(tài)的語(yǔ)言,編譯時(shí)檢查可防止出現(xiàn)印刷錯(cuò)誤,并確定如果測(cè)試主題發(fā)生更改可能需要更改的測(cè)試。 考慮一下該系統(tǒng)對(duì)于開(kāi)發(fā)人員和技術(shù)水平較低的人員是否都可以使用–您是否希望測(cè)試人員或QA能夠編寫(xiě)測(cè)試?
曾幾何時(shí),我認(rèn)為這毫無(wú)疑問(wèn):測(cè)試系統(tǒng)是否完全自動(dòng)化? 還是,每當(dāng)您運(yùn)營(yíng)公司時(shí),都會(huì)花您公司的錢(qián)嗎?
寫(xiě)作測(cè)試
測(cè)試應(yīng)該快速運(yùn)行并快速編寫(xiě):
編寫(xiě)測(cè)試不應(yīng)要求耗時(shí)的數(shù)據(jù)庫(kù),DLL或環(huán)境設(shè)置,而是要使這種性質(zhì)的東西自動(dòng)化。 您不需要對(duì)定制系統(tǒng)的默契知識(shí),沒(méi)有人愿意沉迷于繁瑣的手動(dòng)設(shè)置。 這只是成本。 問(wèn)問(wèn)自己–是否只需單擊一個(gè)按鈕即可進(jìn)行其他人的測(cè)試? 測(cè)試本身無(wú)需花費(fèi)很長(zhǎng)時(shí)間即可編寫(xiě)。 不要混淆測(cè)試的生產(chǎn)代碼:
不必?fù)?dān)心編寫(xiě)最“有效的Java”測(cè)試代碼或重復(fù)使用。 字段不必是“私有最終”。 您無(wú)需在測(cè)試中強(qiáng)制執(zhí)行編碼標(biāo)準(zhǔn)。 測(cè)試行為,而不是方法(@Test使testMethodX無(wú)效嗎?):
考慮一個(gè)基于BDD的系統(tǒng)。 考慮為接口編寫(xiě)測(cè)試,然后使用 參數(shù)化的運(yùn)行程序,它將為每個(gè)實(shí)現(xiàn)運(yùn)行相同的測(cè)試集。
測(cè)試失敗應(yīng)明確反饋給修復(fù)程序:
捕獲測(cè)試的輸出,以便可以診斷故障。 確保可以將失敗的測(cè)試與其套件隔離運(yùn)行,以便您專(zhuān)注于修復(fù)失敗的測(cè)試。 測(cè)試失敗,修復(fù)錯(cuò)誤的代碼和重新運(yùn)行測(cè)試之間的平均時(shí)間是多長(zhǎng)時(shí)間? 測(cè)試支持和測(cè)試雙打
文檔支持代碼:
如果人們不知道測(cè)試雙打或夾具,也不會(huì)重復(fù)使用。 對(duì)于JUnit,請(qǐng)考慮使用@Rules為測(cè)試提供mixin- esq組件。
首選假貨:
與存根,假人或模擬物相比,它們通常更具通用性和可重用性。 與其他類(lèi)型的雙打相比,它們將使您對(duì)主題有更好的了解。 他們通常可以與實(shí)現(xiàn)共享一個(gè)代碼,從而進(jìn)行測(cè)試。 具有通過(guò)接口直接控制偽造品的能力,例如將組件置于普通API無(wú)法激發(fā)的錯(cuò)誤模式,例如網(wǎng)絡(luò)問(wèn)題或硬件故障。 偽造第三方:
在我的工作中,有大量與硬件相關(guān)的JNI / JNA代碼。 通過(guò)僅偽造JNI方法,我們可以模擬各種事情,包括失敗超時(shí)。 我通過(guò)偽造串行設(shè)備,偽造javax.comm.SerialPort并用模擬失敗或其他錯(cuò)誤的偽數(shù)據(jù)將其預(yù)加載來(lái)完成了類(lèi)似的工作。 這將與RESTful API等同樣有效。 運(yùn)行測(cè)試
現(xiàn)實(shí)點(diǎn)”:
最好使用真實(shí)的代碼而不是使用偽造品在具有代表性的設(shè)置上運(yùn)行測(cè)試。 嘗試在容器外運(yùn)行測(cè)試,以便在盡可能接近生產(chǎn)設(shè)置的情況下運(yùn)行該軟件。 如果軟件在特定的環(huán)境上運(yùn)行,也可以在特定的環(huán)境下運(yùn)行測(cè)試,即集成測(cè)試之前要進(jìn)行部署(及其隱式測(cè)試),這反過(guò)來(lái)意味著部署應(yīng)該是一個(gè)按鈕。 然后使之可重復(fù):
一個(gè)人編寫(xiě)的測(cè)試可以很容易地被另一個(gè)人訪問(wèn),即版本控制。 無(wú)需繁瑣,容易出錯(cuò)的工作即可將測(cè)試納入版本控制和單按鈕提交。 它們可以在您的開(kāi)發(fā)機(jī)以外的計(jì)算機(jī)上運(yùn)行嗎? 如果不是自動(dòng)化的話,就不會(huì)重復(fù)。 與構(gòu)建系統(tǒng)集成:
測(cè)試應(yīng)該在開(kāi)發(fā)機(jī)器上運(yùn)行,并且CI服務(wù)器和QA中的每次運(yùn)行都將使您對(duì)成品更有信心。 它們應(yīng)該在CI中運(yùn)行,可能沒(méi)有頭,并同時(shí)執(zhí)行相同的測(cè)試。 他們是否使用相同的硬編碼目錄? 他們?cè)谕欢丝谏媳O(jiān)聽(tīng)嗎? 參考: 測(cè)試我們JCG伙伴亞歷克斯·柯林斯在亞歷克斯·柯林斯的博客博客。
翻譯自: https://www.javacodegeeks.com/2012/08/tips-for-testing-with-java.html
總結(jié)
以上是生活随笔為你收集整理的Java测试提示的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。