关于高效企业测试的思考(1/6)
企業(yè)中的測(cè)試仍然不是應(yīng)有的廣泛使用的話題。 編寫尤其是維護(hù)測(cè)試需要花費(fèi)時(shí)間和精力,但是縮短軟件測(cè)試并不是解決方案。 為了提高測(cè)試效率,應(yīng)該追求哪些范圍,方法和測(cè)試技術(shù)?
我根據(jù)許多實(shí)際項(xiàng)目,結(jié)合了我在企業(yè)測(cè)試中的經(jīng)驗(yàn)和意見,提出了一系列建議。 特別是對(duì)于比“ hello world”要復(fù)雜得多的應(yīng)用程序,遵循哪種方法至關(guān)重要。 我將主要關(guān)注測(cè)試應(yīng)用程序的功能行為,即它們?nèi)绾魏芎玫貙?shí)現(xiàn)我們的業(yè)務(wù)邏輯。 在下面的內(nèi)容中,我將解釋有關(guān)如何在不同的范圍和使用不同的方法來提高測(cè)試效率的最佳實(shí)踐:
- 想法與約束
- 單元測(cè)試
- 用例測(cè)試
- 代碼級(jí)集成測(cè)試
- 系統(tǒng)測(cè)試
- 開發(fā)工作流程和管道
- 測(cè)試代碼質(zhì)量和可維護(hù)的測(cè)試
- 測(cè)試框架和技術(shù)
介紹
不管測(cè)試的類型和范圍如何,擁有測(cè)試套件的目的都是為了驗(yàn)證我們的應(yīng)用程序可以在生產(chǎn)中按預(yù)期工作。 從用戶的角度來看,這應(yīng)該是驗(yàn)證系統(tǒng)是否完成其工作的主要?jiǎng)訖C(jī)。
由于人的注意力跨度和上下文切換是一回事,因此我們需要確保我們的測(cè)試能夠快速運(yùn)行和驗(yàn)證,并具有可預(yù)測(cè)的結(jié)果。 在編寫代碼時(shí),快速驗(yàn)證(少于或等于一秒鐘)對(duì)于確保高效的工作流程以及確保我們不會(huì)分散注意力至關(guān)重要。
另一方面,我們需要確保測(cè)試保持可維護(hù)性。 軟件更改非常頻繁,并且具有足夠的功能測(cè)試覆蓋范圍,生產(chǎn)代碼中的每個(gè)功能更改都需要更改測(cè)試范圍。 理想情況下,測(cè)試代碼僅在功能(即業(yè)務(wù)邏輯)發(fā)生變化時(shí)才發(fā)生變化,而不是在代碼清理和重構(gòu)時(shí)發(fā)生變化。 通常,測(cè)試方案需要使非功能性的結(jié)構(gòu)更改成為可能。
當(dāng)我們研究不同的測(cè)試范圍時(shí)(我們將更詳細(xì)地介紹),就會(huì)出現(xiàn)一個(gè)問題,即哪個(gè)范圍需要花費(fèi)更多的時(shí)間和精力。 對(duì)于微服務(wù)應(yīng)用程序或我們擁有大量分布和集成的任何系統(tǒng),驗(yàn)證系統(tǒng)邊界的集成測(cè)試變得更加重要。 因此,我們需要一種有效的方法來驗(yàn)證本地開發(fā)過程中的整個(gè)應(yīng)用程序,同時(shí)保持應(yīng)用程序環(huán)境和設(shè)置與生產(chǎn)環(huán)境盡可能相似。
原則與約束
無論選擇哪種解決方案,我們都為測(cè)試套件定義以下原則和約束:
- 測(cè)試需要快速執(zhí)行和驗(yàn)證,并提供快速反饋。 對(duì)于沒有任何進(jìn)一步集成的單元測(cè)試,我們應(yīng)該能夠在一秒鐘內(nèi)運(yùn)行數(shù)百個(gè)測(cè)試。 對(duì)于集成測(cè)試,執(zhí)行時(shí)間取決于場(chǎng)景,理想情況下不超過一秒。
- 在開發(fā)過程中,測(cè)試還必須在集成級(jí)別上提供快速反饋。 這要求測(cè)試上下文快速啟動(dòng),或者在我們編寫代碼時(shí)保持運(yùn)行。 因此,應(yīng)該有可能通過少于5秒的重新部署和測(cè)試周轉(zhuǎn)時(shí)間來建立有效的開發(fā)周期。
- 測(cè)試需要使其能夠重構(gòu)生產(chǎn)代碼,而無需在測(cè)試范圍內(nèi)進(jìn)行重大更改。 不會(huì)更改應(yīng)用程序功能行為的代碼更改應(yīng)僅導(dǎo)致最小的測(cè)試代碼更改。
- 確實(shí)會(huì)更改功能行為的代碼更改應(yīng)同樣會(huì)導(dǎo)致有限的測(cè)試代碼更改。 例如:“將HTTP邊界交換到gRPC,將JSON交換到其他東西,甚至交換企業(yè)框架等,要花多少精力?”。
- 測(cè)試技術(shù)和方法必須與根據(jù)我們的業(yè)務(wù)需求量身定制適當(dāng)?shù)某橄?#xff0c;委托和代碼質(zhì)量兼容。 我們需要能夠設(shè)計(jì)表達(dá)性API,擴(kuò)展?jié)撛诘腄SL以及設(shè)計(jì)正確的抽象。
- 測(cè)試技術(shù)需要支持一種“開發(fā)模式”,即以一種能夠在集成環(huán)境中進(jìn)行即時(shí)更改和重新部署的方式運(yùn)行該應(yīng)用程序,例如服務(wù)器的“開發(fā)”和調(diào)試模式, Quarkus的開發(fā)模式, 網(wǎng)真 , 監(jiān)視部署方法等。
- 測(cè)試方法必須與單獨(dú)設(shè)置開發(fā)和測(cè)試生命周期兼容。 也就是說,開發(fā)人員必須能夠在測(cè)試生命周期之外設(shè)置和配置其本地環(huán)境(例如,使用Shell腳本),然后在已經(jīng)設(shè)置好的環(huán)境中快速運(yùn)行測(cè)試方案。 出于靈活性和可重用性的原因,各個(gè)測(cè)試用例不應(yīng)管理測(cè)試設(shè)置的生命周期。
- 我們需要能夠在多個(gè)范圍內(nèi)重用測(cè)試場(chǎng)景,例如,一次定義業(yè)務(wù)場(chǎng)景,并將設(shè)置重新用于系統(tǒng)測(cè)試,負(fù)載測(cè)試,在本地或針對(duì)外部部署的環(huán)境中運(yùn)行。 復(fù)制方案應(yīng)該很簡(jiǎn)單,方案應(yīng)該只包含幾行代碼,通過使用不同的實(shí)現(xiàn)來達(dá)到不同的目的。
在本系列的下一部分中,我們將研究代碼級(jí)單元測(cè)試和組件或用例測(cè)試,以及它們?nèi)绾闻c這些原理和約束相匹配。
翻譯自: https://www.javacodegeeks.com/2019/09/thoughts-on-efficient-enterprise-testing.html
總結(jié)
以上是生活随笔為你收集整理的关于高效企业测试的思考(1/6)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win7玩饥荒游戏报错error dur
- 下一篇: 腾达设置网址(腾达无线网设置网址)