敏捷 反應(yīng)快速靈敏。 在敏捷軟件開發(fā)領(lǐng)域,更注重的以人為核心,迭代,循序漸進(jìn)的開發(fā)方法。相比傳統(tǒng)的開發(fā)方法,這種方法能更快速的開發(fā),上線,反饋,調(diào)整、迭代。以敏捷的姿態(tài)去發(fā)展產(chǎn)品。
敏捷與傳統(tǒng)開發(fā)的區(qū)別 有個非常有意思的游戲能夠幫助大家理解敏捷和傳統(tǒng)開發(fā)的差異。游戲有兩個角色,一個是“老板”,另一個是“員工”,在 2 分鐘內(nèi),“員工”需要在“老板”的完全指揮下,即“向前一步,向后一步,停,向左一步,向右一步”,完成 60步移動的任務(wù)。“員工”需要執(zhí)行“老板”的每一個指令,不允許做出相違背的動作。“老板”則不參與行動,只發(fā)出指令指揮“員工”的活動。我們體驗(yàn)這個游戲 時,當(dāng)場 60% 的參與者成功完成了任務(wù),大致估計(jì)出我們的工作效率是50%*60%=30%。游戲后,參與者被問及對這種行為方式的感受時,無論是“員工”還是“老板”都表示非常不滿。 接著,大家又做了另一組游戲。2 分鐘內(nèi)參與者被要求獨(dú)立的、自主的完成 60 步移動任務(wù),在這次游戲里,所有參與者任務(wù)相同,大家可以自行決定、并依據(jù)自己的判斷隨時調(diào)整其步伐方向,快慢。最后,我們發(fā)現(xiàn)所有參與者不但毫無折扣的 按時完成了任務(wù),因而工作效率也達(dá)到 100%*100%=100%,而且所有人對于這種新的工作方式更是產(chǎn)生了極大的興趣。 敏捷開發(fā)與傳統(tǒng)開發(fā)的比較
通過上面有趣的兩種游游戲的對比,以及價(jià)值表述的對比就折射出了傳統(tǒng)開發(fā)與敏捷開發(fā)的方式的對比,其中的優(yōu)劣不言而喻。
敏捷開發(fā)
敏捷宣言:
敏捷方法分類:
除了圖例中的方法外還有 Crystal, Lean Software Development, Feature Driven Development, Xbreed, RUP 等等。
敏捷方法的共性: 雖然各種敏捷方法的名稱、所需環(huán)境、適合的團(tuán)隊(duì)有很大差異,但是他們擁有相似、相同的以下幾大特點(diǎn): * 擁抱變化 “唯一不變的就是變化”所以,需求的變動是必不可少的,每次的決定和需求的調(diào)整都是將產(chǎn)品開發(fā)推向更正確的方向。而在接受變化的同時,我們應(yīng)該積極的反饋顯示活動中暴露出來的可能的設(shè)計(jì)缺陷和錯誤。 * 客戶的參與 最終使用者、內(nèi)部使用者、客戶代表、商業(yè)伙伴都可以是我們的客戶。對于客戶的參與更能使我們做出客戶真正需要的產(chǎn)品。 * 較少的文檔 傳統(tǒng)開發(fā)的文檔在敏捷中仍有大用,只是我們可以將原來的文檔進(jìn)行精簡。在敏捷中文檔不是最佳的溝通方式,更鼓勵通暢的交通和溝通,而溝通的效率遠(yuǎn)高于文檔。 * 最大化的生產(chǎn)力 敏捷開發(fā)模式要最大化的提高團(tuán)隊(duì)的工作效率。無論是依靠剪除冗余的文檔工作,還是提供民主的、通暢的溝通平臺都是為了幫助 團(tuán)隊(duì)能夠集中有限的精力處理。 * 測試驅(qū)動開發(fā) 是讓開發(fā)人員在編寫功能代碼之前,根據(jù)對需求的理解先設(shè)計(jì)和編寫單元測試代碼。先思考如何對將要實(shí)現(xiàn)的功能進(jìn)行驗(yàn)證,再考慮功能的實(shí)現(xiàn)。然后迭代的增加新功能的單元測試和功能代碼編寫,直到完成全部功能的開發(fā)。 * 自動化冗余工作 將團(tuán)隊(duì)成員從冗余的勞動中解放出來,無論是自動化的測試還是自動化工具的開發(fā)只要能夠節(jié)約成本都是敏捷開發(fā)、敏捷測試的目標(biāo)。 * 民主的團(tuán)隊(duì) 敏捷團(tuán)隊(duì)是一支民主的團(tuán)隊(duì),團(tuán)隊(duì)關(guān)系是平行的,每個團(tuán)隊(duì)成員能夠平等的參與討論,決策。傳統(tǒng)開發(fā)的垂直的官僚機(jī)構(gòu)在敏捷開發(fā)中已是過時的。
敏捷測試 不是說敏捷測試么?這怎么看上去測試跟敏捷沒一毛錢的關(guān)系。人家都敏捷了,還要測試做什? 在敏捷開發(fā)流程中,測試不再是瀑布試開發(fā)流程的一個環(huán)節(jié),而是全程參與整個開發(fā)流程。通過各種方式來保證產(chǎn)品的質(zhì)量,無論是原則中的“頻繁交付”,還是對“可工作的軟件”的度量,或是敏捷開發(fā)實(shí)踐中的“測試驅(qū)動開發(fā)”,“行為驅(qū)動開發(fā)”,都離不開測試的支持。 當(dāng)然,敏捷測試對測試人員提出了更高的要求,對測試人員來說也是新的挑戰(zhàn)。
敏捷測試人員的定義 專業(yè)的測試人員,適應(yīng)變化,與技術(shù)人員和業(yè)務(wù)人員展開良好的協(xié)作,并理解利用測試記錄需求和驅(qū)動開發(fā)的思想。 敏捷測試人員往往具有優(yōu)秀的技術(shù)能力,知道如何與他人合作以實(shí)現(xiàn)自動化測試,同時也擅長探索性測試,他們希望了解客戶在做什么,以此更好地理解客戶的軟件需求。
敏捷測試思想 對于一個敏捷團(tuán)隊(duì)而言,需要持續(xù)關(guān)注如何最出色地工作并發(fā)布最優(yōu)秀的產(chǎn)品。根據(jù)我們的經(jīng)驗(yàn),這需要大量的訓(xùn)練、學(xué)習(xí)、時間、試驗(yàn)和協(xié)同工作。 對于一個敏捷測試人員,他(她)會樂于收集和分享信息,與客戶或者產(chǎn)品負(fù)責(zé)人協(xié)作以幫助他們充分展示自已的需求,從而得到他們需要的功能,同時向所有人提供項(xiàng)目進(jìn)展的反饋。 基本要求就是敏捷測試人員和其它敏捷團(tuán)隊(duì)成員一樣,樂于學(xué)習(xí)新技能和面對新挑戰(zhàn),不會僅僅局限于測試問題。這不只是測試人員的特征,所有敏捷團(tuán)隊(duì)人員都應(yīng)具有。敏捷測試人員幫助開發(fā)人員和客戶團(tuán)他解決可能出現(xiàn)的任何問題。測試人員提供信息以幫助團(tuán)隊(duì)回顧和了解哪些方案有效,哪些無效。 測試人員可能在測試領(lǐng)域擁有特殊的技能和經(jīng)驗(yàn),但一名優(yōu)秀的測試人員并不懼怕參與一場設(shè)計(jì)討論,提供有且于測試性或者構(gòu)建更良好方案的建議。敏捷測試思想是面向結(jié)果的、技術(shù)性的、協(xié)作的,樂于學(xué)習(xí)的、勇于不斷生產(chǎn)業(yè)務(wù)價(jià)值的。
測試人員的十條法則 敏捷測試人員的十條法則:
提供持續(xù)反饋 既然是測試驅(qū)動敏捷項(xiàng)目,那么很顯然反饋在敏捷團(tuán)隊(duì)中占據(jù)重要的地位 。既然是測試驅(qū)動敏捷項(xiàng)目,那么很顯然反饋在敏捷團(tuán)隊(duì)中占據(jù)重要的地位 。 為客戶創(chuàng)造價(jià)值 敏捷開發(fā)就是在較低的版本發(fā)布中提供客戶目前最迫切需要的功能。這通常意味著限定范圍。我們經(jīng)常在客戶團(tuán)隊(duì)中遇到較酷功能的需求。任何人都可以質(zhì)疑這些內(nèi)容,但是測試人員會判斷其對故事的影響,因?yàn)樗麄冃枰紤]測試后果。 進(jìn)行面對面的溝通 一個團(tuán)隊(duì)如果溝通不好則難以協(xié)作。如今,許多團(tuán)隊(duì)分布于多個地理位置,溝通變得更加重要和富有挑戰(zhàn)性。敏捷測試人員應(yīng)該盡力促進(jìn)溝通。這是把工作做好的關(guān)鍵因素。 勇氣 勇氣是極限編程的核心價(jià)值,類似測試自動化和持續(xù)集成的方式允許團(tuán)隊(duì)實(shí)踐這種價(jià)值。 測試人員固守于自己的領(lǐng)域,不與其他業(yè)務(wù)相關(guān)者和技術(shù)團(tuán)隊(duì)進(jìn)行任何討論。雖然你找機(jī)會進(jìn)入了協(xié)作的敏捷環(huán)境,可能會對找客戶索要實(shí)例或者找開發(fā)人員幫忙自動化測試或者在每日例會時提出一個難題等感到不習(xí)慣。 當(dāng)最初加入敏捷團(tuán)隊(duì)或者當(dāng)前的團(tuán)隊(duì)開始過渡到敏捷開發(fā)模式時,通常你會產(chǎn)生恐懼感,并且存在大量的問題需要答案。我們到底如何才能在如此短的時間內(nèi)完成對每一個用戶故事的測試任務(wù)?測試如何跟上開發(fā)的節(jié)奏?如何確定需要多少測試?又或者你是功能測試經(jīng)理或者質(zhì)量過程經(jīng)理,但不清楚在敏捷團(tuán)隊(duì)中如何定位自己的角色,也沒人知道答案。敏捷測試人員需要勇氣找到這些問題的答案,但需要勇氣的原因不僅限于此。 簡單化 敏捷測試人員和他們的團(tuán)隊(duì)面臨的挑戰(zhàn)不僅是生產(chǎn)最簡單的有效軟件而且還需要采取簡單的方法以確保軟件符合客戶需求。這并不意味著團(tuán)隊(duì)不應(yīng)該花時間分析主題和故事、思考合適的架構(gòu)和設(shè)計(jì)。而是說,當(dāng)業(yè)務(wù)部門的需求比較復(fù)雜的時候,團(tuán)隊(duì)可能需要將方案退回給他們,更簡單的解決方案也會產(chǎn)生同樣的價(jià)值。 簡單并不意味著容易。對于測試人員來說,這意味著采用能夠找到的最輕量級的工具和技術(shù)恰到好處地測試。工具可以簡單到只是一張電子表格或者清單。需要自動化回歸測試,但是應(yīng)該把它們分解到最底層以獲取快速反饋。甚至簡單的冒煙測試也可能滿足面向業(yè)務(wù)的測試自動化。 持續(xù)改進(jìn) 想辦法把工作做得更出色是敏捷測試人員應(yīng)牢記的。 敏捷測試人員和他們的團(tuán)隊(duì)總是在尋找工具、技能或者實(shí)踐以幫助他們增加更多價(jià)值或者得到更好的客戶投資回報(bào)。敏捷開發(fā)的短期迭代更易于嘗試新事物,以驗(yàn)證是否值得長期采用。 學(xué)習(xí)新技能和提高專業(yè)技能水平對敏捷測試人員非常重要。可利用各種免費(fèi)的資源提高專業(yè)技能。 響應(yīng)變化 響應(yīng)變化是敏捷實(shí)踐的重要價(jià)值,但是我們發(fā)現(xiàn)這對測試人員來說卻是最困難的概念之一。測試人員渴望的是穩(wěn)定,所以他們會說:“我已經(jīng)測試過了,任務(wù)完成了”。持續(xù)的需求變化是測試人員的噩夢。但是,作為一名敏捷測試人員,我們不得不擁抱變化。周三,我們可能期望啟動故事A和B,下周五做故事C。但是到了周五,客戶重新設(shè)定了優(yōu)先級,現(xiàn)在需要故事A、X和Y。只要我們持續(xù)與客戶交流,我們就能處理這些變化,因?yàn)槲覀兣c團(tuán)隊(duì)的其他成員保持同步。 自我組織 敏捷測試人員是自組織敏捷團(tuán)隊(duì)的組成部分。團(tuán)隊(duì)文化貫徹于敏捷測試?yán)砟睢.?dāng)開發(fā)人員、系統(tǒng)管理員、分析員、數(shù)據(jù)庫專家和客戶團(tuán)隊(duì)持續(xù)關(guān)注測試和測試自動化,測試人員就會獲得全新的視角。自動化測試很困難,但是當(dāng)整個團(tuán)隊(duì)都在為此努力時就會簡單得多。當(dāng)大家具有多重技能和多層次視角時,任何測試問題都會更容易解決。 當(dāng)敏捷團(tuán)隊(duì)面對一個嚴(yán)重問題時,比如進(jìn)度障礙或者構(gòu)建失敗,該問題將是所有人的問題。最高優(yōu)先級的問題需要整個團(tuán)隊(duì)解決。團(tuán)隊(duì)?wèi)?yīng)該立刻討論并決定解決的辦法和相關(guān)參與人員。 關(guān)注人 只有優(yōu)秀的員工出色地工作,項(xiàng)目才會成功。敏捷價(jià)值和準(zhǔn)則的宗旨是確保個人和團(tuán)隊(duì)成功。敏捷團(tuán)隊(duì)成員應(yīng)該有安全感。不必?fù)?dān)心因犯錯受指責(zé)或者失去工作。敏捷團(tuán)隊(duì)成員互相尊重并認(rèn)可個人成就。敏捷團(tuán)隊(duì)的所有人應(yīng)該有機(jī)會提高和發(fā)展他們的技能。敏捷團(tuán)隊(duì)以可持續(xù)的步伐前進(jìn),使他們能夠遵循嚴(yán)格的實(shí)踐和保持嶄新的視角。正如敏捷宣言所說,我們重視個人和合作超過過程和工具。 享受樂趣 在我們看來,測試人員的理想團(tuán)隊(duì)是:所有成員協(xié)作,從項(xiàng)目的開始一直到結(jié)束,利益相關(guān)者與開發(fā)團(tuán)隊(duì)共同工作,整個團(tuán)隊(duì)負(fù)責(zé)質(zhì)量和測試。相信很多人都認(rèn)為每個人都應(yīng)該在工作中找到樂趣。敏捷開發(fā)珍視敏捷測試人員對工作的激情。 敏捷測試人員的工作特別令人滿意,因?yàn)槲覀兊慕嵌群图寄軐F(tuán)隊(duì)產(chǎn)生了真正的價(jià)值。
敏捷測試人員應(yīng)該做什么?
看了這么多,你一定問: 測試人員在敏捷團(tuán)隊(duì)中應(yīng)該具備什么技能? 測試人員在敏捷團(tuán)隊(duì)中從事哪些具體的工作?
在敏捷軟件開發(fā)過程中開展的測試就可以被稱作是敏捷軟件測試。因此,敏捷軟件測試并不是一個與敏捷軟件開發(fā)同一層次的劃分,而是敏捷軟件開發(fā)中的一部分,與傳統(tǒng)的測試不同,敏捷軟件測試并不是一個獨(dú)立的過程,相反,它與整個敏捷開發(fā)中的其他活動交織在一起,處處都能看到它的影子。由于敏捷軟件測試并不傾向于一個單獨(dú)的過程定義,本人認(rèn)為從敏捷軟件測試與傳統(tǒng)測試觀點(diǎn)的比較、敏捷軟件測試中采用的方法、測試工程師在敏捷軟件測試過程中的工作等方面來闡述。
回答的很含糊,個人認(rèn)為敏捷測試人員應(yīng)該具備的兩個主面。 首先,接納并理解敏捷的核心價(jià)值觀(溝通,簡單,反饋,勇氣,尊重、學(xué)習(xí)、分享)。 其次,測試人員應(yīng)該具備測試基本技能,當(dāng)然,可以擅長某個領(lǐng)域,如,探索性測試、單元測試。善于學(xué)習(xí)與分享,以學(xué)習(xí)的方式不斷的提高自身去適應(yīng)團(tuán)隊(duì)的需求。 我想說的是,不管是從傳統(tǒng)開發(fā)模式轉(zhuǎn)到敏捷測試,還是重新組建一個敏捷的測試團(tuán)隊(duì)。并不是一蹴而就的事兒,需要長期的學(xué)習(xí)、摸索與改進(jìn)。當(dāng)然,前提是以敏捷的價(jià)值觀為指導(dǎo)思想。
------------------------------------------------------------- 本文引用資料: 段念《什么是敏捷軟件測試》 《IBM敏捷測試的最佳實(shí)踐》 《敏捷軟件測試:測試人員與敏捷團(tuán)隊(duì)的實(shí)踐指南》
|
|