丁順英,李天翼
(中國鐵道科學(xué)研究院集團有限公司 電子計算技術(shù)研究所,北京 100081)
鐵路12306 互聯(lián)網(wǎng)售票系統(tǒng)(簡稱:12306)是在中國鐵路客票發(fā)售和預(yù)訂系統(tǒng)基礎(chǔ)上,拓展互聯(lián)網(wǎng)售票、手機售票等業(yè)務(wù)而構(gòu)建的電子商務(wù)系統(tǒng)[1],為廣大旅客提供服務(wù)。12306 作為中國鐵路重要的售票渠道,用戶規(guī)模龐大,任何缺陷在海量用戶的沖擊下都可能引起系統(tǒng)災(zāi)難,因此,測試是減少12306的缺陷、規(guī)避系統(tǒng)風(fēng)險和確保系統(tǒng)質(zhì)量不可缺少的重要環(huán)節(jié)。12306 的測試從系統(tǒng)設(shè)計就開始介入,覆蓋測試分析、測試需求、案例設(shè)計、單元測試、集成測試、系統(tǒng)測試、驗收測試等階段[2];測試范圍包括票務(wù)主線業(yè)務(wù),以及保險、餐飲、旅游、酒店、廣告等支線業(yè)務(wù)。因此,如何有效合理地選擇和應(yīng)用測試技術(shù)對12306 的穩(wěn)定性至關(guān)重要。
采用自動化測試技術(shù),可以完成12306 票務(wù)主流程變更后的回歸測試和分支流程變更后票務(wù)主流程的驗證性測試;采用測試模擬器技術(shù),可以完成在內(nèi)部子系統(tǒng)或關(guān)聯(lián)系統(tǒng)不可用、關(guān)聯(lián)系統(tǒng)性能不達(dá)標(biāo)、測試數(shù)據(jù)無效等客觀情況下對系統(tǒng)的測試;在系統(tǒng)正式部署完成后,采用云測試技術(shù),可以完成模擬真實用戶在生產(chǎn)系統(tǒng)上進行的測試;采用兼容性測試技術(shù),能夠使12306 在最大程度上滿足用戶的使用需求和使用體驗。本文詳細(xì)介紹上述幾種測試關(guān)鍵技術(shù)在12306 測試中的應(yīng)用。
在12306 測試過程中,采用了多種測試分析方法,以滿足系統(tǒng)不同階段的測試需求[3]。
在單元測試和集成測試階段,主要采用基于功能界面的分析方法:
(1)梳理各子系統(tǒng)的單個功能,分析每個功能的測試需求,包括正常測試需求和異常測試需求;
(2)識別系統(tǒng)內(nèi)和系統(tǒng)間功能的關(guān)聯(lián)性,并根據(jù)功能的關(guān)聯(lián)性進行功能組合或功能交叉的測試需求分析;
(3)根據(jù)以上分析結(jié)果,最終形成測試需求文檔。
文檔分為單一功能測試需求和功能組合測試需求兩部分。當(dāng)新增子系統(tǒng)時,只需要關(guān)注子系統(tǒng)的新功能和關(guān)聯(lián)子系統(tǒng)的交叉功能。在該階段,可以采用自動化測試技術(shù)完成系統(tǒng)新增功能后的主流程測試;采用測試模擬器技術(shù)完成功能測試。
在系統(tǒng)測試和驗收測試階段,采用基于業(yè)務(wù)流程和規(guī)則的分析方法:
(1)根據(jù)系統(tǒng)設(shè)計,將12306 劃分為票務(wù)主線業(yè)務(wù),以及積分、保險、餐飲等分支業(yè)務(wù);
(2)詳細(xì)劃分各類業(yè)務(wù),如票務(wù)業(yè)務(wù)中由用戶信息、信息查詢、購票、訂單處理、支付等下一級業(yè)務(wù)組成,用戶信息又可以分為用戶注冊、信息修改、用戶注銷等子業(yè)務(wù);
(3)分析各類業(yè)務(wù)的流轉(zhuǎn)過程,標(biāo)識每一種業(yè)務(wù)對不同情況的處理流程和處理規(guī)則,形成完整業(yè)務(wù)流路徑,分析每個分支路徑的測試需求,并確認(rèn)業(yè)務(wù)流對應(yīng)的系統(tǒng)功能;
(4)根據(jù)以上分析結(jié)果,最終形成業(yè)務(wù)流程的測試需求文檔。
此種分析方法在業(yè)務(wù)流程規(guī)則變化或增加新業(yè)務(wù)時,需不斷地完善和整合。在該階段,采用云測試技術(shù)可以完成以業(yè)務(wù)流程測試為主要目標(biāo)的測試任務(wù);在系統(tǒng)測試階段,采用兼容性測試技術(shù),可提前發(fā)現(xiàn)在不同機型、不同系統(tǒng)中的缺陷,以滿足更多用戶的使用需求。
12306 在票務(wù)主流程上和一些分支上采用自動化測試技術(shù),用以解決票務(wù)主流程變更后的回歸測試和分支流程變更后票務(wù)主流程的驗證性測試。為了更好地利用自動化測試技術(shù),12306 的自動化測試采用測試數(shù)據(jù)、測試腳本、測試配置分離的處理方式,同時,加入了測試管理、測試執(zhí)行、測試結(jié)果統(tǒng)計分析等相關(guān)功能。
2.1.1 測試方法
12306 的測試數(shù)據(jù)全部存放于測試數(shù)據(jù)庫中,數(shù)據(jù)按照類型進行結(jié)構(gòu)化、條件化存放,如用戶信息、車次信息、車站信息、席位信息、票價信息等。在測試準(zhǔn)備階段,根據(jù)業(yè)務(wù)需求進行測試數(shù)據(jù)組織,而對于一些復(fù)合數(shù)據(jù),可以通過已有的測試數(shù)據(jù)重新生成并存放在測試數(shù)據(jù)庫中,也可以在測試過程中使用腳本;測試任務(wù)執(zhí)行完成后,將測試結(jié)果存放于數(shù)據(jù)庫中進行統(tǒng)計與分析。
2.1.2 測試應(yīng)用
將進行自動化測試的腳本分成功能級腳本和業(yè)務(wù)流腳本,功能級腳本指的是與被測系統(tǒng)完成一個特定功能或交易的一系列交互操作,如用戶登錄、余票查詢、聯(lián)系人查詢、扣票、支付等[4];業(yè)務(wù)流腳本是指按一定業(yè)務(wù)邏輯將多個功能級腳本串聯(lián)起來組成的復(fù)合腳本,如完整的購票流程、退票流程、改簽流程等。在功能級腳本和業(yè)務(wù)流腳本完成的基礎(chǔ)上,進行測試場景的編寫,具有業(yè)務(wù)關(guān)聯(lián)的多個案例(包括功能案例和業(yè)務(wù)案例)組織到一起形成集合??蓪?zhí)行過程中涉及到的執(zhí)行設(shè)備、執(zhí)行次數(shù)、執(zhí)行時間等進行參數(shù)化配置,同時,在系統(tǒng)中增加了任務(wù)調(diào)度功能,滿足無人值守下的測試執(zhí)行、結(jié)果收集和報表生成。
引入自動化測試技術(shù),可以減少人工測試的繁瑣,并且保障測試的一致性和可重復(fù)性,從而提高測試效率[5]。但是,采用自動化測試技術(shù),測試腳本開發(fā)周期長、人力和時間成本較高[6];加之12306 產(chǎn)品迭代頻繁,會導(dǎo)致自動化測試腳本變化頻繁、不易維護;對于短期項目,測試腳本的復(fù)用度低,依然無法完全替代手工測試實現(xiàn)功能、業(yè)務(wù)流程的全覆蓋。
測試模擬器類似于訓(xùn)練飛行員的模擬艙,利用測試模擬器,可構(gòu)建被測試應(yīng)用系統(tǒng)的完整測試環(huán)境,在高度仿真的環(huán)境中,能夠支持應(yīng)用系統(tǒng)的功能、性能等測試[7]。
2.2.1 測試方法
12306 內(nèi)部由幾十個子系統(tǒng)組成,對外關(guān)聯(lián)若干系統(tǒng)。在測試過程中,經(jīng)常會遇到內(nèi)部系統(tǒng)不可用、關(guān)聯(lián)模塊開發(fā)未完成、關(guān)聯(lián)系統(tǒng)性能不達(dá)標(biāo)、測試數(shù)據(jù)無效、網(wǎng)絡(luò)訪問限制/訪問費用高等原因影響測試進度,為此,采用了測試模擬器技術(shù)。測試模擬器可直接在應(yīng)用層模擬內(nèi)部子系統(tǒng)或關(guān)聯(lián)系統(tǒng)的行為,支持HTTP、HTTPS、TCP、UDP、Socket 等多種通信協(xié)議,并可根據(jù)系統(tǒng)要求定義XML、JSON、SOAP 等多種報文格式,支持請求端模擬、響應(yīng)端模擬、請求/響應(yīng)、響應(yīng)/轉(zhuǎn)發(fā)等多種場景,支持報文延遲、報文丟失、報文失敗錯誤等特殊場景的模擬。
2.2.2 測試應(yīng)用
12306 的席位數(shù)據(jù)存放于18 個鐵路局集團公司客票中心的幾十個席位數(shù)據(jù)庫節(jié)點中,旅客購票、改簽(變更到站)、退票等信息都存儲在席位數(shù)據(jù)庫中,旅客購票后的訂單信息、電子票信息、實名制信息等存放于20 組電子票庫節(jié)點中[8]。在測試環(huán)境中,搭建了北京、上海、廣州等3 個客票中心的4個席位數(shù)據(jù)庫節(jié)點,其它的全部采用測試模擬器實現(xiàn),測試模擬器替代了應(yīng)用服務(wù)+席位數(shù)據(jù)庫的功能。針對電子票庫節(jié)點,采用同樣的處理方式,搭建3組電子票庫節(jié)點,其余的采用測試模擬器實現(xiàn)。
測試模擬器在模擬外聯(lián)系統(tǒng)中也發(fā)揮了重要作用,典型的應(yīng)用就是電子支付環(huán)境的模擬,由于旅客的支付行為全部是在銀行、支付寶和微信等第三方平臺進行,測試環(huán)境中不具備建立第三方支付系統(tǒng)的能力,因此,通過模擬第三方支付系統(tǒng)的通信協(xié)議和報文格式,可滿足隨時支付的測試要求;其他外聯(lián)的保險、積分、餐飲、旅游等系統(tǒng)的測試也可采用測試模擬器實現(xiàn)。
采用測試模擬器技術(shù)的測試環(huán)境軟/硬件等基礎(chǔ)框架可復(fù)用,所以,節(jié)約了基礎(chǔ)框架塔建成本;可縮短測試周期,將系統(tǒng)從不可測變?yōu)榭蓽y,測試提前介入,節(jié)約時間成本;可模擬各種業(yè)務(wù)情況,特別是異常測試,提高測試覆蓋率,提升測試效率和質(zhì)量;在性能測試中,測試模擬器的性能一般高于被測系統(tǒng),不會成為性能測試的瓶頸。
云測試是基于云計算的一種新型測試技術(shù),可以模擬用戶遠(yuǎn)端訪問和7×24 h 不間斷測試[9]。
2.3.1 測試流程
用戶在本地編寫并調(diào)試自動化測試腳本,將調(diào)試后的自動化測試腳本上傳到云測試平臺,在平臺上配置運行自動化測試腳本的目標(biāo)地址、運行時長、開始時間等參數(shù),實現(xiàn)對12306 的自動化測試。同時,云測試平臺具有腳本錄制并生成、腳本線上編輯、腳本驗證和結(jié)果展示等功能。
2.3.2 測試應(yīng)用
12306 云測試的范圍主要以流程測試為主,在系統(tǒng)部署完成后,模擬真實的用戶在生產(chǎn)系統(tǒng)進行測試,測試內(nèi)容包括:編寫用戶登錄、查詢發(fā)/到站余票、選擇車次預(yù)訂、添加乘車人、提交訂單、支付。測試流程覆蓋用戶購票的全部操作,并在每一步操作后進行預(yù)期結(jié)果驗證,同時,記錄錯誤結(jié)果。將測試腳本分發(fā)到多臺云計算節(jié)點上,按需生成虛擬用戶運行測試腳本,從互聯(lián)網(wǎng)端對系統(tǒng)施壓,實時查看壓力測試的結(jié)果;可設(shè)置少量用戶進行7×24 h不間斷運行測試,測試12306 的可用性。
借助云測試平臺模擬真實的用戶進行測試,不需要購買不同應(yīng)用的測試軟件、不需要進行復(fù)雜的網(wǎng)絡(luò)部署,能夠有效降低測試成本,節(jié)省測試機器、網(wǎng)絡(luò)準(zhǔn)備等環(huán)節(jié)的時間,進而縮短搭建測試環(huán)境的時間,提高測試效率[10]。
兼容性測試是指測試軟件在特定的硬件平臺上、不同的應(yīng)用軟件之間、不同的操作系統(tǒng)平臺、不同的網(wǎng)絡(luò)環(huán)境中進行的測試[11],手機App 兼容性測試還包括在不同機型、不同系統(tǒng)上進行的測試。
2.4.1 必要性
智能手機的普及率越來越高,無論是在系統(tǒng)還是軟/硬件環(huán)境方面,種類繁多。目前,鐵路12306手機App 訂票比率已超過70%,手機App 在各種機型和系統(tǒng)上的運行狀況各不相同,若手機App 的兼容性出現(xiàn)問題,不僅會影響用戶的使用體驗,更嚴(yán)重的還會導(dǎo)致用戶流失,因此,需要進行兼容性測試,最大程度地使更多的用戶能夠正常使用軟件。
2.4.2 測試應(yīng)用
12306 手機App 兼容性測試范圍主要包括與硬件設(shè)備的兼容性、與操作系統(tǒng)的兼容性、分辨率兼容性、網(wǎng)絡(luò)運營商兼容性、與其他軟件的兼容性、軟件版本向前/向后兼容性等。作為功能測試的一部分,兼容性測試著重考慮的測試功能點包括安裝測試、卸載測試、啟動測試、運行測試、核心功能測試(購票、支付、改簽、退票、訂單查詢等)、用戶界面測試等[12]。12306 手機App 兼容性測試考慮的因素及在不同的測試范圍下的測試功能點舉例,如表1所示。通過兼容性測試,檢查手機App 是否有報錯或者崩潰發(fā)生,并記錄錯誤發(fā)生時界面效果,截取系統(tǒng)運行日志等關(guān)鍵信息,根據(jù)問題進行分類和優(yōu)化分析,為手機App 的進一步優(yōu)化提供依據(jù)。
表1 12 306 手機 App 兼容性測試主要內(nèi)容及測試功能點舉例
12306 手機App 兼容性測試能在最大程度上滿足廣大用戶的使用需求和使用體驗。但是,兼容性測試成本較高,機型的選擇是考慮的重點。
本文分析了12306 在軟件測試各個階段使用的測試方法和測試技術(shù)。重點研究了自動化測試、測試模擬器、云測試、手機App 兼容性測試等技術(shù)及其在12306 測試中的具體應(yīng)用。12306 的測試工作伴隨著12306 的成長和發(fā)展,是一個持續(xù)集成與不斷演進的過程,隨著測試管理、測試技術(shù)、測試能力的不斷提高,測試工作將在12306 的發(fā)展過程中發(fā)揮更加重要的作用。