敏捷
反應快速靈敏。
在敏捷軟件開發領域,更注重的以人為核心,迭代,循序漸進的開發方法。相比傳統的開發方法,這種方法能更快速的開發,上線,反饋,調整、迭代。以敏捷的姿態去發展產品。
敏捷與傳統開發的區別
有個非常有意思的游戲能夠幫助大家理解敏捷和傳統開發的差異。游戲有兩個角色,一個是“老板”,另一個是“員工”,在 2 分鐘內,“員工”需要在“老板”的完全指揮下,即“向前一步,向后一步,停,向左一步,向右一步”,完成 60步移動的任務。“員工”需要執行“老板”的每一個指令,不允許做出相違背的動作。“老板”則不參與行動,只發出指令指揮“員工”的活動。我們體驗這個 游戲 時,當場 60% 的參與者成功完成了任務,大致估計出我們的工作效率是50%*60%=30%。游戲后,參與者被問及對這種行為方式的感受時,無論是“員工”還是“老板”都表示非常不滿。
接著,大家又做了另一組游戲。2 分鐘內參與者被要求獨立的、自主的完成 60 步移動任務,在這次游戲里,所有參與者任務相同,大家可以自行決定、并依據自己的判斷隨時調整其步伐方向,快慢。最后,我們發現所有參與者不但毫無折扣的 按時完成了任務,因而工作效率也達到 100%*100%=100%,而且所有人對于這種新的工作方式更是產生了極大的興趣。
敏捷開發與傳統開發的比較
通過上面有趣的兩種游游戲的對比,以及價值表述的對比就折射出了傳統開發與敏捷開發的方式的對比,其中的優劣不言而喻。
敏捷開發
敏捷宣言:
敏捷方法分類:
除了圖例中的方法外還有 Crystal, Lean Software Development, Feature Driven Development, Xbreed, RUP 等等。
敏捷方法的共性:
雖然各種敏捷方法的名稱、所需環境、適合的團隊有很大差異,但是他們擁有相似、相同的以下幾大特點:
* 擁抱變化
“唯一不變的就是變化”所以,需求的變動是必不可少的,每次的決定和需求的調整都是將產品開發推向更正確的方向。而在接受變化的同時,我們應該積極的反饋顯示活動中暴露出來的可能的設計缺陷和錯誤。
* 客戶的參與
最終使用者、內部使用者、客戶代表、商業伙伴都可以是我們的客戶。對于客戶的參與更能使我們做出客戶真正需要的產品。
* 較少的文檔
傳統開發的文檔在敏捷中仍有大用,只是我們可以將原來的文檔進行精簡。在敏捷中文檔不是最佳的溝通方式,更鼓勵通暢的交通和溝通,而溝通的效率遠高于文檔。
* 最大化的生產力
敏捷開發模式要最大化的提高團隊的工作效率。無論是依靠剪除冗余的文檔工作,還是提供民主的、通暢的溝通平臺都是為了幫助 團隊能夠集中有限的精力處理。
* 測試驅動開發
是讓開發人員在編寫功能代碼之前,根據對需求的理解先設計和編寫單元測試代碼。先思考如何對將要實現的功能進行驗證,再考慮功能的實現。然后迭代的增加新功能的單元測試和功能代碼編寫,直到完成全部功能的開發。
* 自動化冗余工作
將團隊成員從冗余的勞動中解放出來,無論是自動化的測試還是自動化工具的開發只要能夠節約成本都是敏捷開發、敏捷測試的目標。
* 民主的團隊
敏捷團隊是一支民主的團隊,團隊關系是平行的,每個團隊成員能夠平等的參與討論,決策。傳統開發的垂直的官僚機構在敏捷開發中已是過時的。
敏捷測試
不是說敏捷測試么?這怎么看上去測試跟敏捷沒一毛錢的關系。人家都敏捷了,還要測試做什?
在敏捷開發流程中,測試不再是瀑布試開發流程的一個環節,而是全程參與整個開發流程。通過各種方式來保證產品的質量,無論是原則中的“頻繁交 付”,還是對“可工作的軟件”的度量,或是敏捷開發實踐中的“測試驅動開發”,“行為驅動開發”,都離不開測試的支持。 當然,敏捷測試對測試人員提出了更高的要求,對測試人員來說也是新的挑戰。
敏捷測試人員的定義
專業的測試人員,適應變化,與技術人員和業務人員展開良好的協作,并理解利用測試記錄需求和驅動開發的思想。
敏捷測試人員往往具有優秀的技術能力,知道如何與他人合作以實現自動化測試,同時也擅長探索性測試,他們希望了解客戶在做什么,以此更好地理解客戶的軟件需求。
敏捷測試思想
對于一個敏捷團隊而言,需要持續關注如何最出色地工作并發布最優秀的產品。根據我們的經驗,這需要大量的訓練、學習、時間、試驗和協同工作。
對于一個敏捷測試人員,他(她)會樂于收集和分享信息,與客戶或者產品負責人協作以幫助他們充分展示自已的需求,從而得到他們需要的功能,同時向所有人提供項目進展的反饋。
基本要求就是敏捷測試人員和其它敏捷團隊成員一樣,樂于學習新技能和面對新挑戰,不會僅僅局限于測試問題。這不只是測試人員的特征,所有敏捷團 隊人員都應具有。敏捷測試人員幫助開發人員和客戶團他解決可能出現的任何問題。測試人員提供信息以幫助團隊回顧和了解哪些方案有效,哪些無效。
測試人員可能在測試領域擁有特殊的技能和經驗,但一名優秀的測試人員并不懼怕參與一場設計討論,提供有且于測試性或者構建更良好方案的建議。敏捷測試思想是面向結果的、技術性的、協作的,樂于學習的、勇于不斷生產業務價值的。
原文轉自:http://www.blogjava.net/qileilove/archive/2013/02/18/395364.html