高 強(qiáng)(北京全路通信信號研究設(shè)計(jì)院有限公司,北京 100073)
鐵路信號軟件與普通的應(yīng)用軟件不同,最大的特點(diǎn)是在復(fù)雜的條件下要求具備高安全性,所以鐵路信號軟件開發(fā)過程中很大一部分精力要用于對產(chǎn)品測試。傳統(tǒng)的鐵路信號軟件主要采用手工測試的方式,但由于測試仿真器和測試案例的數(shù)目比較多、測試的可操作性比較低,所以測試過程需要花費(fèi)很大的人力與時(shí)間,而且測試結(jié)果的可靠性、規(guī)范性都不足。
信號系統(tǒng)設(shè)計(jì)開發(fā)平臺(SDP)提供了用于鐵路信號軟件自動(dòng)化測試的專項(xiàng)測試工具,能夠支持執(zhí)行完整的子系統(tǒng)功能測試,包括測試數(shù)據(jù)的準(zhǔn)備、測試環(huán)境的準(zhǔn)備、測試的自動(dòng)執(zhí)行和測試結(jié)果的統(tǒng)計(jì)等功能。專項(xiàng)測試工具使用腳本描述測試的過程,使用測試機(jī)進(jìn)行自動(dòng)測試執(zhí)行,提高了軟件測試的規(guī)范性和可靠性,降低了多輪次回歸測試中人力的消耗,能夠有效提高鐵路信號軟件的質(zhì)量。SDP專項(xiàng)測試工具原理示意如圖1所示。
高強(qiáng),男,碩士畢業(yè)于清華大學(xué),助理工程師,軟件開發(fā)工程師。主要研究方向包括信號系統(tǒng)設(shè)計(jì)開發(fā)輔助工具,曾參與信號系統(tǒng)設(shè)計(jì)開發(fā)平臺項(xiàng)目。
本文以SDP專項(xiàng)測試工具在ZC子系統(tǒng)測試中的應(yīng)用為例,進(jìn)行試用與結(jié)果分析。ZC具備鐵路信號產(chǎn)品的典型特點(diǎn),是基于通信的列車自動(dòng)控制系統(tǒng)(CBTC)的地面核心設(shè)備,根據(jù)所控列車的狀態(tài)、其控制范圍內(nèi)的走行位置、聯(lián)鎖進(jìn)路信息、臨時(shí)限速命令等信息,實(shí)時(shí)生成列車行車許可,并通過無線通信系統(tǒng)傳輸給列車自動(dòng)防護(hù)子系統(tǒng)(A TP),保證其管轄內(nèi)的所有列車的運(yùn)行安全,并實(shí)現(xiàn)移動(dòng)閉塞。
ZC子系統(tǒng)功能復(fù)雜,所以測試的規(guī)模很大,體現(xiàn)在測試分引擎、測試案例、測試腳本的數(shù)目都比較大。在實(shí)際的測試中,分引擎的數(shù)目在9個(gè)左右,測試案例和測試腳本的數(shù)目都在數(shù)百的量級,如果采用手工測試則耗時(shí)耗力,而且測試的效果也不能得到保證,所以在ZC子系統(tǒng)測試中使用SDP專項(xiàng)測試工具。
ZC子系統(tǒng)測試中使用SDP專項(xiàng)測試工具,進(jìn)行了多輪次自動(dòng)測試,測試的時(shí)間、人力以及測試效果的統(tǒng)計(jì)如表1所示。在每輪回歸測試之外,ZC測試人員還使用SDP專項(xiàng)測試工具進(jìn)行日常開發(fā)過程中的功能測試,效果如表2所示。
ZC子系統(tǒng)測試中同樣使用手工方式進(jìn)行了測試,用于日常開發(fā)過程中的調(diào)試與驗(yàn)證。ZC手工測試的情況如表3所示。
表1 ZC子系統(tǒng)測試使用SDP平臺專項(xiàng)測試工具的情況統(tǒng)計(jì)
表2 測試輪次之外使用SDP專項(xiàng)測試工具的情況統(tǒng)計(jì)
測試方法對測試案例的覆蓋率是十分重要指標(biāo)之一,只有測試案例覆蓋率較高的測試方法才是安全和可靠的。除了部分不具備測試環(huán)境的案例(例如ZC能控制30個(gè)車的測試案例),專項(xiàng)測試工具能夠覆蓋絕大部分案例。與此對比,手工測試對案例的覆蓋率很低,存在大量的測試案例只能使用專項(xiàng)測試工具進(jìn)行測試。手工測試未能覆蓋的案例主要有以下3種原因。
1)耗時(shí)很長的案例:這類案例需要測試人員長時(shí)間操作和觀察測試進(jìn)程,對人力資源的需求量很大。
2)不能人工測試的案例:這類測試案例是人工測試難以復(fù)現(xiàn)或者不可實(shí)現(xiàn)的。例如各種邊界條件下的案例就是難以復(fù)現(xiàn)的,需要測試人員多次重復(fù)。反案例用人工測試也比較困難,因?yàn)槿斯y試使用的仿真器全是按照正常邏輯來實(shí)現(xiàn)的;又如很多正面案例手工測試也無法完成,比如說車地通信時(shí)間戳的校準(zhǔn),10周期校準(zhǔn)一次,人工測試不可能實(shí)現(xiàn)。如果要將這些案例變?yōu)槿斯た蓽y的,需要對仿真器本身進(jìn)行修改以增加功能,需要的人力遠(yuǎn)遠(yuǎn)大于編寫腳本通過專項(xiàng)工具進(jìn)行測試。人工不可測的原因統(tǒng)計(jì)如表4所示。
3)容易出錯(cuò)的測試案例:這類測試案例在人為因素的影響下容易出錯(cuò),導(dǎo)致需要重復(fù)測試,浪費(fèi)測試人員的時(shí)間。
表4 人工不可測的原因統(tǒng)計(jì)
正是因?yàn)槿斯y試不可能做到覆蓋測試案例,在ZC子系統(tǒng)測試中人工測試更多用于調(diào)試錯(cuò)誤和進(jìn)行結(jié)果驗(yàn)證。
根據(jù)測試案例覆蓋率的結(jié)果,可以對專項(xiàng)測試工具和手工測試兩種方式對測試案例的覆蓋率進(jìn)行對比,分別為圖2和圖3所示。
從圖2和圖3中可以看出,SDP專項(xiàng)測試工具對案例的覆蓋率很高。除了部分案例,其余絕大部分案例都能使用專項(xiàng)測試工具進(jìn)行測試。手工測試隨著案例難度和數(shù)目的增加,覆蓋率逐漸下降,而且沒有覆蓋的案例很大部分都是手工測試根本無法進(jìn)行的。在實(shí)際的測試過程中,幾乎沒有手工測試可以進(jìn)行而專項(xiàng)測試工具無法測試的案例。因此如果要求盡可能多地覆蓋測試案例,達(dá)到良好而完全的測試效果,則必須選用專項(xiàng)測試工具。
因?yàn)楦采w率與人力消耗的問題,ZC測試中已經(jīng)不采用手工測試,只是在調(diào)試中使用人工測試,所以人工測試發(fā)現(xiàn)bug數(shù)為0。使用專項(xiàng)測試工具,能夠在每輪測試中發(fā)現(xiàn)ZC軟件中存在的b u g,如表1中所示。
更為重要的是,專項(xiàng)測試工具執(zhí)行所需要的時(shí)間遠(yuǎn)遠(yuǎn)低于手工測試,而且不占用人力資源,所以專項(xiàng)測試工具可以用于開發(fā)過程中的快速迭代,以提高軟件質(zhì)量??焖俚牧鞒倘鐖D4所示。
圖4中可以看出,在修改b u g之后,使用專項(xiàng)測試工具可以進(jìn)行快速迭代,驗(yàn)證b ug是否修改正確和是否引入新的bug。因?yàn)閷m?xiàng)測試工具可以利用空閑的測試機(jī)或者閑暇時(shí)間,不消耗人力;而且根據(jù)表1,修改bug之后進(jìn)行一輪完整覆蓋測試案例的自動(dòng)測試只需要2.5 h,完全滿足快速迭代開發(fā)的時(shí)間需求,而這兩個(gè)優(yōu)點(diǎn)是人工測試無法做到的。表2中給出了開發(fā)過程中使用專項(xiàng)測試工具進(jìn)行自動(dòng)測試的情況??梢钥闯鐾耆谐渥愕臅r(shí)間與人力進(jìn)行多次測試,也發(fā)現(xiàn)了很多潛在的bug,在固定的測試輪次之前進(jìn)行了修改。由此可知利用專項(xiàng)測試工具進(jìn)行快速迭代,可以提高修改b u g的質(zhì)量,避免引入新的b u g,盡早發(fā)現(xiàn)未知b u g,可以顯著提高軟件的質(zhì)量。
不論專項(xiàng)測試工具還是手工測試,每輪測試開始之前都需要進(jìn)行測試環(huán)境的準(zhǔn)備工作。SDP專項(xiàng)測試工具需要開發(fā)仿真器、編寫和評審腳本。手工測試同樣需要開發(fā)仿真器,以及為覆蓋更多的案例而修改仿真器。將表1、表3和表4中的用于測試環(huán)境準(zhǔn)備階段的人力進(jìn)行匯總,如圖5所示。
從圖5中可以看出,SDP專項(xiàng)測試工具和手工測試都需要花費(fèi)很大的人力在第一輪測試之前開發(fā)仿真器。隨著測試案例的增加和測試范圍的擴(kuò)大,SDP專項(xiàng)測試工具和手工測試都需要對測試環(huán)境進(jìn)行修改。但專項(xiàng)測試工具與手工測試所用仿真器有較大的區(qū)別:SDP專項(xiàng)測試工具中與被測對象進(jìn)行交互的邏輯是在測試腳本中實(shí)現(xiàn)的,只需要花費(fèi)人力編寫和評審腳本;手工測試中與被測對象進(jìn)行交互的邏輯是在仿真器中實(shí)現(xiàn)的,所以需要花費(fèi)人力對仿真器進(jìn)行修改和調(diào)試。因?yàn)閷m?xiàng)測試工具覆蓋的案例比較完全,所以腳本的數(shù)目很多,前幾輪測試中編寫和評審腳本的人力花費(fèi)比較大,而手工測試覆蓋的案例較少,所以修改仿真器的工作量不大,花費(fèi)的人力不多。
值得注意的是,開發(fā)腳本比修改仿真器容易。測試人員經(jīng)驗(yàn)的增加,以及已有腳本也可以在新案例對應(yīng)的腳本中復(fù)用,導(dǎo)致開發(fā)腳本的時(shí)間逐漸降低。另一方面,頻繁修改仿真器很可能帶來新的b ug,導(dǎo)致仿真器本身不穩(wěn)定,在測試過程中如果發(fā)現(xiàn)了問題,還需要花人力確認(rèn)是被測系統(tǒng)的b ug還是修改仿真器帶來的問題,因此修改仿真器的時(shí)間并不會減少。根據(jù)實(shí)際測試中的統(tǒng)計(jì),每輪測試中用于修改仿真器的人力消耗一直都沒有減少,而開發(fā)腳本的人力則迅速下降,到第四輪測試時(shí),SDP專項(xiàng)測試工具和人工測試用于測試環(huán)境準(zhǔn)備的人力消耗已相差無幾。
將表1、3和表4中用于測試執(zhí)行的人力進(jìn)行匯總,得到圖6。因?yàn)槭止y試對測試案例的覆蓋率很低,為便于比較,對手工測試的人力花費(fèi)進(jìn)行了修正,簡單地用實(shí)際測試花費(fèi)的人力資源除以測試案例的覆蓋率,以表示手工測試完全覆蓋測試案例所需要的人力資源,得到圖7。
測試執(zhí)行的人力消耗則是SDP專項(xiàng)測試工具的優(yōu)勢所在。從圖6中已經(jīng)看出手工測試所需要的人力要遠(yuǎn)遠(yuǎn)大于SDP專項(xiàng)測試工具。圖7中按照完全覆蓋測試案例進(jìn)行修正后,手工測試所需要的人力是專項(xiàng)測試工具十倍乃至上百倍。此外,專項(xiàng)測試工具可以在空閑的測試機(jī)或測試人員的閑暇時(shí)間進(jìn)行自動(dòng)測試,只占用測試機(jī)的資源,人力消耗幾乎為0,這是手工測試根本不可能實(shí)現(xiàn)的。
為了清晰地反映出SDP平臺專項(xiàng)測試工具和手工測試在測試執(zhí)行中的情況,分析了每輪測試花費(fèi)的時(shí)間圖(如圖8所示)和需要的人力圖(如圖10所示)。同樣,根據(jù)對測試案例的覆蓋情況,簡單對時(shí)間和人力進(jìn)行了修正,得到了圖9和圖11。
從圖8和圖9測試案例的覆蓋情況可以看出,盡管手工測試沒有編寫和評審腳本的時(shí)間,但隨著每輪測試規(guī)模的逐漸增大,需要的總時(shí)間也逐漸上升。相比較之下,在測試腳本和分引擎逐漸穩(wěn)定之后,專項(xiàng)測試工具花費(fèi)的時(shí)間大幅度下降,甚至僅僅包含測試機(jī)自動(dòng)執(zhí)行測試的時(shí)間。
圖10和圖11從人力使用的角度反映了類似的效果。手工測試花費(fèi)的人力比較穩(wěn)定,而且隨著測試案例的增加,為完全覆蓋測試案例需要的人力會逐漸增加。專項(xiàng)測試工具則在前若干輪需要花費(fèi)人力進(jìn)行測試環(huán)境的準(zhǔn)備工作,測試環(huán)境穩(wěn)定之后花費(fèi)的人力逐漸下降,最后幾乎只占用測試機(jī)的資源。
同之前分析的類似,手工測試中未測試的測試案例包括很多耗時(shí)長或者無法人工測試的案例,因此手工測試完全覆蓋測試案例時(shí)所需的時(shí)間和人力遠(yuǎn)遠(yuǎn)大于圖9和圖11中的結(jié)果。
SDP專項(xiàng)測試工具的優(yōu)勢在于多輪次的回歸測試中耗時(shí)短并且節(jié)省人力。為說明這一優(yōu)勢,可以依據(jù)已有的數(shù)據(jù),預(yù)測進(jìn)行多輪測試時(shí)人力的消耗情況。
根據(jù)目前已有的四輪測試數(shù)據(jù),假設(shè)第5輪測試有約600個(gè)測試案例,到第10輪測試時(shí)線性增長到約800個(gè)測試案例,之后趨于穩(wěn)定。這樣從第10輪至第20輪就沒有測試準(zhǔn)備的人力,只有測試執(zhí)行的人力。預(yù)測時(shí)按照實(shí)際第3、4輪測試的增量數(shù)據(jù)進(jìn)行計(jì)算,并認(rèn)為手工測試按照比例完全覆蓋測試案例。因?yàn)镾DP專項(xiàng)測試工具只占用測試機(jī)資源,人力消耗幾乎為0。經(jīng)過分析與計(jì)算,可以得到表5。
表5 多輪次測試使用人力資源的分析與預(yù)測
從圖12中可以看出,在前幾輪測試中,因?yàn)闇y試案例在逐漸豐富,所以SDP專項(xiàng)測試工具和手工測試的多輪次累計(jì)人力需求都在快速增長。在測試案例穩(wěn)定之后,測試準(zhǔn)備環(huán)節(jié)不再消耗人力,人力需求的增長來源于測試執(zhí)行環(huán)節(jié)。手工測試每輪次都要花費(fèi)相當(dāng)?shù)娜肆?,而專?xiàng)測試工具只占用測試機(jī)資源,幾乎沒有人力資源需求。所以從圖12可以看出,測試案例穩(wěn)定后,人工測試的累計(jì)人力需求仍然持續(xù)增長,而SDP專項(xiàng)測試工具的累計(jì)人力需求保持恒定。到第20輪測試之后,人工測試的累計(jì)人力消耗遠(yuǎn)遠(yuǎn)大于SDP專項(xiàng)測試工具。
圖13從多輪次測試中每輪平均人力需求的角度同樣得到了類似的結(jié)論。在測試案例穩(wěn)定之后,SDP專項(xiàng)測試工具的平均人力需求逐漸下降而趨于0,但手工測試的平均人力需求則保持恒定,甚至略有增長。
根據(jù)多輪次測試的人力資源需求情況的預(yù)測,很明顯可以得到結(jié)論:SDP專項(xiàng)測試工具有利于多輪次的回歸測試,特別是測試案例穩(wěn)定之后,使用SDP專項(xiàng)測試工具可以顯著降低人力資源的消耗,節(jié)省測試執(zhí)行的時(shí)間。
使用專項(xiàng)測試工具時(shí),需要花費(fèi)時(shí)間學(xué)習(xí)熟悉兩個(gè)方面的知識:一是被測對象的需求和功能,知道測試的范圍;二是腳本開發(fā)技術(shù)及測試方法,知道該如何測試被測系統(tǒng),第一方面知識在手工測試中也必須學(xué)習(xí)。在ZC第一輪測試之前很大一部分時(shí)間用于學(xué)習(xí)這兩個(gè)方面的知識。在熟悉一段時(shí)間之后,開發(fā)腳本的效率迅速提高,花費(fèi)的時(shí)間與人力有了明顯的下降,如表6和圖14所示。
表6 各個(gè)輪次開發(fā)測試腳本效率統(tǒng)計(jì)
由表6和圖14可以看出,隨著測試輪次的增加,開發(fā)腳本的效率有大幅度提高,能夠大大降低整個(gè)測試需要的人力。與之對比的是,手工測試并不能隨著測試輪次的增加而顯著增加效率,因而每輪測試需要的人力比較恒定,并且隨著案例數(shù)目的增長而增多。
另外,由于SDP專項(xiàng)測試是通用測試平臺,開發(fā)腳本積累的經(jīng)驗(yàn)可以應(yīng)用于之后其他鐵路通信信號產(chǎn)品的專項(xiàng)測試中,顯著降低開發(fā)腳本開發(fā)所需的時(shí)間;而人工測試大多使用專門開發(fā)的測試環(huán)境,經(jīng)驗(yàn)無法有效地積累。
區(qū)域控制器(ZC)軟件是典型的鐵路通信信號軟件,對ZC子系統(tǒng)的測試存在測試案例多、測試工作量大的特點(diǎn)。在ZC子系統(tǒng)測試中試用SDP專項(xiàng)測試工具進(jìn)行多輪次測試之后,與ZC手工測試和城鐵A TP手工測試對比,可以得出SDP專項(xiàng)測試工具具備以下的優(yōu)點(diǎn)。
1)非常高的測試案例覆蓋率
2)應(yīng)用于快速迭代的開發(fā)過程,盡早發(fā)現(xiàn)軟件的缺陷,提高軟件質(zhì)量
3)多輪次回歸測試中顯著降低人力資源消耗和測試執(zhí)行時(shí)間
4)提供了一種精確、可控的測試方法,測試可信度較高
在鐵路信號軟件的測試中,自動(dòng)測試工具還是比較嶄新的課題,也具有很大的挑戰(zhàn)性。盡管SDP專項(xiàng)測試工具還具有易用性等方面的不足,但在區(qū)域控制器測試中試用的結(jié)果表明,SDP專項(xiàng)測試工具可以應(yīng)用于鐵路信號軟件的自動(dòng)化測試,對提高軟件的質(zhì)量、降低測試的人力消耗有明顯的作用,值得在一定程度內(nèi)推廣使用。