????????敏捷開發的最大特點是高度迭代,有周期性,并且能夠及時、持續地響應客戶的頻繁反饋。敏捷測試即是不斷修正質量指標,正確建立測試策略,確認客戶的有效需求能得以圓滿實現和確保整個生產的過程安全的、及時的發布最終產品。
一、敏捷測試定義
????????首先敏捷測試(Agile testing)是測試的一種,原有測試定義中通過執行被測系統發現問題,通過測試這種活動能夠提供對被測系統提供度量等概念還是適用的。
????????敏捷測試是遵循敏捷宣言的一種測試實踐:
????????1、強調從客戶的角度,即從使用系統的用戶角度,來測試系統。
????????2、重點關注持續迭代地測試新開發的功能,而不再強調傳統測試過程中嚴格的測試階段。
????????3、建議盡早開始測試,一旦系統某個層面可測,比如提供了模塊功能,就要開始模塊層面的單元測試,同時隨著測試深入,持續進行回歸測試保證之前測試過內容的正確性。
二、敏捷測試實質
????????測試不僅僅是測試軟件本身,還包含了軟件測試的過程和模式。產品多數在發布后才發現很多問題,多數可能是軟件開發過程出的問題,因此測試除了針對于軟件的質量,即軟件做了正確的事情,以及軟件做了應該做的事情以外,敏捷的測試團隊還要保證整個軟件開發過程是正確的是符合用戶需求的。
????????敏捷開發的最大特點是高度迭代,有周期性,并且能夠及時、持續地響應客戶的頻繁反饋。敏捷測試即是不斷修正質量指標,正確建立測試策略,確認客戶的有效需求得以圓滿實現和確保整個生產的過程安全的、及時的發布最終產品。敏捷測試人員因而需要在活動中關注產品需求,產品設計,解讀源代碼;在獨立完成各項測試計劃、測試執行工作的同時,敏捷測試人員需要參與幾乎所有的團隊討論,團隊決策。作為一名優秀的敏捷測試人員,需要在有限的時間內完成更多的測試的準備和執行,并富有極強的責任心和領導力。更重要的是,優秀的測試人員需要能夠擴展開來做更多的與測試或許無關,但與團隊共同目標直接相關的工作。幫助團隊其他成員解決困難、幫助實現其預期目標,發揚高度協作精神以幫助團隊的最終獲取成功。需要指出的是,團隊的高度協作既需要團隊成員的勇敢,更需要團隊成員的主動配合和幫助。對于測試人員如此,對于開發、設計人員,其他成員也是如此。
三、對比區別
敏捷測試與普通測試的區別:
1、項目相當于開發與測試并行,項目整體時間較快。
2、模塊提交較快,測試時較有壓迫感。
3、工作任務劃分清晰,工作效率較高。
4、項目規劃要合理,不然測試時會出現復測的現象,加大工作量。
5、發現問題需跟緊,項目中人員都比較忙,問題很容易被遺忘。
6、耗時、或較難解決對項目影響不大的問題一般會遺留到下個階段解決。
7、發現BUG能夠很快的解決,對相關的模塊的測試影響比較小。
8、版本更換比較勤,影響到測試的速度。
9、要多與開發溝通。
10、要注意版本的更新情況。
11、測試人員幾乎要參加整個項目組的所有會議。
四、敏捷項目測試人員應該具備的意識
1、心態
????????以積極的心態擁抱變化:敏捷,即快速變化。敏捷項目原本充滿變化和不確定性,因而需求變化比較快,產品開發周期短,給軟件測試帶來很大的挑戰。但每一次的需求調整都是為了使產品開發朝著更正確的方向開展,測試人員應給予理解,減少無用的抱怨,積極主動去接受變化、理解變化,采取探索性測試盡早發現可能存在的問題,給予及時反饋。
2、文檔
????????接受精簡的文檔:如果要求需求頻繁變化的敏捷項目像傳統項目一樣有詳盡的文檔,那么,每次變化將需要花費大量的時間來更新需求。特別是變化后不進行同步更新,將比精簡的文檔還糟糕。在敏捷項目中,直接溝通交流的效率遠大于文檔,而且直接溝通更能在理解上達成一致。測試人員可以通過主動溝通了解需求,自己整理出一份詳細的需求,并不一定要像需求規格一樣標準,易于理解即可。通過整理,可以更深入理解需求、發現問題、暴露問題。當然,也不能走極端,認為敏捷可以不要文檔,核心業務邏輯應有文檔或會議紀要體現。
????????測試簡單化:測試應關注于產生價值,不斷嘗試最簡單的方法滿足測試需要。比如,迭代初期,測試用例可以簡單到只是包括所有測試點的清單,不僅可以節省評審時間,也可以避免需求的頻繁變動加大測試用例維護的工作量。當然,每個迭代仍然需要明確且易于修改的測試計劃、測試目標、測試范圍、測試類型,選擇合適的測試策略。在版本穩定后,再進行標準的用例庫建設。
3、主動意識
????????盡可能多的參與需求討論:測試人員可以利用自己在用戶體驗、業務邏輯方面的經驗,和項目組成員充分交流和討論,提出有建設性的建議。也可以通過需求討論,更加深入理解需求。
???????? 作為勇敢的發言者:敏捷團隊是民主的,團隊成員能夠平等參與討論。思想的碰撞,更易突發靈感產生創造性的思維,有想法和建設性的建議應該勇敢提出來。測試人員和開發人員所站角度不同,測試人員的視角更接近客戶,不要害怕所提的問題過于簡單。要敢于提出問題、發表自己的意見、提出建議,盡早揭示風險、暴露問題,以免在后期造成更大的影響。
????????主動溝通和協作意識:進入敏捷的協作環境,測試人員不應該局限在自己的職責領域,應關注于項目組共同的目標,盡可能產生更大的價值。優秀的測試人員應該知道如何與他人更好的溝通、合作,且隨時準備協作。良好的團隊溝通和協作意識也是項目成功的關鍵因素之一。
????????樂于分享與反饋信息:一個測試人員所負責的功能一般不僅限于一個模塊,因而比一個開發人員能掌握更多的需求信息。測試人員可以向項目組成員積極分享需求、反饋各功能模塊的測試進展,讓所有人更了解整體需求和項目動態。及時提供全面的質量反饋,每個周期對缺陷分類匯總,分析相似缺陷的發生頻率和易發缺陷的功能模塊,用清晰的圖形化展示,提醒開發人員避免再次產生同樣的缺陷。
????????主動參與代碼復審:測試人員不寫代碼,但可以主動參與代碼復審,有助于提升代碼閱讀能力,也可能以測試人員的視角發現隱蔽的缺陷。
????????不斷改進工作和學習新技能:創新無論在哪里都非常重要。敏捷開發鼓勵團隊采納新技術,使產品和團隊自身都有很強的適應力和生命力。測試人員應該不斷的學習和自我提升才能更好的適應和應對變化,努力培養自己的工作技術,關注、讀好的文章以獲得新想法和技能,試驗新的工具和技術,改進測試工作。
4、測試方法
(1)測試驅動開發:
????????敏捷項目測試人員參與了整個軟件生命周期,測試人員
應該在不同階段確認和驗證、預防缺陷,而不是等到軟件開發完成后才去發現缺陷。單元測試驅動開發(UTDD)和驗收測試驅動開發(ATDD),前者大多由開發負責,后者由測試操作。測試人員可以關注和推動單元測試,并利用專業測試、需求理解能力,以測試需求驅動、指導開發。當編碼由測試指導,開發的產品可能更符合客戶的期望,也有助于確保版本發布后重要功能正確、迭代功能無缺失。
(2)測試自動化:
????????眾所周知,由于敏捷項目快速迭代的特點,用自動化做回歸測試是敏捷項目成功的要素之一。敏捷測試中回歸測試是必須的,沒時間實現測試自動化是一個不斷積累債務的過程。測試自動化開始時會比較艱難,應盡早克服困難,選定或準備合適的工具。一旦某些核心功能穩定,每個迭代開始小規模的自動化工作,逐步把穩定的功能用自動化測試實現,減少回歸時間和成本,將原本可發揮更大價值的人力從重復的手工測試中解放出來,將更多的時間用于重要的探索性測試。經驗統計顯示,80%的缺陷是在探索測試過程中發現的。
5、敏捷觀
????????樹立正確的敏捷測試觀念:敏捷項目是以結果為導向的,因此敏捷測試同樣是結果導向。要有全局觀,不只是關注于發現缺陷,也不以發現缺陷多少為目標,應關注于是否實現當前的功能。測試人員和開發人員都有相同的質量目標,應盡量協助開發人員不斷提高軟件的質量。不要“等待”,盡可能的早工作,做能夠做的工作。