本文是基于敏捷之旅2012北京站的開放空間討論所做出的總結。
1. 敏捷開發提高軟件質量
關于敏捷如何提高質量的認識:我們認為敏捷可以提高質量。質量的提高和保證不再放在測試環節,而是放在開發階段。其宗旨是盡可能地在開發階段保證產品質量。所以才提出了各種有效手段比如測試先行,結對編程等方法。這樣做不僅減少了測試工作量,更重要的是可以盡量阻止在測試后期發現問題,解決問題帶來的巨大開發成本。
2. 快速迭代
對于第一點的最后描述,即李老師所說的“死亡行軍”。項目一旦碰到這個問題,不管是何原因造成問題最后發現,開發測試都會痛苦,為了能有效解決這個問題,是否能從流程上加以改進,使問題盡早暴露。這里是否可以借鑒敏捷開發和RUP里明顯提到的快速迭代,如下圖:
快速迭代
對于每一個sprint 其實就是一個小規模試錯的過程,這里不僅包括核心功能的開發,同時也是測試過程,比如當SP1結束后,SP2測試組就開始測試SP1功能,這里的測試不僅是功能測試,也必須包括系統集成測試。為了保證所做功能與客戶需要一致,當SP3結束后,將已做完的核心功能和客戶碰頭確認或改進,即客戶觀察點。
3. 大型系統的測試模型
對于大型系統來說,很多公司依然沿用瀑布模型,基本形式依然是調研,需求確定,設計,實施,測試,發布等環節,在測試環節中會有很多組在不同時間段進行測試,比如先功能測試,然后階段性(一般兩周)回歸測試,之后集成測試等。關鍵問題是對于大型系統,設備或系統間依賴性強,而功能測試和回歸性測試都是以個體為主進行測試,單個模塊,設備,系統沒問題,但集成之后由于每個設備的變化,往往導致最后階段問題頻出,甚至是方案一級的設計缺陷,此時再改,壓力巨大,成本非常高。如果能把集成測試前移或與開發并行執行,進行核心功能的持續集成,即每一到兩個sprint結束后就立刻進行系統級集成,是否會將系統間不匹配問題,提前發現,減小后期壓力。所以柔和敏捷開發的一些方式,能否說:
極限編程(以結對編程為例)是以分鐘來保證產品構建質量, 單元測試 是以小時計來保證產品質量, 持續集成測試 是以天計來保證產品質量,三者并行效果更好。
原文轉自:http://www.anti-gravitydesign.com