測試過程在瀑布式開發中作為開發流程中的一個環節,只能在實現軟體基礎後開始執行,這種模式很大程度上導致了人力資源的浪費。而在敏捷開發模式中,為了解決人力資源浪費的問題,團隊的開發過程需要踐行敏捷,同樣,測試階段也要踐行敏捷。
測試過程有沒有必要性?
測試人員如同食品生產的質檢員,能夠依據交付成果檢驗產品的完成標準,並對產品判定“合格”與否。也就是說,測試人員需要測試產品的各功能點,對出現BUG的部分進行彙總分析,最終提交到開發人員手上。
假若產品的交付並未經過測試這一步驟,那麼我們就無法保證交付成果是符合使用者需求的。換句話說,面對一輛並未經過質檢的剛出廠的車,你敢開嗎?
如何讓測試過程變得敏捷起來?
1.提高開發過程中的質量
在敏捷開發過程中,測試不再只是在某一特定階段內進行,而是貫穿於整個開發流程中去。也就是提高產品開發的內建質量——團隊中各職能成員都要對最終交付的產品質量負責,測試人員當然也不例外。
- 適當減少在一個迭代中的工作量
在一個迭代過程中,如果產品需要做的功能點太多,就導致團隊成員的任務量過滿:開發人員會由於趕進度而忽視了程式碼的規範性要求;測試人員會因為測試出的BUG太多而不斷進行“開發—測試”的返工,從而增加人力成本。
因此,適當減少一個迭代週期中的工作量,才能讓開發、測試人員將更多的精力投入到提高程式碼質量、提高測試效率中去。
- 達到測試的完成標準
產品完成的定義(Definition of Done)主要從兩方面來說:
首先,測試用例針對每個已經完成的使用者故事。這意味著測試人員需要熟悉每一個使用者故事,並能夠針對使用者故事構建相對應的測試用例。測試用例可以分為正面測試用例和反面測試用例,以便更好地佐證其標準的準確性。
其次,執行並通過全部測試用例。測試人員在構建完整的測試用例後,還需要不斷地更新、修改。客戶需求的變動也應該在第一時間在告知測試人員,以便測試人員及時更改測試用例。執行並通過全部的測試用例後,產品負責人將產品交付客戶。
- 測試人員的多職能
敏捷團隊要求測試人員必須是多職能的。傳統專案中,工作人員職能單一,因此無法實現技能互通,這大大降低了各環節的生產效率。敏捷團隊中最重要的一個特徵就是“跨職能”:團隊成員擁有多種技能,當某一環節需要更多的人手時,其他成員可以暫代這一位置。當然,跨職能是指成員要掌握多種技能,但並非團隊成員都需要精通各種技能。
因此,敏捷團隊中測試人員也需要是多職能的。這就意味著,測試人員不僅需要精通測試,還要掌握其他環節所需的技能。
- 程式碼集體所有權
程式碼集體所有權意味著程式碼歸整個開發團隊所有,並非單獨所有。當測試環節發現問題的時候,其他測試或開發人員可以看到並修改程式碼的任意部分。程式碼集體所有權能夠有效地提高團隊開發效率,降低BUG風險。
- 結對程式設計
結對程式設計通常是由兩個開發人員一起,而測試人員與開發人員一起進行結對程式設計主要體現在構建自動化測試程式中。在這種情況下,測試人員主要負責測試架構的合理性以及簡單的程式碼編寫,而開發人員則需要保證程式碼的高質量。開發人員與測試人員進行結對程式設計不僅會提高開發人員的測試意識,還會提高測試人員的程式碼編寫能力,更有助於敏捷團隊的形成。
2. 提高測試的效率
手動測試是一件十分枯燥、乏味的工作,當然,也是一件效率低下的工作。那麼,如何提高測試的效率呢?
- 優先順序排序
測試任務同開發任務一樣,都需要進行優先順序的排序。先進行優先順序高的測試任務,能夠在無法保證測試周期的前提下,影響不到整體開發進度。
- 自動化測試
提高測試效率,首先會想到的就是進行自動化測試。自動化測試較大的優勢是能夠讓程式進行一些大量的機械操作,以便減少測試人員消耗在手工測試上的時間,提高測試效率。提高測試的效率,能夠加快測試周期,在較短的週期內執行更多的測試。
關於測試過程需不需要踐行敏捷這一問題,答案當然是:需要。首先,讓測試過程變得敏捷起來,能夠解決團隊中只有開發人員踐行敏捷的弱點。其次,通過測試過程敏捷化,也能夠更好地提升整個敏捷團隊的工作效率。