1. 程式人生 > >敏捷測試與傳統測試的區別與最佳實踐

敏捷測試與傳統測試的區別與最佳實踐

 敏捷測試並不是一種新的測試型別,也不是一個新的測試階段,更不是一種全新的測試方法論。通俗地講,在敏捷開發過程中進行的測試就叫敏捷測試。

  它是一套測試解決方案、一組實踐或者由一定順序的測試活動構成的特定的測試流程。是為了順應敏捷開發方法、力求達到質量和效率平衡的一系列的測試實踐。

  Wikipedia是這樣描述敏捷測試的:敏捷測試是遵守敏捷開發原則之下的軟體測試實踐,需要跨功能敏捷團隊全員參與,並且由測試人員貢獻其專業特長,以保證持續、快速地業務價值交付。

  敏捷測試與傳統測試的區別

  敏捷測試與傳統測試的區別,並不是敏捷測試測得更快,也不是用的時間更少,更不是將測試的範圍縮小,或者將質量降低來減少測試任務,而是在計劃、階段劃分、文件、記錄、溝通等方面的側重不同。

  1、傳統測試強調測試的計劃性,認為沒有良好的測試計劃和不按計劃執行,測試就難以控制和管理。而敏捷測試更強調測試的速度和適應性,側重計劃的不斷調整以適應需求的變化。

  2、傳統測試更具有階段性,從需求評審、設計評審、單元測試到整合測試、系統測試等,從測試計劃、測試設計再到測試執行、測試報告等,但敏捷測試更強調持續測試、持續的質量反饋,模糊了階段性,而且介入更早。

  3、傳統測試強調任何發現的缺陷要記錄下來,以便進行缺陷根本原因分析,達到缺陷預防的目的,並強調缺陷跟蹤和處理的流程,區分測試人員和開發人員的各自不同的責任。而敏捷測試強調面對面的溝通、協作,強調團隊的責任,不太關注對缺陷的記錄與跟蹤。

  4、傳統測試更關注bug,圍繞bug開展一系列的活動,如bug跟蹤、度量、分析、報告、質量檢查等,而敏捷測試更關注產品本身,關注可以交付的客戶價值。在快速交付的敏捷開發模式下,bug修復的成本很低。

  5、傳統測試鼓勵自動化測試,但自動化測試的成功與否對測試沒有致命的影響。但敏捷測試的基礎就是自動化測試,敏捷測試需要有良好的自動化測試手段支撐的快速測試。

  6、傳統測試更強調測試的獨立性,將“開發人員”和“測試人員”角色分得比較清楚。而敏捷測試中,測試人員需要參與全部開發活動,需要參與整個專案組的所有會議,能夠發揮更大的作用。

  敏捷測試中的關鍵過程

  在一個sprint中,測試人員的工作內容主要分為五個部分:user story分析、測試用例設計開發、測試執行和分析、測試持續整合、迴歸測試。這五個部分的工作均要持續到sprint結束,只是啟動時刻有早有晚,具體如下圖所示

  user story分析工作:敏捷測試是不斷確認客戶的需求得以圓滿實現,因此對使用者需求的分析、理解需要一直持續下去,發現有偏差及時糾正,及時設定合理的驗收點、測試項。

  Testcase Develop工作:設計測試用例,完成測試程式碼的開發、測試資料的準備,並及時與開發人員溝通軟體介面,確保測試程式碼能夠成功驅動業務程式碼。

  Testing & Analysing工作:執行測試,統計測試覆蓋率,分析測試結果,若發現bug,及時溝通,並協助定位bug。

  Continuous Integration工作:將測試程式碼進行整合,以保證當前功能若被後續整合程式碼汙染是能夠及時得到報警,不斷地完善軟體產品的功能基線。

  RegressionTesting工作:在完成全部user story後,對所有程式碼進行完整的迴歸測試,對所有bug修復情況進行確認。

  敏捷測試對測試人員的要求

  優秀的敏捷開發過程越來越重視測試人員,測試人員在其中所起到的作用越來越大,相應的對測試人員的要求就越來越高。一個合格的敏捷測試角色,應當具備以下素質:

  1、良好的溝通能力

  測試人員全程參與所有開發活動,需要與產品、開發、專案經理設定使用者進行頻繁的溝通,必須具備良好的溝通能力。

  2、換位思考能力

  一方面需要站在產品、使用者的角度,考慮產品的功能、效能、易用性等,一方面需要站在開發的角度,思考軟體技術方案的可行性,實現的難度、合理性、可測性等,充分考慮到各種情況。

  3、掌握多種的測試手段

  面對不斷變化的需求,足夠的測試手段儲備,是從容應對變化的本錢。

  4、一定的開發技能

  在敏捷開發團隊成長到一定程度後,測試與開發角色的界限會變得模糊。在初始階段,測試人員也應當具備完成單元測試程式碼編寫的能力。

  5、擁抱變化

  “唯一不變的就是變化”,所以,需求的變動是必然的,每次的需求的調整都是將產品開發推向更正確的方向。在接受變化的同時,測試人員應該積極的反饋可能的設計缺陷和錯誤。

  自動化測試與手工測試

  輕量級增量開發、快速迭代的特點,使得測試人員需要重點關注兩個方面的軟體質量,一是新功能的需求符合性,二是原有功能的穩定性、可靠性。通常,對新功能進行靈活性高的手工測試,而對原有功能進行自動化迴歸測試是目前看來最合理的一種手工測試與自動化測試的分工。

  敏捷功能測試= 新特性的手工測試(針對user story驗證) + 原有功能的自動化測試(迴歸測試)。

  總結

  測試人員是敏捷團隊非常重要的一環,測試人員的成長對敏捷團隊非常重要。從傳統測試工作轉入敏捷測試工作必然會遇到很多不適,但是隻要堅持對敏捷的學習和各種新工具的開發使用,一切都能夠適應下來。

  誰都知道,變化,才是永遠不變的,敏捷則是我們應對變化的武器。