賈曉哲(北京全路通信信號研究設(shè)計院有限公司,北京 100073)
1970年W inston Royce提出了著名的“瀑布開發(fā)模型”[1],它將軟件生命周期劃分為制定計劃、需求分析、軟件設(shè)計、程序編寫、軟件測試和運(yùn)行維護(hù)等6個基本活動,并且規(guī)定了它們自上而下、相互銜接的固定次序,這種模型的開發(fā)安全性高且易于管理,但是它所需要的時間較長,而且如果產(chǎn)品需求稍做變更,會導(dǎo)致后面的幾個階段也要進(jìn)行更改,同時它把測試過程作為在需求分析、概要設(shè)計、詳細(xì)設(shè)計及編碼之后的一個階段,這樣會導(dǎo)致開發(fā)早期的錯誤可能要等到開發(fā)后期的測試階段才能發(fā)現(xiàn),其帶來的后果是嚴(yán)重的。
Pau l R ook在80年代后期提出了V模型針對瀑布模型對軟件測試過程進(jìn)行了補(bǔ)充[2],如圖1所示。
V模型最早提出測試并不是一個事后彌補(bǔ)行為,而是一個同開發(fā)過程同樣重要的過程,同時它明確的表明測試過程的各個階段及其和開發(fā)過程期間
賈曉哲,男,碩士畢業(yè)于北京交通大學(xué),系統(tǒng)工程師。主要研究方向為交通信息工程與控制。曾在EI上發(fā)表文章1篇,擁有兩項專利。各階段的對應(yīng)關(guān)系。但是V模型的問題也是很明顯的,比如容易讓人形成“測試是開發(fā)之后的一個階段”,“測試的對象就是程序”之類的誤解。由于V模型把系統(tǒng)開發(fā)過程劃分為具有固定邊界的不同階段,這使得人們很難跨過這些邊界來采集測試所需要的信息。有些測試應(yīng)該執(zhí)行得更早些,有些測試則需要延后進(jìn)行。不僅如此,V模型也阻礙了從系統(tǒng)描述的不同階段中取得信息進(jìn)行綜合。所以,一些改進(jìn)過的軟件測試模型被提了出來。
W模型也叫雙V模型,是對V模型的改進(jìn),它由Systeme Evolutif公司提出,針對V模型的問題,W模型強(qiáng)調(diào)需求、功能和設(shè)計同樣要測試,測試的對象不僅僅是程序,軟件測試應(yīng)該貫穿整個開發(fā)周期之中,只要相應(yīng)的開發(fā)活動完成,就可以開始執(zhí)行測試,可以說,測試與開發(fā)是同步進(jìn)行的。從而有利于盡早的發(fā)現(xiàn)問題,如圖2所示。
但是不論是V模型還是W模型,適用于那些需求非常明確,已經(jīng)文檔化了的項目,開發(fā)人員和測試人員都需要嚴(yán)格定義好的需求和設(shè)計來開展工作。在實際的開發(fā)過程中,因為需求變化等不可避免的原因,開發(fā)人員并沒有按照文檔來工作,也就是說文檔沒有及時更新,有時候在一些不規(guī)范的公司,文檔根本就沒有。這些情況下,V模型和W模型在實施起來就很困難。此外,無論是V模型,還是W模型,都把軟件的開發(fā)視為需求、設(shè)計、編碼等等一系列的串行活動。而事實上,雖然這些活動之間存在著互相牽制的關(guān)系,但在大部分時間,它們是互相獨立的,是可以并發(fā)進(jìn)行的。雖然軟件開發(fā)期望有清晰的需求、設(shè)計和編碼等等階段,但實踐告訴我們,嚴(yán)格的階段之分只是一種理想狀況。
為了解決V模型和W模型中存在的問題,很多人也提出了其他種類的測試模型,例如前置測試模型,把驗收測試和技術(shù)測試作為相互獨立的兩個部分;X測試模型,增加了探索測試的內(nèi)容;H測試模型,具有很高的效率和靈活性等等。這些模型分別對經(jīng)典的V和W測試模型進(jìn)行了不同方向的補(bǔ)充和發(fā)展,但同樣也存在相應(yīng)的不足,表1對這些測試模型進(jìn)行了對比和分析。
表1 測試模型對比和分析
通過上述測試模型的介紹,可以看出測試并不是在開發(fā)之后的過程,而是與開發(fā)同步進(jìn)行的過程。而且在執(zhí)行測試之前需要進(jìn)行充分的測試準(zhǔn)備工作,這樣才會使測試進(jìn)行的更加充分、高效、有序。因此,本文對傳統(tǒng)W模型進(jìn)行了改進(jìn),提出了擴(kuò)展W模型,如圖3所示。
擴(kuò)展W模型有3個V形組成,里層的V形,中層的V形和外層的V形。
里層的V形代表系統(tǒng)的開發(fā)過程,一個完整的系統(tǒng)是由多個子系統(tǒng)構(gòu)成,每個子系統(tǒng)則又是由多個功能模塊組成。因此開發(fā)的過程首先是通過對用戶需求的分析,編制系統(tǒng)需求,再劃分為各子系統(tǒng)的需求,之后每個子系統(tǒng)根據(jù)需求編制概要設(shè)計、詳細(xì)設(shè)計,之后進(jìn)行程序的編寫;各個模塊編寫完成后進(jìn)行模塊的組裝,軟件的組裝,之后構(gòu)成子系統(tǒng)進(jìn)而組成整個系統(tǒng)。
中層的V形代表系統(tǒng)的測試過程,測試過程應(yīng)同開發(fā)過程同步進(jìn)行,從編制需求時就對需求進(jìn)行測試,這樣不但保證軟件的可測性,同時也避免了由于需求存在問題而導(dǎo)致的軟件修改,大大節(jié)省了開發(fā)的時間成本和經(jīng)濟(jì)成本。同時利用白盒、灰盒以及黑盒的測試方法從代碼內(nèi)部、功能實現(xiàn)、接口協(xié)議、數(shù)據(jù)配置和故障模擬等各個層面和階段對軟件進(jìn)行測試,保證的測試的充分性。
外層的V形代表的是測試輔助過程,但卻是測試過程中不可缺少的部分。這個過程包括了軟件開發(fā)完成前的測試準(zhǔn)備過程和測試軟件過程中的缺陷管理、回歸測試兩大部分。測試準(zhǔn)備包括測試案例的撰寫、測試環(huán)境的搭建、測試工具的開發(fā)等內(nèi)容,好的測試案例可以彌補(bǔ)測試經(jīng)驗的不足,同時也能更好的發(fā)現(xiàn)問題;成熟的測試環(huán)境,先進(jìn)的測試工具,可以使測試更加高效,也更加充分。而測試過程中對缺陷的管理對測試來說則是重中之重。因此這部分的測試輔助過程也是測試中的重要組成部分。
信號系統(tǒng)是城市軌道交通自動化系統(tǒng)中的重要組成部分,該系統(tǒng)以安全為核心、以保證和提高列車運(yùn)行效率為目標(biāo),在保證列車和乘客安全的前提下,通過調(diào)節(jié)列車運(yùn)行間隔和運(yùn)行時分,實現(xiàn)列車運(yùn)行的高效和指揮管理的有序。城市軌道交通信號系統(tǒng)的自動化水平較高,系統(tǒng)協(xié)同性較強(qiáng),通常又被稱為列車自動控制(ATC)系統(tǒng)。
A TC系統(tǒng)包括列車自動監(jiān)控(A TS)子系統(tǒng)、列車自動防護(hù)(ATP)子系統(tǒng)、計算機(jī)聯(lián)鎖(CBI)子系統(tǒng)和列車自動運(yùn)行(ATO)子系統(tǒng)。A TC系統(tǒng)通過車載設(shè)備、軌旁設(shè)備、車站和控制中心組成的控制系統(tǒng)完成列車運(yùn)行控制。
城軌A TC系統(tǒng)是一個復(fù)雜而龐大的系統(tǒng),不但涉及到多個子系統(tǒng),同時需要子系統(tǒng)之間必須很好的協(xié)同工作。因此如果采用傳統(tǒng)的V或W模型,測試沒有和開發(fā)同步進(jìn)行,同時無測試輔助等環(huán)節(jié),系統(tǒng)開發(fā)和測試過程中會很可能出現(xiàn)時間過長、準(zhǔn)備不足、測試不能有序開展等情況。擴(kuò)展W測試模型則可以很好的避免上述問題的發(fā)生。
在程序開發(fā)前,開發(fā)人員執(zhí)行里層的V即根據(jù)用戶需求,進(jìn)行A TC系統(tǒng)需求的撰寫,同時測試人員則執(zhí)行中層的V即對A TC系統(tǒng)需求進(jìn)行評審測試,而測試人員及輔助人員則同步執(zhí)行外層的V,開展熟悉用戶需求,撰寫測試案例,搭建并驗收系統(tǒng)測試環(huán)境,熟悉環(huán)境的使用以及測試工具的開發(fā)等活動。系統(tǒng)需求完成后,各子系統(tǒng)開發(fā)人員執(zhí)行里層的V即根據(jù)系統(tǒng)需求開始撰寫子系統(tǒng)需求、概要設(shè)計和詳細(xì)設(shè)計等,測試和測試輔助和開發(fā)同步進(jìn)行,同時各子系統(tǒng)這些活動也可以同步進(jìn)行。編碼完成后,由于前期測試準(zhǔn)備活動已完成,測試活動就可以馬上展開,大大節(jié)省了時間。同時由于前期開發(fā)階段測試已經(jīng)介入,因此保證了前期開發(fā)活動的質(zhì)量。測試中發(fā)現(xiàn)的問題通過分析,制定回歸范圍,進(jìn)行回歸測試和修改,避免了軟件的重新開發(fā),增加了開發(fā)和測試的效率。
本文在傳統(tǒng)的W模型的基礎(chǔ)上增加了測試輔助過程,提出了一種擴(kuò)展的W模型。擴(kuò)展的W測試模型通過增加測試人員培訓(xùn)、測試工具準(zhǔn)備、測試環(huán)境搭建等測試準(zhǔn)備活動、缺陷管理以及測試回歸等內(nèi)容使得測試活動能夠更加有效的進(jìn)行,并應(yīng)用于城市軌道交通A TC系統(tǒng)的軟件測試中,提高了測試的質(zhì)量和效率。
[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] 黃龍水,黃城學(xué).軟件測試模型介紹[J].艦船電子工程,2004,24(3):35-37.
[3] William,E.Perry.Effective Methods for SofwtareTesting[M].2th ed.usA:JohnWiley&SonsInc.,1999.
[4]張永梅,陳立潮,馬禮,等.軟件測試技術(shù)研究[J].測試術(shù)學(xué)報,2002,16(2):15-17.
[5] Beizer B. Software Testing Techniques[M]. NewYork: Van Nostrand Reinhold Co, Inc., 1990.
[6]曹德勝,王燕興.一種新的軟件測試過程模型[J].華北科技學(xué)院學(xué)報,2006,3(2):72-74.