賈曉哲(北京全路通信信號研究設計院有限公司,北京 100073)
1970年W inston Royce提出了著名的“瀑布開發模型”[1],它將軟件生命周期劃分為制定計劃、需求分析、軟件設計、程序編寫、軟件測試和運行維護等6個基本活動,并且規定了它們自上而下、相互銜接的固定次序,這種模型的開發安全性高且易于管理,但是它所需要的時間較長,而且如果產品需求稍做變更,會導致后面的幾個階段也要進行更改,同時它把測試過程作為在需求分析、概要設計、詳細設計及編碼之后的一個階段,這樣會導致開發早期的錯誤可能要等到開發后期的測試階段才能發現,其帶來的后果是嚴重的。
Pau l R ook在80年代后期提出了V模型針對瀑布模型對軟件測試過程進行了補充[2],如圖1所示。

V模型最早提出測試并不是一個事后彌補行為,而是一個同開發過程同樣重要的過程,同時它明確的表明測試過程的各個階段及其和開發過程期間

賈曉哲,男,碩士畢業于北京交通大學,系統工程師。主要研究方向為交通信息工程與控制。曾在EI上發表文章1篇,擁有兩項專利。各階段的對應關系。但是V模型的問題也是很明顯的,比如容易讓人形成“測試是開發之后的一個階段”,“測試的對象就是程序”之類的誤解。由于V模型把系統開發過程劃分為具有固定邊界的不同階段,這使得人們很難跨過這些邊界來采集測試所需要的信息。有些測試應該執行得更早些,有些測試則需要延后進行。不僅如此,V模型也阻礙了從系統描述的不同階段中取得信息進行綜合。所以,一些改進過的軟件測試模型被提了出來。
W模型也叫雙V模型,是對V模型的改進,它由Systeme Evolutif公司提出,針對V模型的問題,W模型強調需求、功能和設計同樣要測試,測試的對象不僅僅是程序,軟件測試應該貫穿整個開發周期之中,只要相應的開發活動完成,就可以開始執行測試,可以說,測試與開發是同步進行的。從而有利于盡早的發現問題,如圖2所示。

但是不論是V模型還是W模型,適用于那些需求非常明確,已經文檔化了的項目,開發人員和測試人員都需要嚴格定義好的需求和設計來開展工作。在實際的開發過程中,因為需求變化等不可避免的原因,開發人員并沒有按照文檔來工作,也就是說文檔沒有及時更新,有時候在一些不規范的公司,文檔根本就沒有。這些情況下,V模型和W模型在實施起來就很困難。此外,無論是V模型,還是W模型,都把軟件的開發視為需求、設計、編碼等等一系列的串行活動。而事實上,雖然這些活動之間存在著互相牽制的關系,但在大部分時間,它們是互相獨立的,是可以并發進行的。雖然軟件開發期望有清晰的需求、設計和編碼等等階段,但實踐告訴我們,嚴格的階段之分只是一種理想狀況。
為了解決V模型和W模型中存在的問題,很多人也提出了其他種類的測試模型,例如前置測試模型,把驗收測試和技術測試作為相互獨立的兩個部分;X測試模型,增加了探索測試的內容;H測試模型,具有很高的效率和靈活性等等。這些模型分別對經典的V和W測試模型進行了不同方向的補充和發展,但同樣也存在相應的不足,表1對這些測試模型進行了對比和分析。

表1 測試模型對比和分析

通過上述測試模型的介紹,可以看出測試并不是在開發之后的過程,而是與開發同步進行的過程。而且在執行測試之前需要進行充分的測試準備工作,這樣才會使測試進行的更加充分、高效、有序。因此,本文對傳統W模型進行了改進,提出了擴展W模型,如圖3所示。
擴展W模型有3個V形組成,里層的V形,中層的V形和外層的V形。
里層的V形代表系統的開發過程,一個完整的系統是由多個子系統構成,每個子系統則又是由多個功能模塊組成。因此開發的過程首先是通過對用戶需求的分析,編制系統需求,再劃分為各子系統的需求,之后每個子系統根據需求編制概要設計、詳細設計,之后進行程序的編寫;各個模塊編寫完成后進行模塊的組裝,軟件的組裝,之后構成子系統進而組成整個系統。
中層的V形代表系統的測試過程,測試過程應同開發過程同步進行,從編制需求時就對需求進行測試,這樣不但保證軟件的可測性,同時也避免了由于需求存在問題而導致的軟件修改,大大節省了開發的時間成本和經濟成本。同時利用白盒、灰盒以及黑盒的測試方法從代碼內部、功能實現、接口協議、數據配置和故障模擬等各個層面和階段對軟件進行測試,保證的測試的充分性。
外層的V形代表的是測試輔助過程,但卻是測試過程中不可缺少的部分。這個過程包括了軟件開發完成前的測試準備過程和測試軟件過程中的缺陷管理、回歸測試兩大部分。測試準備包括測試案例的撰寫、測試環境的搭建、測試工具的開發等內容,好的測試案例可以彌補測試經驗的不足,同時也能更好的發現問題;成熟的測試環境,先進的測試工具,可以使測試更加高效,也更加充分。而測試過程中對缺陷的管理對測試來說則是重中之重。因此這部分的測試輔助過程也是測試中的重要組成部分。
信號系統是城市軌道交通自動化系統中的重要組成部分,該系統以安全為核心、以保證和提高列車運行效率為目標,在保證列車和乘客安全的前提下,通過調節列車運行間隔和運行時分,實現列車運行的高效和指揮管理的有序。城市軌道交通信號系統的自動化水平較高,系統協同性較強,通常又被稱為列車自動控制(ATC)系統。
A TC系統包括列車自動監控(A TS)子系統、列車自動防護(ATP)子系統、計算機聯鎖(CBI)子系統和列車自動運行(ATO)子系統。A TC系統通過車載設備、軌旁設備、車站和控制中心組成的控制系統完成列車運行控制。

城軌A TC系統是一個復雜而龐大的系統,不但涉及到多個子系統,同時需要子系統之間必須很好的協同工作。因此如果采用傳統的V或W模型,測試沒有和開發同步進行,同時無測試輔助等環節,系統開發和測試過程中會很可能出現時間過長、準備不足、測試不能有序開展等情況。擴展W測試模型則可以很好的避免上述問題的發生。
在程序開發前,開發人員執行里層的V即根據用戶需求,進行A TC系統需求的撰寫,同時測試人員則執行中層的V即對A TC系統需求進行評審測試,而測試人員及輔助人員則同步執行外層的V,開展熟悉用戶需求,撰寫測試案例,搭建并驗收系統測試環境,熟悉環境的使用以及測試工具的開發等活動。系統需求完成后,各子系統開發人員執行里層的V即根據系統需求開始撰寫子系統需求、概要設計和詳細設計等,測試和測試輔助和開發同步進行,同時各子系統這些活動也可以同步進行。編碼完成后,由于前期測試準備活動已完成,測試活動就可以馬上展開,大大節省了時間。同時由于前期開發階段測試已經介入,因此保證了前期開發活動的質量。測試中發現的問題通過分析,制定回歸范圍,進行回歸測試和修改,避免了軟件的重新開發,增加了開發和測試的效率。
本文在傳統的W模型的基礎上增加了測試輔助過程,提出了一種擴展的W模型。擴展的W測試模型通過增加測試人員培訓、測試工具準備、測試環境搭建等測試準備活動、缺陷管理以及測試回歸等內容使得測試活動能夠更加有效的進行,并應用于城市軌道交通A TC系統的軟件測試中,提高了測試的質量和效率。
[1] Winston W.Royce.Managing the Development of Large Software Systems[EB/OL].[2012-12-01].Http://wen ku.baidu.com/view/5152638/d4d8d15abe234e57.html.
[2] 黃龍水,黃城學.軟件測試模型介紹[J].艦船電子工程,2004,24(3):35-37.
[3] William,E.Perry.Effective Methods for SofwtareTesting[M].2th ed.usA:JohnWiley&SonsInc.,1999.
[4]張永梅,陳立潮,馬禮,等.軟件測試技術研究[J].測試術學報,2002,16(2):15-17.
[5] Beizer B. Software Testing Techniques[M]. NewYork: Van Nostrand Reinhold Co, Inc., 1990.
[6]曹德勝,王燕興.一種新的軟件測試過程模型[J].華北科技學院學報,2006,3(2):72-74.