測試管理:問題驅動的測試過程改進
過程改進
在開始正文之前我們首先來做一次思維推導。我們來嘗試回答下面的問題:
反復稱重能否幫你減肥?
這個答案顯然是:否
測試工作本身並不能直接產出質量,就如使用體重計稱重並不能讓人減肥一樣。測試可以被看做信息收集和評估過程,但反復評估一件事物,並不能直接改善這件事物。
軟件測試可以通過數據的收集,缺陷的匯報,用於促進產品質量的改進,質量風險的規避,然而質量最終的改進還要來自於研發過程本身。
實際上我們認為過程質量決定產品質量。那麽改進項目的過程質量,才是推動產品質量提升的根本辦法。
在軟件行業內,過程改進是許多企業,特別是大型企業非常關註的,我們耳熟能詳的CMMi軟件成熟度模型,就旨在幫助企業提升自身的組織和過程成熟度。
測試過程改進
CMMI成熟度模型是關註質量的,實際上我們談過程改進,希望達到的目標應該是成本,效率和質量的三方收益。
除了CMMi這種著眼於研發過程全局改進的模型,專註於測試過程的改進模型也有許多的應用場景。
常用的測試改進模型包括:
- TMMi
- TPI-Next
- CTP
- STEP
之所以在過程改進中,我們傾向於使用模型,實際上是秉承著“借鑒”的思想。直接使用業界先驅們成功經驗的總結,與自己的項目進行比對和匹配。
以上這些模型中,有一些模型可能是比較重量型的,類似CMMi,會和企業成熟度認證結合起來,需要外部助推力來幫助達成。
不過也有一些是以小團隊甚至個人為出發點也是可以應用的,下面我們就介紹其中的一種:TPI-Next。
TPI-Next測試改進模型
TPI模型將測試改進方向劃分為三個區域:
- 人員
- 管理
- 技術
在此基礎之上,繼續將他們劃分為16個域,並用“受控級”、“高效級”和“優化級”定義其成熟度。
通過將自身項目特性與TPI-Next16個域的三級成熟度標準進行對比,我們可以很容易得到自身項目測試的改進方向。
問題驅動過程改進
除了使用模型來幫助我們進行過程改進,其實針對特定問題而改進特定過程是更常用的做法。使用這種方式的改進過程,可能會缺乏系統性和結構性,但是卻是最貼近現實,能夠最有效帶來直觀收益的。
當然這種問題驅動式的改進,也同樣可以參照過程模型和改進模型,以便於找到改進方向。我們來看幾個例子:
1. 產品整體質量問題
在測試活動中,我們常常會遇上一些窘局,比如某系統的測試,爆出大量(遠超預期)缺陷。
我們先來論斷一下,測試報出大量缺陷究竟是不是一個問題?有的人可能會說,這不是問題,測試報出缺陷,這不是天經地義的嗎。
實際上我們簡單來說,我們對項目缺陷的預期數量實際是存在邊界的(CMMi3級標準,測試密度不應超過2.39%),測試的理想狀態應該是在邊界之內揭示問題。
缺陷數量超出邊際值會帶來顯而易見的風險:
- 各方工作量增多
- 項目周期被拉長
- 缺陷揭示越多,隱藏缺陷也越多(冰山效應)
那麽通過過程改進,我們如何解決這一問題呢?
我們可以從TPI模型中找出幾個關鍵域,用於改進這個問題:
- 保證測試更早的介入,更早期的發現問題,而不是使問題堆積到執行階段。很多情況下,超量缺陷的現象所隱射的問題是研發方向的偏差,這些偏差很有可能來自與編碼的前序階段,比如需求和設計。測試更早的介入這些階段可以緩解類似風險。
- 這個問題也應從測試組織方面思考。比如項目的測試過程是否具備足夠的層次性?如果項目只具備系統測試層級,那麽延申測試的層級,如單元測試、系統測試是應該被考慮引入以緩解項目缺陷壓力。
- 另一方面,在組織測試的過程中,我們是否考慮到了前序階段的支持,有無相應的方法和過程進行保證?測試準入標準和冒煙測試是否被用於衡量產品的可測性?
2. 測試時間壓力
測試團隊經常會面臨時間壓力,測試時間的爭奪是測試團隊夾在產品質量和市場壓力之間的反復博弈過程。
如何改進這一現象呢?我們同樣嘗試找出幾個改進的關鍵域:
- 測試時間的保證很大程度要取決於幹系人對於測試的認知和重視,所以我們提取的第一個關鍵域就與之相關。測試團隊需要與幹系人(比如項目經理)達成測試目標和範圍的一致,並且基於這個範圍投入相應的成本。成熟的測試團隊有必要通過溝通、培訓、宣講、協商等方式取得這一成果。
- 通過更合理的測試組織,提升測試工作效率也是解決時間壓力的重要思路。
- 另一個關鍵域是估計與計劃。任務估計與計劃不單單是後續工作實行的指導,也是對預期任務時間取得各方一致的有效手段。
以上是兩個問題驅動的過程改進的例子,我們可以舉一反三,通過對於相應問題的分析,對應標準的解決辦法來逐步實現測試過程的改進。
過程改進流程
最後,過程改進其實是一個非常大的課題,從事過程改進的人員通常具備非常高的團隊地位(想要改變什麽事情通常都沒有那麽容易)。
過程改進也必須遵循IDEAL模型:
- Initiating 啟動
- Diagnosing 診斷
- Establishing 制定計劃
- Acting 實施
- Learning 學習(經驗總結)
最重要的是,取得利益幹系人的支持,是過程改進得以推動的必備條件。
測試管理:問題驅動的測試過程改進