敏捷項目中的性能工程
性能工程可以保證應用系統按照性能要求來架構、設計、構建以及測試,它是軟件開發中的一條重要規范。恰恰相反,大部分傳統工程的“性能工程”通常只局限于性能測試,著重于完成不同條件下的測試任務,而不是發現負載分布,朝更好的性能改進。Balasubramanian,P 與大家分享了一次關于“scrum項目構建性能工程的實踐”的有趣的回顧。
Balasubramanian 提出性能工程包括如下活動:
收集并驗證非功能性需求開發需要的分析模型制定性能測試策略復審架構和應用程序代碼,確保符合性能的最佳實踐復審應用系統的部署方式對于已存在的應用系統,復審它們的設計和代碼,提出適當的性能調整建議根據他的定義,性能工程應該是敏捷里面一項重要活動,因為:
它為每次sprint的系統提供了最直接的反饋人們很容易對性能持錯誤態度 - 特別是在強調每次迭代都交付價值的敏捷項目里面,這種現象更是普遍。這通常都會削弱團隊對系統質量屬性的重視。重構可能會引入性能低下的代碼以可交付的產品級質量的代碼為目的 - 性能工程幫助確保系統是按照所需的“QoS”需求進行設計、構建以及驗收Balasubramanian 建議關注如下四個步驟,在Scrum項目引入性能工程:
I. 計劃階段
理解需求,為性能工程活動制定計劃
用例和性能 - 理解與每個用例相關的系統質量。性能測試策略 - 把性能測試范圍、基礎設施需要、工具、許可費用、度量以及結果格式都定義周全。在產品待辦事項里面清楚地定義性能工程 - 比如負荷建模、性能測試、性能評估等活動都應該是待辦事項的一部分,這樣才不致于被忽略。II. 系統架構設計階段
把系統質量與功能需求和業務需求分開,對框架進行驗證
評估架構 - 性能關注點 - 堅持關注于質量,架構必須通過如下方法之一的評估架構權衡分析法成本收益分析法積極復審中間設計
III. Sprints
創造可交付的、產品級質量的軟件要考慮如下幾個要素:
正確編程—— 除了普通的編程規范之外,還需要有可以獲得良好性能的規范。編寫對性能的單元測試——在sprint中,程序員需要編寫單元測試測試系統性能。雖然由于系統不斷演化導致最初的收益可能很小,但當系統穩定以后,針對性能的單元測試就能發揮威力了。復審設計和代碼——使用 JProbe, FxCop 之類的自動代碼復審工具測試與代碼相關的性能問題。設計并自動化性能測試 ——如果可能,第n次Sprint的性能測試在第n-1次Sprint就應該進行設計并讓它可以自動化執行。找出性能瓶頸,解決性能問題——在第n次Sprint中發現的性能問題應該在第n+1次Sprint里面解決掉。性能工程 Sprint——最后,團隊應該在每2-3次正常的sprint之后就引入一次并行的性能工程sprint,諸如性能測試、性能評估、負載設計等活動可以在這次sprint里面執行。IV. 結束階段
在產品環境下部署完整的應用系統。
搭建性能監視系統 - 應該使用JAMon一類的工具來監視產品系統,以得到性能問題的實時報告。為了更易于引入性能工程,Scott Barber 提供了詳盡的給性能專家的提示列表, 指導在敏捷項目中如何推廣并且提高效率。Balasubramanian 指出不管任何項目,構建性能工程時都會遇到重重挑戰。最大的挑戰就是如何轉變思維,像注重系統功能一樣注重系統質量。從一開始就構建性能工程獲得的益處遠 甚于投資,而且隨著sprint的進行其益處會翻番。
文章來源于領測軟件測試網 http://www.kjueaiud.com/