匯智動力--軟件測試模型
軟件測試根據不同的測試對象、測試背景可采用不同的測試模型實施測試活動,針對測試人員,下面將通過對V模型、W模型、X模型、H模型及敏捷模型的分析,加強測試工程師在實際測試工作過程中,模型的選擇及應用能力。
一、V模型
V模型是所有軟件測試模型中最為大家熟知的一種模型。它是從瀑布研發模型演變而來的測試模型,如圖4-5所示。
V模型的流程是從上到下、從左到右,軟件研發人員進行需求分析、概要設計、詳細設計、編碼一系列研發活動后,生成測試版本。
測試工程師則在研發人員編程過程中,對其生成的函數或類進行單元測試,測試通過后,進行組件集成,實施集成測試,然后模擬終端用戶實際業務流程執行系統測試、驗收測試。該過程呈線性發展趨勢,需求在早期存在缺陷時,可能到最后環節才會發現,并且測試工程師測試活動嚴重滯后于開發活動。
V測試模型適用開發周期較短的項目。在瀑布模型流行的年代,V測試模型發揮了很重要的作用,但隨著業務規模的不斷擴大,研發模型的不斷優化改革,V模型已漸漸被淘汰。
二、W模型
W模型是在V模型的基礎上演變而來的,一般又稱為雙V模型。在V模型中,研發活動沒有完成、無任何輸出物時,測試工程師無法開展測試工作,相對而言,測試活動嚴重滯后。為了解決V模型的缺點,W模型提出了測試活動與研發活動并行的概念,并且在生產流程演進過程中,增加了驗證與確認活動。
從圖4-6可以看出,從用戶需求開始,研發團隊根據用戶需求進行需求分析、概要設計、詳細設計、編碼開發等活動,測試團隊則根據用戶需求進行驗收測試、系統測試、集成測試及單元測試設計。測試工作與研發活動分離,實現了并行操作。測試活動伴隨著整個研發過程,而不僅在研發有成果輸出后才參與。同時,W模型強調了測試活動不僅僅包括研發活動所產生的軟件源代碼,還考慮各種文檔,如需求文檔、概要設計文檔、詳細設計文檔、代碼等。
從W模型可以看出,完成所有的測試活動,對測試工程師的技能要求超過了研發人員。因此,規模較大的公司測試團隊會有不同職能、技能的測試工程師。
W模型要求測試活動從用戶需求階段就介入,有利于盡早地發現問題,在模型實施過程中,時刻進行確認(validation)、驗證(verification)活動。
1. 確認(Validation)
(1)保證所生產的軟件可追溯到每一個用戶需求。
(2)檢測每一階段的工作產品是否與最初定義的軟件需求規格相一致。
2. 驗證(Verification)
(1)保證軟件正確地實現特定功能。
(2)檢測每一階段形成的工作產品是否與前一階段定義的規格相一致。
W模型解決了V模型開發測試活動串行的問題,但仍然存在測試活動受開發活動的影響,并不能做到真正的測試活動與開發活動分離,互不影響。通過W模型,我們可以看到,當開展單元及集成測試活動時,單元、集成測試活動的測試對象仍由研發活動提供,滯后于研發活動。因為僅在開發人員完成單元、組件代碼設計后,才能實施單元、集成測試或接口測試。
三、X模型
X模型產生的背景亦與V模型有關,V模型的缺點是測試活動滯后于研發活動,無法盡早地開展測試活動。而X模型與W模型一樣,提出的初衷都是解決V模型的缺點。X模型如圖4-7所示。
X模型左邊表明針對單獨的程序片段n進行獨立的編碼和測試活動,以此為基本過程,不斷迭代,通過集成活動最終成為可執行程序,然后再對這些可執行程序進行測試。通過集成測試的成品可以進行封裝并提交給系統測試環節或直接給用戶。多條并行的曲線表示變更可以在各個部分發生。
X模型提出了探索性測試的概念。探索性測試與常規的測試方法不同,無須事先制定測試計劃或設計,有經驗的測試工程師可根據自己的思維活動及對被測對象的理解,在測試計劃之外發現更多的軟件錯誤。但探索性測試通常情況下僅作為其他測試方法的補充,因其消耗測試資源較多,且受制于測試工程師的經驗,所以不能成為獨立的測試方法。
四、H模型
H模型將測試活動與其他研發流程獨立,測試活動分為測試準備與測試執行兩個部分,便于測試設計與測試執行活動定義,如圖4-8所示。測試準備活動包括測試需求分析、測試計劃、測試設計、測試編碼、測試驗證等,測試執行包括測試運行、測試報告、測試結果分析、確認回歸測試等。
H模型與W模型一樣,揭示了軟件測試活動應該是一個獨立的軟件生產流程,貫穿整個軟件生命周期,測試活動應該盡早準備、盡早執行,當測試準備工作完成后,一旦到達測試就緒點,就可開展測試執行活動,不會受制于研發活動。
五、敏捷測試模型
其實軟件測試中并無敏捷測試模型,為了對應敏捷開發,才提出了敏捷測試的概念。
敏捷開發的最大特點是高度迭代,周期性強,能夠及時、持續地響應需求的頻繁變更反饋。敏捷測試即是不斷修正被測對象的質量指標,正確建立測試策略,確認客戶的有效需求得以圓滿實現和確保整個生產過程安全、及時地發布最終產品。
敏捷測試工程師在高速迭代、溝通之上的敏捷開發團隊中,需要關注需求變更、產品設計、源代碼設計。通常情況下,需要全程參與敏捷開發團隊的團隊討論評審活動,并參與決策制定等。在獨立完成測試設計、測試執行、測試分析輸出的同時,關注用戶、有效溝通,從而協助敏捷流程推動產品的快速開發。
在傳統開發模型下,一個測試版本生成周期可能為幾個月,但在敏捷模型中,可能幾周一個版本,甚至幾天一個測試版本,因此敏捷團隊中的測試工程師在技術技能、業務理解、產品設計等方面都需要熟練,否則很難快速高效地完成測試任務,給項目帶來風險。

