持续交付会如何影响测试
如果要做持續(xù)交付,那我們必須關(guān)注我們寫的代碼的質(zhì)量。不是所有團隊都配備專門的測試人員,但如果有測試人員的話,他們會和開發(fā)人員緊密合作,編寫在單元測試中無法覆蓋的少數(shù)測試的自動化代碼,并幫助開發(fā)人員搭建單元測試。
\\Industrial Logic Canada公司的首席執(zhí)行官Jeff Morgan在2018年eXperience Agile大會上介紹了持續(xù)交付會如何影響測試人員的工作。InfoQ會以問答、總結(jié)和文章的形式報道eXperience Agile大會。
\\Morgan說,持續(xù)交付的優(yōu)勢在于可以迅速在生產(chǎn)環(huán)境下進行實驗。它可以幫助我們盡快測試用戶對產(chǎn)品的想法,并收集數(shù)據(jù)結(jié)果。
\\我們大多數(shù)的應用程序都會進行單元測試。Morgan表示他們沒有人工測試,一切測試都是自動化進行的。并不存在強化階段,我們必須從一開始就保證產(chǎn)品的質(zhì)量。
\\Morgan建議如果你需要專門的測試知識,那讓測試方面的專家和團隊一起工作,不要讓專家悶頭寫測試。是整個團隊需要測試,不僅僅是這個專家需要測試。
\\Morgan說,由于測試人員越來越技術(shù)化,開發(fā)人員也越來越注重測試的重要性,隨著時間的推移,開發(fā)人員也會承擔測試的工作,測試人員也會做一些開發(fā)的工作。
\\InfoQ采訪了Morgan,咨詢了他持續(xù)交付會如何影響測試工作。
\\InfoQ:當組織采用持續(xù)交付的方法時,軟件搭建和交付的方式會有什么重大改變?
\\\Jeff Morgan:最主要的變化是我們不會再用傳統(tǒng)的軟件開發(fā)方式了,構(gòu)建完軟件之后就直接進入測試階段。選擇進行持續(xù)交付,一旦代碼進行了源代碼管理并遍歷了部署管道,代碼就部署到了生產(chǎn)環(huán)境下。
\\這個重大的變更也表明,測試需要在開發(fā)的同時進行。實際上,我們通常不會把開發(fā)和測試認為是兩個分開的工作。相反,測試是整個開發(fā)流程的一部分。這個變更還表明,我們會更多地依賴自動化:自動化測試、自動化部署和環(huán)境自動化。
\\\InfoQ:持續(xù)交付會如何影響我們對于質(zhì)量的看法?
\\\Morgan:通常,我們會在軟件開發(fā)周期的最后,在發(fā)布前才驗證并完善軟件的質(zhì)量。這通常被稱為強化階段。但是我們?nèi)绻捎贸掷m(xù)交付,就沒有必要設立專門的強化階段,因為只要檢查了代碼就會立刻進入生產(chǎn)環(huán)境。 相反,在我們寫代碼的時候,我們要全程關(guān)注軟件的質(zhì)量。對于我工作的團隊來說,這代表著我們寫代碼的方式發(fā)生了徹底的改變。我們會采用結(jié)對編程、測試驅(qū)動開發(fā)、減少分支、以及功能開關(guān)等實踐。開發(fā)人員會更加注意測試和質(zhì)量問題。如果團隊中有開發(fā)人員,他們會主要關(guān)注少量端到端的自動化,并和開發(fā)人員結(jié)對進行探索性測試。與傳統(tǒng)的僅由測試人員來測試不同,團隊中的“每個人”都會進行非功能性需求的測試。很優(yōu)秀的團隊中,開發(fā)人員和測試人員之間并沒有很多區(qū)別。
\\我們也會使用大家所說的DevOps來幫助我們完善系統(tǒng)。通過搭建管道,用不同的方法運行我們所有的測試來降低風險,并通過測試來消除安全性、能力以及合規(guī)性的問題。通過容器和基礎設施來避免環(huán)境方面的風險。通過對于小的變更的發(fā)布控制來避免對于用戶和產(chǎn)品產(chǎn)生的風險。
\\\InfoQ:這會如何影響測試人員的工作?
\\\Morgan:首先我要指出在現(xiàn)代社會,不是所有團隊都會配備專門的測試人員的。如果有測試人員的話,他們不會手動執(zhí)行測試腳本。相反,他們要編寫少量單元測試無法覆蓋的自動化代碼,幫助開發(fā)人員從金字塔最上面轉(zhuǎn)移到最底端的單元測試。他們和開發(fā)人員合作非常緊密,并幫助搭建管道。他們會在整個開發(fā)過程中和開發(fā)人員結(jié)對,來進行探索性測試。一旦發(fā)現(xiàn)了缺陷,他們會和開發(fā)人員結(jié)對,立刻修復并部署修訂后的版本。所有的工作都是和開發(fā)人員合作完成的。
\\\\\InfoQ:如果沒有“測試階段”的時間的話,開發(fā)人員應該做什么?
\\\Morgan:根據(jù)我的經(jīng)驗,和傳統(tǒng)的“敏捷”相比,持續(xù)交付中會進行更多的測試。同時,在開發(fā)周期的不同時間都會進行測試,而不僅僅在最后才進行測試。我們非常依賴于自動化(主要是單元測試)和管道,來保證系統(tǒng)的質(zhì)量。
\\開發(fā)人員應該和開發(fā)人員緊密合作,保證軟件的質(zhì)量,保證缺陷幾乎不會發(fā)生。開發(fā)人員通常要關(guān)注金字塔最上面的“用戶測試”。他們還可以和開發(fā)人員結(jié)對,幫助他們獲得并提升自己的測試能力。測試人員還需要幫助定義構(gòu)建管道。
\\有時候會需要專門的測試專家,比如安全或負載/性能測試專家。這種情況下,他們需要和團隊討論、創(chuàng)建并維護測試腳本在管道階段的運作。
\\在很多方面,管道是最接近“測試階段”的存在。每次檢入代碼時,我們在這里運行所有測試,并最終將我們的代碼部署到生產(chǎn)環(huán)境。盡管所有的管道都是不同的,但我發(fā)現(xiàn)各個團隊之間總有些核心的通用模式。這里舉例說明了團隊可能會有的管道階段:
\\搭建并運行單元測試
\\運行動態(tài)代碼分析,如果質(zhì)量沒有達到的話就會失敗
\\在功能開關(guān)開啟的時候進行部署,只運行關(guān)注于未發(fā)布功能的測試。任何不在控制之內(nèi)的后端系統(tǒng)都應該模擬。
\\在功能開關(guān)關(guān)閉的時候進行部署,運行其他的測試,實現(xiàn)回歸。這個測試要很快運行,因此它們可以并行運作。同時,任何控制之外的后端系統(tǒng)都應該模擬。
\\在功能開關(guān)關(guān)閉的時候進行部署,在不同的瀏覽器和設備上進行小部分測試。后端需要模擬。
\\在功能開關(guān)關(guān)閉的情況下部署,運行一小部分測試,不需要模擬。這能保證完整集成工作的正常運作。
\\運行靜態(tài)和動態(tài)安全測試。
\\運行負載和性能測試。
\\運行合規(guī)性測試,解決任何生產(chǎn)前的合規(guī)性工作。
\\部署到生產(chǎn)環(huán)境。
\\如果任何階段失敗了,管道都需要停止。
\\\InfoQ:你對于想要采用持續(xù)交付的組織有什么建議?
\\\Morgan:有很多公司跟我說正在接受持續(xù)交付。當我問他們?yōu)槭裁吹臅r候,他們大多數(shù)會聊到更快的交付或是質(zhì)量提升。雖然這都是很好的目標,但我認為持續(xù)交付有更重要的優(yōu)勢。在我認為,采用持續(xù)交付的最重要原因是改變我們計劃和交付產(chǎn)品的方式。持續(xù)交付可以幫助我們拋棄辛苦的、推測性的長期產(chǎn)品路線圖,而改為采用“精益創(chuàng)新”方式來進行產(chǎn)品設計。它可以幫助我們根據(jù)真實用戶的體驗來修改代碼,以交付完善的產(chǎn)品。這是我認為使用持續(xù)交付的關(guān)注點。
\\對于正在使用持續(xù)交付的公司,他們需要了解DevOps并不是解決所有問題的方法。它當然是個重要的組成部分,但必須要和高質(zhì)量的開發(fā)相結(jié)合。實際上,我建議首先提高質(zhì)量,這需要一些時間。一旦實現(xiàn)之后,你可以考慮添加持續(xù)集成,這樣開發(fā)人員可以盡快在搭建過程中獲得反饋。隨著時間的推移,你可以把它擴展為成熟的部署管道。
\\一旦你的組織中有了質(zhì)量保證的文化之后,你就可以為每天交付多次添加DevOps自動化了。
\\\查看英文原文:How Continuous Delivery Impacts Testing
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的持续交付会如何影响测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux之父为过去的言行道歉,宣布离开
- 下一篇: 权限判断-位运算