摘要:有句話說道:“質量是設計出來的,而不是測出來的,”這其實就是在追根溯源bug的產生,因為只有知道了其根源才可以行之有效的解決這一問題,因此要將測驗左移到軟體最初的設計階段,并貫穿整個研發活動的始終,
本文分享自華為云社區《測驗左移》,作者:華為云PaaS服務小智 ,
什么是測驗左移
在傳統的軟體研發周期中,有個比較著名的模式叫“瀑布模式”,在這個模式中,專案周期被清晰的分為“制定計劃->需求分析->軟體設計->程式編碼->軟體測驗->運行維護”等六個基本活動,
并且規定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落,如果我們看上面從左到右的順序,測驗階段就是軟體生命周期中的一個特定階段,并且這個階段處于比較靠右的一個階段(如上圖軟體測驗在第五個階段),
隨著時代的進步,人們慢慢意識到軟體測驗的重要性,并且“靠右”的軟體測驗階段發現的缺陷修復成本會非常高,戴明曾提出“問題發現得越早,修復的成本越低”,有資料指出85%的缺陷都是在代碼編碼階段引入的,然而大部分的缺陷并不是在編碼的時候發現的,而是在之后的測驗階段發現的,甚至是已經上線后,而且隨著越往后發現缺陷,修復的成本也越高,
在《The Shift-Left Approach to Software Testing》中提出,假如在編碼階段發現的缺陷只需要1分鐘就能解決,那么單元測驗階段需要4分鐘,功能測驗階段需要10分鐘,系統測驗階段需要40分鐘,而到了上線之后再發現可能就需要640分鐘來修復,這可以說是很難讓人接受的,
于是,軟體行業出現了變革,從研發完成后測驗才介入的方式,變成從制定計劃,需求分析的階段測驗就開始參與進入,從“鏈條”上看,測驗的作業“左移”了,測驗左移也就意味著不是在最后階段進行測驗,而是一直持續測驗,
如何做到測驗左移
要將傳統的測驗階段,移至左端的制定計劃、需求分析、軟體設計、程式編碼階段中,然后相關人員參與相應活動,這里的相關人員主要指測驗人員和開發人員(因多數公司組織情況和篇幅等其他原因,僅指出這兩種角色),
對于測驗人員而言,需要在專案初始階段盡早參與,了解專案的需求并和業務人員進行溝通彼此達成共識,也為測驗策略及工具等提前準備,測驗人員需要參加設計評審會議,需求分析等會議,理解產品設計和結構,識別設計缺陷,建議不同的設計選項,相應的分解設計創建測驗場景,要和開發人員緊密合作,除了口頭上的及時共同澄清,還需要指導開發人員撰寫單元測驗,也可在用戶故事上提供測驗場景、意見和反饋等供所有相干人了解查看,預防缺陷,達到預防效果,
對于開發人員而言,要提高自測意識,借助單元測驗或者質量分析工具等提升質量,在編碼階段應開展相關活動,如TDD、結對編程,以及長期和堅持開展代碼的review活動等,代碼的監視活動不單是可以提升代碼質量預防缺陷的產生,還可以提升開發人員的編碼能力及意識,
總之,測驗左移的原則就是測驗活動在軟體開發周期早期的各個階段都開展進行,以保障各個階段的活動都是“安全可靠”的,
實踐方法
基于上面的分析,測驗左移的具體實踐活動和方法大致如下,每個組織也可需要根據實踐情況進行裁剪和調整,
制定計劃
在專案的規劃設計上,建議測驗和開發人員都參與,并共同輸出設計規劃,以軟體開發平臺 DevCloud 為例,可以通過專案管理中的規劃進行需求的計劃和設計,專案管理根據常用的規劃方式提供了甘特圖、思維導圖兩種,
需求分析
在澄清需求時,測驗人員、開發人員和產品負責人等干系人應共同進行需求分析,彼此達成共識,以軟體開發平臺DevCloud 為例,在描述資訊和評論中進行需求的澄清和記錄,
設計測驗用例
需求分析澄清后,測驗人員在測驗用例設計開發作業上,設計測驗用例,完成測驗代碼的開發、測驗資料的準備,并及時與開發人員溝通軟體介面,確保測驗代碼能夠成功驅動業務代碼,以軟體開發平臺DevCloud 為例,可以在User Story下關聯相關的用例,
并在用例中填寫前置條件、測驗步驟、預期結果等相關資訊,
編碼提交
需求分析澄清后,開發人員根據分析后的功能、驗收標準等,以TDD的方式開始開發作業,當代碼開發完成或以其他原則結束后,提交代碼到代碼倉庫,由相關人員對代碼進行評審,以DevCloud為例,代碼提交采用合并請求的方式,可由一人或多人參與代碼的評審,根據情況給出評審意見,最后完成代碼的合并提交,
軟體測驗
當開發人員完成功能開發后,測驗人員開始功能測驗活動,若發現bug,及時溝通,并協助定位bug,以DevCloud為例,可以通過創建Bug的作業項和User Story關聯,以完成測驗的執行和分析作業,
當開發修復完bug后,可以對所有代碼進行完整的回歸測驗,在DevCloud中,可以通過單獨運行測驗套件完成回歸測驗,或者流水線完成全量的介面測驗以實作回歸測驗,
此外,DevCloud作為一套完整的DevOps工具鏈,當代碼進行集成時,可以通過流水線的能力實作持續集成和測驗的能力,當代碼提交后,觸發流水線中的集成階段,完成集成的測驗作業,集成測驗以介面測驗為主,可以通過DevCloud中的介面測驗得以實作,具體如下:
寫在最后
有句話說道:“質量是設計出來的,而不是測出來的,”這其實就是在追根溯源bug的產生,因為只有知道了其根源才可以行之有效的解決這一問題,因此要將測驗左移到軟體最初的設計階段,并貫穿整個研發活動的始終,
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/522934.html
標籤:其他
上一篇:圖的遍歷
下一篇:ROS2時間同步(python)
