杜孝平,張 祿,李 曄
DU Xiaoping,ZHANG Lu,LI Ye
北京航空航天大學(xué) 軟件學(xué)院,北京100191
College of Software,Beihang University,Beijing 100191,China
AFC(Automatic Fare Collection)系統(tǒng)又稱為自動(dòng)售檢票系統(tǒng),是城市公共交通中的一項(xiàng)重要技術(shù)[1],為城市軌道交通帶來(lái)了諸多益處。改革開(kāi)放以來(lái),北京城市公共交通尤其是城市軌道交通基礎(chǔ)設(shè)施和運(yùn)營(yíng)管理得到了較快發(fā)展,AFC 作為城市軌道交通運(yùn)營(yíng)不可缺少的核心組成系統(tǒng),為運(yùn)營(yíng)的科學(xué)管理提供依據(jù)[2]。北京市AFC 系統(tǒng)在投入運(yùn)營(yíng)前需要進(jìn)行常規(guī)連接測(cè)試、異常連接測(cè)試、功能測(cè)試、專項(xiàng)測(cè)試、集成測(cè)試等測(cè)試工作。異常連接測(cè)試的任務(wù)是測(cè)試AFC 系統(tǒng)中被測(cè)車(chē)站設(shè)備和系統(tǒng)對(duì)異常數(shù)據(jù)的處理是否符合《北京軌道交通AFC系統(tǒng)設(shè)計(jì)及實(shí)施規(guī)范》(簡(jiǎn)稱“實(shí)施規(guī)范”)中的相關(guān)要求,它是檢測(cè)AFC 系統(tǒng)容錯(cuò)性的重要手段。
文獻(xiàn)[3-5]討論了在平臺(tái)搭建基礎(chǔ)上對(duì)AFC 功能和接口進(jìn)行測(cè)試的問(wèn)題;文獻(xiàn)[6-7]在討論模擬測(cè)試工具的設(shè)計(jì)實(shí)現(xiàn)基礎(chǔ)上,介紹了對(duì)AFC 系統(tǒng)的功能與接口測(cè)試?,F(xiàn)有文獻(xiàn)尚未看到對(duì)異常連接測(cè)試的相關(guān)測(cè)試工具研究的介紹。
負(fù)責(zé)北京市AFC 系統(tǒng)檢測(cè)的北京市軌道交通指揮中心現(xiàn)在針對(duì)異常數(shù)據(jù)處理的測(cè)試方式是利用一個(gè)輔助測(cè)試工具,通過(guò)熟悉AFC 系統(tǒng)的人員對(duì)照實(shí)施規(guī)范中的數(shù)據(jù)結(jié)構(gòu),手動(dòng)構(gòu)造測(cè)試數(shù)據(jù),并按測(cè)試用例逐步發(fā)送/接收數(shù)據(jù),人工對(duì)比接收到的數(shù)據(jù)和測(cè)試用例中的預(yù)期數(shù)據(jù)是否一致,來(lái)判斷被測(cè)對(duì)象是否滿足要求。其測(cè)試方式對(duì)人員素質(zhì)要求較高,且編制數(shù)據(jù)與控制數(shù)據(jù)收發(fā)過(guò)程效率低下,易于出錯(cuò)。本文對(duì)設(shè)計(jì)實(shí)現(xiàn)一個(gè)異常連接測(cè)試工具用于完成上述測(cè)試任務(wù)進(jìn)行討論。該工具可自動(dòng)生成測(cè)試數(shù)據(jù),自動(dòng)控制數(shù)據(jù)收發(fā)流程,降低測(cè)試人員對(duì)系統(tǒng)業(yè)務(wù)了解的要求,提高測(cè)試效率。
AFC 系統(tǒng)一般采用5 層架構(gòu)體系:清算中心(AFC Clearing Center,ACC)、線路中心(Line Center,LC)/多線路中心(Multiple Line Center,MLC)、車(chē)站計(jì)算機(jī)系統(tǒng)(Station Computer,SC)、車(chē)站終端設(shè)備(Station Level Equipment,SLE)和車(chē)票層[8-11],如圖1 所示。異常連接測(cè)試的任務(wù)是測(cè)試MLC、SC 與SLE 之間對(duì)異常數(shù)據(jù)的處理是否符合實(shí)施規(guī)范的要求。異常連接測(cè)試工具需要具備仿真上述某一層系統(tǒng)或設(shè)備同其他被測(cè)系統(tǒng)或設(shè)備(簡(jiǎn)稱被測(cè)對(duì)象)建立連接,向被測(cè)對(duì)象發(fā)送消息并檢查應(yīng)答的功能,具體包含仿真MLC 測(cè)試SC、仿真SC 測(cè)試MLC與SLE以及仿真SLE測(cè)試SC四部分。其開(kāi)發(fā)原理是基于AFC 系統(tǒng)各層次的通信接口協(xié)議,由仿真工具模擬生成各層次系統(tǒng)或設(shè)備的測(cè)試數(shù)據(jù),與被測(cè)對(duì)象進(jìn)行通信,驗(yàn)證測(cè)試數(shù)據(jù)能否符合實(shí)施規(guī)范的要求[12]。
圖1 AFC 系統(tǒng)層次圖
異常連接測(cè)試的一般流程為先準(zhǔn)備測(cè)試數(shù)據(jù),再與被測(cè)對(duì)象建立連接,最后按測(cè)試用例收發(fā)數(shù)據(jù),若收發(fā)數(shù)據(jù)的順序和內(nèi)容都與測(cè)試用例一致,則該測(cè)試用例通過(guò),否則中斷測(cè)試用例的執(zhí)行,對(duì)錯(cuò)誤進(jìn)行記錄。工具設(shè)計(jì)以盡力降低系統(tǒng)耦合度,實(shí)現(xiàn)數(shù)據(jù)共享,加強(qiáng)功能函數(shù)復(fù)用為原則。基于此原則,本工具的總體架構(gòu)設(shè)計(jì)為界面層、支撐層、數(shù)據(jù)層三層。界面層為直接面向用戶的功能層,包含測(cè)試數(shù)據(jù)準(zhǔn)備、實(shí)現(xiàn)與被測(cè)對(duì)象的連接以及執(zhí)行測(cè)試功能;支撐層為工具的運(yùn)行提供公用的功能函數(shù),為界面層的各個(gè)功能提供有效支持;數(shù)據(jù)層為整個(gè)工具的運(yùn)行提供數(shù)據(jù)支撐,用于存儲(chǔ)自動(dòng)生成的測(cè)試數(shù)據(jù)、測(cè)試日志以及測(cè)試數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)和測(cè)試用例結(jié)構(gòu)數(shù)據(jù)。測(cè)試工具的總體結(jié)構(gòu)如圖2 所示。
圖2 測(cè)試工具的總體架構(gòu)
為實(shí)現(xiàn)本工具的各功能,使其能替代大部分人工測(cè)試工作,需要解決兩個(gè)關(guān)鍵問(wèn)題:測(cè)試數(shù)據(jù)的自動(dòng)生成和測(cè)試用例的自動(dòng)執(zhí)行,下面為這兩個(gè)問(wèn)題提供解決思路。
3.2.1 自動(dòng)生成測(cè)試數(shù)據(jù)
為了能夠自動(dòng)生成測(cè)試數(shù)據(jù),首先需要根據(jù)測(cè)試數(shù)據(jù)的特征將其進(jìn)行分類,再利用這些分類數(shù)據(jù)根據(jù)需要靈活生成滿足測(cè)試需求的測(cè)試數(shù)據(jù)。自動(dòng)生成的測(cè)試數(shù)據(jù)是否正確依據(jù)實(shí)施規(guī)范規(guī)定的內(nèi)容來(lái)判斷。
實(shí)施規(guī)范中規(guī)定的測(cè)試相關(guān)數(shù)據(jù)由大量數(shù)據(jù)字段構(gòu)成?;谧詣?dòng)生成測(cè)試數(shù)據(jù)時(shí)每個(gè)字段被處理的方式的不同,可將這些數(shù)據(jù)字段歸納為六類:
(1)固定內(nèi)容字段。包含由實(shí)施規(guī)范規(guī)定的數(shù)據(jù)起始、結(jié)束標(biāo)識(shí)等字段。這類字段長(zhǎng)度與內(nèi)容都在實(shí)施規(guī)范中有明確的定義,其值固定不變。
(2)隨本工具模擬的設(shè)備不同而變化的字段。包含設(shè)備ID、設(shè)備IP、設(shè)備群組號(hào)等設(shè)備的基本信息字段。這類字段長(zhǎng)度固定,內(nèi)容隨設(shè)備而變。
(3)隨時(shí)間變化的字段。包含描述數(shù)據(jù)發(fā)送時(shí)間、交易生成時(shí)間等與時(shí)間相關(guān)的字段。這類字段長(zhǎng)度不變,內(nèi)容隨時(shí)間變化,且其值來(lái)自于數(shù)據(jù)產(chǎn)生時(shí)的系統(tǒng)時(shí)間。
(4)隨測(cè)試用例變化的字段。這類字段用于描述由本工具向被測(cè)對(duì)象發(fā)送的消息錯(cuò)誤應(yīng)答中的錯(cuò)誤碼,其值由測(cè)試用例中規(guī)定的錯(cuò)誤類型確定。這類字段長(zhǎng)度不變,內(nèi)容隨具體測(cè)試用例而變。
(5)描述數(shù)據(jù)包長(zhǎng)度的字段。這類字段長(zhǎng)度不變,其值隨數(shù)據(jù)包的大小不同而不同。
(6)需要人工參與填寫(xiě)數(shù)據(jù)值的字段。包含請(qǐng)求指定包數(shù)目、狀態(tài)數(shù)量數(shù)據(jù)等。這類字段長(zhǎng)度不變,其值在實(shí)施規(guī)范和測(cè)試用例中都沒(méi)有規(guī)定,需要測(cè)試者按實(shí)際情況填寫(xiě),該類數(shù)據(jù)字段很少,僅在少量測(cè)試數(shù)據(jù)中出現(xiàn),對(duì)自動(dòng)生成測(cè)試數(shù)據(jù)的影響不大。
自動(dòng)生成測(cè)試數(shù)據(jù)時(shí),每個(gè)測(cè)試數(shù)據(jù)由多個(gè)前述數(shù)據(jù)字段構(gòu)成,單個(gè)數(shù)據(jù)字段的長(zhǎng)度和結(jié)構(gòu)不變,但整個(gè)測(cè)試數(shù)據(jù)的長(zhǎng)度和結(jié)構(gòu)隨測(cè)試的不同而不同。
測(cè)試數(shù)據(jù)屬于半結(jié)構(gòu)化數(shù)據(jù),利用關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)管理較為困難。可擴(kuò)展標(biāo)記語(yǔ)言(XML)是半結(jié)構(gòu)化數(shù)據(jù)的一個(gè)特例[13],XML 數(shù)據(jù)模型能很好地實(shí)現(xiàn)對(duì)半結(jié)構(gòu)化數(shù)據(jù)的管理以及不同程序或模塊對(duì)半結(jié)構(gòu)化數(shù)據(jù)的共享[14]。本文以XML 作為測(cè)試數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)和測(cè)試用例結(jié)構(gòu)數(shù)據(jù)的存儲(chǔ)語(yǔ)言。
為實(shí)現(xiàn)自動(dòng)生成測(cè)試數(shù)據(jù)的功能,可將每個(gè)數(shù)據(jù)的具體結(jié)構(gòu)和固定內(nèi)容按一定規(guī)則用XML 存儲(chǔ)于配置文件中,通過(guò)自動(dòng)生成測(cè)試數(shù)據(jù)函數(shù)(在4.2 節(jié)介紹)解析配置文件來(lái)生成測(cè)試數(shù)據(jù)。配置文件中測(cè)試數(shù)據(jù)的結(jié)構(gòu)如圖3 所示。
圖3 測(cè)試數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)
圖中第2~4 行分別用于描述實(shí)施規(guī)范中數(shù)據(jù)的一級(jí)分類(如控制數(shù)據(jù))、子分類(如控制數(shù)據(jù)中的命令數(shù)據(jù))與數(shù)據(jù)的具體名稱(如設(shè)備運(yùn)行控制命令)。
第5~10 行用于表示一個(gè)數(shù)據(jù)字段,其中第10 行中的property 屬性用于標(biāo)識(shí)該字段屬于六個(gè)數(shù)據(jù)字段分類中的哪一類。
第11~20 行用于表示一個(gè)特殊的數(shù)據(jù)片段的結(jié)構(gòu),該數(shù)據(jù)片段可以在一個(gè)測(cè)試數(shù)據(jù)中重復(fù)多次。
自動(dòng)生成測(cè)試數(shù)據(jù)函數(shù)在解析測(cè)試數(shù)據(jù)結(jié)構(gòu)后,根據(jù)測(cè)試數(shù)據(jù)結(jié)構(gòu)中每個(gè)數(shù)據(jù)字段的分類來(lái)做出相應(yīng)的處理,生成預(yù)期的測(cè)試數(shù)據(jù)。自動(dòng)生成測(cè)試數(shù)據(jù)函數(shù)對(duì)各類字段的處理方法如下:
對(duì)于第一類字段,直接取其固定值寫(xiě)入。
對(duì)于第二類字段,通過(guò)提取本工具模擬設(shè)備時(shí)填寫(xiě)的設(shè)備相關(guān)信息來(lái)寫(xiě)入。
對(duì)于第三類字段,取生成該字段時(shí)的系統(tǒng)時(shí)間填入數(shù)據(jù)字段。該類字段描述的是數(shù)據(jù)發(fā)送時(shí)間、交易生成時(shí)間等,屬于即時(shí)內(nèi)容。
對(duì)于第四類字段,其數(shù)據(jù)內(nèi)容需要在自動(dòng)執(zhí)行測(cè)試用例時(shí)實(shí)時(shí)填入,即通過(guò)讀取測(cè)試用例中的相應(yīng)數(shù)值來(lái)填入。該類字段的值是在測(cè)試用例中規(guī)定的,同一類數(shù)據(jù)在不同的測(cè)試用例中該值都可能不同,需要在執(zhí)行測(cè)試用例時(shí)實(shí)時(shí)填入。
對(duì)于第五類字段,在數(shù)據(jù)包生成完成后通過(guò)計(jì)算數(shù)據(jù)包長(zhǎng)度填入。其值來(lái)自于將測(cè)試數(shù)據(jù)中每個(gè)字段的字節(jié)長(zhǎng)度相加的結(jié)果。
對(duì)于第六類字段,自動(dòng)生成測(cè)試數(shù)據(jù)函數(shù)生成默認(rèn)的固定值,這些默認(rèn)值可能并不符合實(shí)際情況,但在大部分測(cè)試用例中并不影響測(cè)試結(jié)果,若用戶不想使用默認(rèn)值,則可以自己修改該類數(shù)據(jù)字段的值。
3.2.2 自動(dòng)執(zhí)行測(cè)試用例
執(zhí)行測(cè)試用例時(shí),是由測(cè)試人員逐條執(zhí)行測(cè)試用例的每個(gè)步驟,觀察實(shí)際操作結(jié)果與測(cè)試用例的描述結(jié)果是否相同。其中每個(gè)步驟的操作內(nèi)容可以分為兩類:向被測(cè)對(duì)象發(fā)送數(shù)據(jù)和對(duì)比來(lái)自被測(cè)對(duì)象的數(shù)據(jù)與測(cè)試用例描述數(shù)據(jù)是否相同。自動(dòng)執(zhí)行測(cè)試用例的功能,可以通過(guò)取出以XML 文件組織的測(cè)試用例,根據(jù)解析的結(jié)果調(diào)用相應(yīng)的功能函數(shù)并獲取相應(yīng)的測(cè)試數(shù)據(jù)來(lái)實(shí)現(xiàn)[15]。測(cè)試用例按一定規(guī)則用XML 存儲(chǔ)在配置文件中,測(cè)試用例的每個(gè)步驟作為一個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)中存儲(chǔ)數(shù)據(jù)名稱,并區(qū)分該數(shù)據(jù)是“發(fā)送”還是“接收”。在自動(dòng)執(zhí)行測(cè)試用例時(shí),自動(dòng)執(zhí)行測(cè)試用例函數(shù)解析配置文件,當(dāng)節(jié)點(diǎn)中的數(shù)據(jù)標(biāo)記為“發(fā)送”時(shí),則調(diào)用自動(dòng)生成測(cè)試數(shù)據(jù)函數(shù)生成相應(yīng)測(cè)試數(shù)據(jù)或直接獲取已經(jīng)存在的測(cè)試數(shù)據(jù)并發(fā)送,然后繼續(xù)讀取下一個(gè)節(jié)點(diǎn);當(dāng)節(jié)點(diǎn)中的數(shù)據(jù)標(biāo)記為“接收”時(shí),則調(diào)用數(shù)據(jù)解析函數(shù)(在4.2節(jié)介紹)解析接收到的數(shù)據(jù),對(duì)比接收到的數(shù)據(jù)特征與節(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù)特征是否相同,若相同則繼續(xù)讀取下一個(gè)節(jié)點(diǎn);若不同則中止測(cè)試用例的執(zhí)行,提示用戶測(cè)試用例執(zhí)行出錯(cuò)。用例執(zhí)行過(guò)程中收發(fā)的數(shù)據(jù)和提示信息都會(huì)記錄于日志文件中。
本測(cè)試工具的界面層按用戶行為主要分為三部分:與被測(cè)對(duì)象連接、數(shù)據(jù)準(zhǔn)備和執(zhí)行測(cè)試。
與被測(cè)對(duì)象連接部分需要實(shí)現(xiàn)配置測(cè)試工具的連接信息來(lái)與被測(cè)對(duì)象建立連接,并向被測(cè)對(duì)象發(fā)送測(cè)試數(shù)據(jù)以及接收來(lái)自被測(cè)對(duì)象的數(shù)據(jù)的功能。
數(shù)據(jù)準(zhǔn)備部分需要實(shí)現(xiàn)自動(dòng)生成測(cè)試數(shù)據(jù),解析顯示測(cè)試數(shù)據(jù)的功能。
執(zhí)行測(cè)試部分需要實(shí)現(xiàn)自動(dòng)執(zhí)行測(cè)試用例,執(zhí)行過(guò)程中自動(dòng)生成測(cè)試數(shù)據(jù),解析來(lái)自被測(cè)對(duì)象的數(shù)據(jù)的功能。
異常連接測(cè)試中要求傳輸?shù)臄?shù)據(jù)利用基于TCP/IP的SOCKET 協(xié)議進(jìn)行傳輸。根據(jù)實(shí)際測(cè)試需求,本工具可模擬測(cè)試對(duì)象主動(dòng)連接實(shí)際的被測(cè)對(duì)象(如利用本工具模擬SC 測(cè)試MLC 以及模擬SLE 測(cè)試SC 時(shí),由本工具向被測(cè)對(duì)象MLC 和SC 發(fā)出連接請(qǐng)求);或作為模擬的測(cè)試對(duì)象等待實(shí)體被測(cè)對(duì)象主動(dòng)連接(如利用本工具模擬MLC測(cè)試SC以及模擬SC測(cè)試SLE時(shí),本工具被動(dòng)等待來(lái)自實(shí)測(cè)對(duì)象SC 與SLE 的連接請(qǐng)求)。主動(dòng)請(qǐng)求連接的一方稱為客戶端,等待連接請(qǐng)求的一方稱為服務(wù)端。建立連接時(shí),由服務(wù)端監(jiān)聽(tīng)某個(gè)端口,客戶端根據(jù)服務(wù)端的IP 地址和其監(jiān)聽(tīng)的端口號(hào)與服務(wù)端建立連接。
與被測(cè)對(duì)象建立連接、發(fā)送接收數(shù)據(jù)通過(guò)C#的socket庫(kù)實(shí)現(xiàn)。建立連接的過(guò)程如圖4 所示。
圖4 建立連接過(guò)程
該部分由自動(dòng)生成測(cè)試數(shù)據(jù)函數(shù)和數(shù)據(jù)解析函數(shù)來(lái)實(shí)現(xiàn)。為方便對(duì)自動(dòng)生成測(cè)試數(shù)據(jù)函數(shù)的原理進(jìn)行說(shuō)明,將圖3 所示的XML 文件抽象為圖5(a)所示的樹(shù)狀結(jié)構(gòu),將實(shí)際測(cè)試數(shù)據(jù)(一個(gè)二進(jìn)制文件)內(nèi)容抽象為圖5(b)所示的結(jié)構(gòu)。自動(dòng)生成測(cè)試數(shù)據(jù)函數(shù)首先解析如圖3 所示的XML 文件,找出要生成的測(cè)試數(shù)據(jù)節(jié)點(diǎn)(如DataType_2),然后遍歷該節(jié)點(diǎn)下的每個(gè)子節(jié)點(diǎn)Row1,Row2,…,每個(gè)子節(jié)點(diǎn)即一個(gè)數(shù)據(jù)字段,函數(shù)判斷該數(shù)據(jù)字段屬于六個(gè)數(shù)據(jù)字段分類中的哪一類,按3.2.1小節(jié)中對(duì)相應(yīng)數(shù)據(jù)字段的處理方法生成數(shù)據(jù)內(nèi)容,并將數(shù)據(jù)內(nèi)容填入圖5(b)所示的相應(yīng)片段中。若某個(gè)Row節(jié)點(diǎn)下存在children 子節(jié)點(diǎn)(如Row2,其生成的數(shù)據(jù)內(nèi)容設(shè)為x),則需要為children 節(jié)點(diǎn)的子節(jié)點(diǎn)Row′1,Row′2,…生成數(shù)據(jù)內(nèi)容,并插入到Row2節(jié)點(diǎn)的數(shù)據(jù)內(nèi)容之后,且需要循環(huán)生成x遍children 節(jié)點(diǎn)的子節(jié)點(diǎn)內(nèi)容。當(dāng)Row節(jié)點(diǎn)遍歷完成,則測(cè)試數(shù)據(jù)也生成完畢。
數(shù)據(jù)解析函數(shù)用于解析一個(gè)已經(jīng)存在的數(shù)據(jù)包,通過(guò)取二進(jìn)制數(shù)據(jù)中的特定位置的字節(jié)與實(shí)施規(guī)范中的定義比對(duì),以此判斷該數(shù)據(jù)的具體名稱,并由該具體名稱從圖3 的XML 文件中獲取相應(yīng)數(shù)據(jù)結(jié)構(gòu),然后將該數(shù)據(jù)包按該結(jié)構(gòu)分解展示給用戶查看和修改,方便用戶對(duì)數(shù)據(jù)包的理解和維護(hù)。
圖5 抽象結(jié)構(gòu)
圖6 為本工具的自動(dòng)生成測(cè)試數(shù)據(jù)的界面。圖中A區(qū)域表示數(shù)據(jù)分類結(jié)構(gòu)樹(shù),由圖3 的XML 文件生成;B區(qū)域表示自動(dòng)生成的測(cè)試數(shù)據(jù)。
圖6 自動(dòng)生成數(shù)據(jù)界面
該部分由自動(dòng)生成測(cè)試數(shù)據(jù)函數(shù)、自動(dòng)執(zhí)行測(cè)試用例函數(shù)和數(shù)據(jù)解析函數(shù)來(lái)實(shí)現(xiàn)。執(zhí)行測(cè)試時(shí)調(diào)用自動(dòng)執(zhí)行測(cè)試用例函數(shù),發(fā)送數(shù)據(jù)時(shí)調(diào)用自動(dòng)生成測(cè)試數(shù)據(jù)函數(shù)生成相應(yīng)數(shù)據(jù)并發(fā)送,接收數(shù)據(jù)后調(diào)用數(shù)據(jù)解析函數(shù)解析數(shù)據(jù),并對(duì)比接收到的數(shù)據(jù)特征與測(cè)試用例中存儲(chǔ)的數(shù)據(jù)特征是否相同。
自動(dòng)執(zhí)行測(cè)試用例函數(shù)讀取存儲(chǔ)有測(cè)試用例結(jié)構(gòu)的XML 文件,存儲(chǔ)結(jié)構(gòu)如圖7 所示。
圖7 測(cè)試用例存儲(chǔ)結(jié)構(gòu)
圖8 測(cè)試用例自動(dòng)執(zhí)行結(jié)果
當(dāng)函數(shù)讀取到SendData 節(jié)點(diǎn)時(shí)會(huì)發(fā)送相應(yīng)的數(shù)據(jù)。SendData 節(jié)點(diǎn)中存儲(chǔ)需要發(fā)送的數(shù)據(jù)名稱,根據(jù)該名稱函數(shù)會(huì)調(diào)用自動(dòng)生成測(cè)試數(shù)據(jù)函數(shù)來(lái)生成相應(yīng)的數(shù)據(jù)。filledByTester屬性用于標(biāo)識(shí)該數(shù)據(jù)中是否有需要測(cè)試人員填寫(xiě)的數(shù)據(jù),如果其值為true,則測(cè)試者可以選擇本地已有的存儲(chǔ)數(shù)據(jù)的文件作為發(fā)送數(shù)據(jù),防止每次發(fā)送相同的數(shù)據(jù)時(shí)都需要測(cè)試者自己填寫(xiě)數(shù)據(jù)內(nèi)容。如果發(fā)送的數(shù)據(jù)需要構(gòu)造某些異常,則需要errorType屬性。自動(dòng)執(zhí)行測(cè)試用例函數(shù)會(huì)根據(jù)errorType 屬性的不同來(lái)更改發(fā)送數(shù)據(jù)的相應(yīng)字段,以構(gòu)造相應(yīng)的異常數(shù)據(jù)。當(dāng)發(fā)送的數(shù)據(jù)是消息錯(cuò)誤應(yīng)答,該反饋中需要填寫(xiě)錯(cuò)誤類型代碼時(shí),則填入errorCode屬性值。
測(cè)試用例自動(dòng)執(zhí)行結(jié)果如圖8 所示。
本文通過(guò)分析當(dāng)前北京AFC 系統(tǒng)異常連接測(cè)試過(guò)程中存在的問(wèn)題,找出了影響測(cè)試效率的瓶頸。通過(guò)總結(jié)歸納測(cè)試數(shù)據(jù)和測(cè)試流程步驟,將測(cè)試數(shù)據(jù)分為六類,測(cè)試流程步驟分為兩類,并將這些特點(diǎn)信息存儲(chǔ)于XML 文件中,由異常連接測(cè)試工具自動(dòng)解析處理,開(kāi)發(fā)實(shí)現(xiàn)了具有自動(dòng)生成測(cè)試數(shù)據(jù)、自動(dòng)執(zhí)行測(cè)試用例功能的異常連接測(cè)試工具,為測(cè)試提供了一種可選的新手段。數(shù)據(jù)結(jié)構(gòu)和測(cè)試用例步驟的可定制性,以及界面的友好性將是下一步工作的重點(diǎn)。
[1] Ampelas A.Automatic fare collection[C]//Proceedings of Intelligent Transportation Systems,2001:1164-1166.
[2] 趙菁.試論城市軌道交通(AFC)系統(tǒng)運(yùn)營(yíng)數(shù)據(jù)分析與運(yùn)營(yíng)管理[J].城市建設(shè),2010(11):128-129.
[3] 陳偉欣,楊俊輝,肖力揚(yáng).基于Web 的城市軌道AFC 仿真測(cè)試平臺(tái)設(shè)計(jì)[C]//第十屆中國(guó)科協(xié)年會(huì)論文集(一),鄭州,2008:284-287.
[4] 黃鐘.自動(dòng)售檢票通用測(cè)試平臺(tái)的構(gòu)建[J].城市軌道交通研究,2006,9(12):32-35.
[5] 徐高峻.自動(dòng)售檢票系統(tǒng)模擬測(cè)試平臺(tái)的組建與應(yīng)用[C]//2010 城市軌道交通關(guān)鍵技術(shù)論壇論文集,上海,2010:503-506.
[6] 張志敏.針對(duì)AFC 系統(tǒng)的自動(dòng)化測(cè)試工具研究與實(shí)現(xiàn)[D].長(zhǎng)沙:湖南大學(xué),2010.
[7] 葉皚.自動(dòng)售檢票軟件測(cè)試方法及其工具應(yīng)用研究[D].上海:東華大學(xué),2010.
[8] 徐煒煒,徐駿善,葉飛.自動(dòng)售檢票系統(tǒng)中車(chē)站信息管理系統(tǒng)的研究與設(shè)計(jì)[J].城市軌道交通研究,2012(5):53-56.
[9] 潘穎芳.城市軌道交通AFC 系統(tǒng)體系結(jié)構(gòu)分析與研究[J].信息技術(shù),2012(2):166-168.
[10] 裴順鑫,張寧.地鐵自動(dòng)售檢票系統(tǒng)的互聯(lián)標(biāo)準(zhǔn)[J].都市快軌交通,2007(5):38-41.
[11] 陳鵬輝.城市軌道交通自動(dòng)售檢票系統(tǒng)的現(xiàn)狀與發(fā)展趨勢(shì)[J].城市軌道交通研究,2009(5):10-12.
[12] 蔡佳妮.自動(dòng)售檢票系統(tǒng)檢測(cè)中心檢測(cè)理念與實(shí)施策略[J].城市軌道交通研究,2011(1):24-28.
[13] 鄔晶亮.基于XML 的半結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)和查詢的研究與實(shí)現(xiàn)[D].上海:上海交通大學(xué),2006.
[14] Bertolino A,Gao J,Marchetti E,et al.Automatic test data generation for XML schema-based partition testing[C]//Proceedings of the 2nd International Workshop on Automation of Software Test.[S.l.]:IEEE Computer Society,2007.
[15] 朱菊,王志堅(jiān),楊雪.基于數(shù)據(jù)驅(qū)動(dòng)的軟件自動(dòng)化測(cè)試框架[J].計(jì)算機(jī)技術(shù)與發(fā)展,2006(5):68-70.