軟件測試根據(jù)不同的測試對象、測試背景可采用不同的測試模型實施測試活動,針對測試人員,下面將通過對V模型、W模型、X模型、H模型及敏捷模型的分析,加強測試工程師在實際測試工作過程中,模型的選擇及應(yīng)用能力。

 

一、V模型

V模型是所有軟件測試模型中最為大家熟知的一種模型。它是從瀑布研發(fā)模型演變而來的測試模型,如圖4-5所示。

 

V模型的流程是從上到下、從左到右,軟件研發(fā)人員進行需求分析、概要設(shè)計、詳細設(shè)計、編碼一系列研發(fā)活動后,生成測試版本。

測試工程師則在研發(fā)人員編程過程中,對其生成的函數(shù)或類進行單元測試,測試通過后,進行組件集成,實施集成測試,然后模擬終端用戶實際業(yè)務(wù)流程執(zhí)行系統(tǒng)測試、驗收測試。該過程呈線性發(fā)展趨勢,需求在早期存在缺陷時,可能到最后環(huán)節(jié)才會發(fā)現(xiàn),并且測試工程師測試活動嚴重滯后于開發(fā)活動。

V測試模型適用開發(fā)周期較短的項目。在瀑布模型流行的年代,V測試模型發(fā)揮了很重要的作用,但隨著業(yè)務(wù)規(guī)模的不斷擴大,研發(fā)模型的不斷優(yōu)化改革,V模型已漸漸被淘汰。

二、W模型

W模型是在V模型的基礎(chǔ)上演變而來的,一般又稱為雙V模型。在V模型中,研發(fā)活動沒有完成、無任何輸出物時,測試工程師無法開展測試工作,相對而言,測試活動嚴重滯后。為了解決V模型的缺點,W模型提出了測試活動與研發(fā)活動并行的概念,并且在生產(chǎn)流程演進過程中,增加了驗證與確認活動。

 

從圖4-6可以看出,從用戶需求開始,研發(fā)團隊根據(jù)用戶需求進行需求分析、概要設(shè)計、詳細設(shè)計、編碼開發(fā)等活動,測試團隊則根據(jù)用戶需求進行驗收測試、系統(tǒng)測試、集成測試及單元測試設(shè)計。測試工作與研發(fā)活動分離,實現(xiàn)了并行操作。測試活動伴隨著整個研發(fā)過程,而不僅在研發(fā)有成果輸出后才參與。同時,W模型強調(diào)了測試活動不僅僅包括研發(fā)活動所產(chǎn)生的軟件源代碼,還考慮各種文檔,如需求文檔、概要設(shè)計文檔、詳細設(shè)計文檔、代碼等。

從W模型可以看出,完成所有的測試活動,對測試工程師的技能要求超過了研發(fā)人員。因此,規(guī)模較大的公司測試團隊會有不同職能、技能的測試工程師。

W模型要求測試活動從用戶需求階段就介入,有利于盡早地發(fā)現(xiàn)問題,在模型實施過程中,時刻進行確認(validation)、驗證(verification)活動。

1. 確認(Validation

(1)保證所生產(chǎn)的軟件可追溯到每一個用戶需求。

(2)檢測每一階段的工作產(chǎn)品是否與最初定義的軟件需求規(guī)格相一致。

2. 驗證(Verification

(1)保證軟件正確地實現(xiàn)特定功能。

(2)檢測每一階段形成的工作產(chǎn)品是否與前一階段定義的規(guī)格相一致。

W模型解決了V模型開發(fā)測試活動串行的問題,但仍然存在測試活動受開發(fā)活動的影響,并不能做到真正的測試活動與開發(fā)活動分離,互不影響。通過W模型,我們可以看到,當(dāng)開展單元及集成測試活動時,單元、集成測試活動的測試對象仍由研發(fā)活動提供,滯后于研發(fā)活動。因為僅在開發(fā)人員完成單元、組件代碼設(shè)計后,才能實施單元、集成測試或接口測試。

三、X模型

X模型產(chǎn)生的背景亦與V模型有關(guān),V模型的缺點是測試活動滯后于研發(fā)活動,無法盡早地開展測試活動。而X模型與W模型一樣,提出的初衷都是解決V模型的缺點。X模型如4-7所示

 

X模型左邊表明針對單獨程序片段n進行獨立的編碼和測試活動,以此為基本過程,不斷迭代,通過集成活動最終成為可執(zhí)行程序,然后再對這些可執(zhí)行程序進行測試。通過集成測試的成品可以進行封裝并提交給系統(tǒng)測試環(huán)節(jié)或直接給用戶。多并行的曲線表示變更可以在各個部分發(fā)生。

X模型提出了探索性測試的概念。探索性測試與常規(guī)的測試方法不同,無須事先制定測試計劃或設(shè)計,有經(jīng)驗的測試工程師可根據(jù)自己的思維活動及對被測對象的理解,測試計劃之外發(fā)現(xiàn)更多的軟件錯誤。但探索性測試通常情況下僅作為其他測試方法的補充,因其消耗測試資源較多,且受制于測試工程師的經(jīng)驗,所以不能成為獨立的測試方法。

四、H模型

H模型將測試活動與其他研發(fā)流程獨立,測試活動分為測試準備與測試執(zhí)行兩個部分,便于測試設(shè)計與測試執(zhí)行活動定義,如圖4-8所示。測試準備活動包括測試需求分析、測試計劃、測試設(shè)計、測試編碼、測試驗證等,測試執(zhí)行包括測試運行、測試報告、測試結(jié)果分析、確認回歸測試等。

 

H模型與W模型一樣,揭示了軟件測試活動應(yīng)該是一個獨立的軟件生產(chǎn)流程,貫穿整個軟件生命周期,測試活動應(yīng)該盡早準備、盡早執(zhí)行,當(dāng)測試準備工作完成后,一旦到達測試就緒點,就可開展測試執(zhí)行活動,不會受制于研發(fā)活動。

五、敏捷測試模型

其實軟件測試中并無敏捷測試模型,為了對應(yīng)敏捷開發(fā),才提出了敏捷測試的概念。

敏捷開發(fā)的最大特點是高度迭代,周期性,能夠及時、持續(xù)地響應(yīng)需求的頻繁變更反饋。敏捷測試即是不斷修正被測對象的質(zhì)量指標(biāo),正確建立測試策略,確認客戶的有效需求得以圓滿實現(xiàn)和確保整個生產(chǎn)過程安全、及時發(fā)布最終產(chǎn)品。

敏捷測試工程師在高速迭代、溝通之上的敏捷開發(fā)團隊中,需要關(guān)注需求變更、產(chǎn)品設(shè)計、源代碼設(shè)計。通常情況下,需要全程參與敏捷開發(fā)團隊的團隊討論評審活動,并參與決策制定等。在獨立完成測試設(shè)計、測試執(zhí)行、測試分析輸出的同時,關(guān)注用戶、有效溝通,從而協(xié)助敏捷流程推動產(chǎn)品的快速開發(fā)。

在傳統(tǒng)開發(fā)模型下,一個測試版本生成周期可能為幾個月,但在敏捷模型中,可能幾周一個版本,甚至幾天一個測試版本,因此敏捷團隊中的測試工程師在技術(shù)技能、業(yè)務(wù)理解、產(chǎn)品設(shè)計等方面都需要熟練,否則很難快速高效地完成測試任務(wù),給項目帶來風(fēng)險。