李天翼
(中國鐵道科學研究院 電子計算技術研究所,北京 100081)
12306互聯網售票系統測試的實現
李天翼
(中國鐵道科學研究院 電子計算技術研究所,北京 100081)
12306互聯網售票系統是中國鐵路重要的生產系統之一,直接面向廣大旅客提供票務服務,該系統的穩定運行離不開合理有效的測試。軟件測試是提高軟件系統質量的重要手段,對于不同的系統,測試的手段和方法也不盡相同,文章從功能、性能、可靠性、安全性等方面系統地介紹了12306互聯網售票系統的測試需求和測試過程。
12306;互聯網;軟件測試
12306互聯網售票系統是在中國鐵路客票和預訂系統基礎上,拓展互聯網售票、手機售票等功能構建的電子商務系統。2011年6月12日,系統投入試運行,其后進行過若干次升級,對系統架構、網絡布局、應用功能、業務流程等進行了持續的優化和改進,從而大幅提升了系統的處理能力、運行穩定性和用戶體驗。
測試是確保系統質量的重要手段,在12306互聯網售票系統的歷次版本升級過程中,合理有效地測試是必不可缺的一個環節。通過對系統進行全面的測試,修復軟件、硬件、網絡、應用等各方面存在的缺陷,驗證系統的功能、性能、可靠性、易用性和安全性等方面能夠滿足設計需求,同時為系統的下一次升級工作提供數據支撐。
12306互聯網售票系統整體上采用了雙中心架構,在中國鐵路總公司部署第一生產中心(簡稱:一中心),在中國鐵道科學研究院部署第二生產中心(簡稱:二中心)。為提高系統安全性,網絡上采用了三級結構,分別是外網、內網和客票網,系統的體系結構如圖1所示。
12306互聯網售票系統采用虛擬化技術實現了一中心和二中心的雙活架構,兩個中心采取相同的部署,互為備份,各自擁有獨立的Web、AS、排隊系統、緩存服務集群、車票查詢集群、用戶數據集群、交易中間件和電子客票庫。正常情況下雙中心同時在線提供服務,其中任意一個中心發生故障時可由另外一個中心承載全部的售票業務。
基于12306互聯網售票系統特殊的體系架構,為了組織好系統測試工作,測試人員需要更加了解系統架構和系統組成,理清系統的模塊組成,各模塊之間的接口類型和接口測試需求,掌握基本的數據流向。
2.1 功能測試需求
12306互聯網售票系統的功能測試主要包括:功能點測試、業務流程測試和用戶界面測試等。

圖1 12306互聯網售票系統體系架構
通過測試系統整體的業務流程,驗證業務能否正常流轉、流轉內容是否正確、能否完成業務處理、異常業務的容錯處理等;基本功能測試過程中針對各功能點設計測試用例,需要通過對數據的輸入、處理、輸出及異常輸入,驗證系統的功能是否正確;用戶界面好壞決定了用戶對系統的第一印象,設計良好的界面能夠引導用戶自己完成相應操作,起到向導的作用,所以還要進行全面的UI測試,提升用戶體驗度。
2.2 性能測試需求
性能測試的目標是對12306互聯網售票系統關鍵功能點的性能進行測試和驗證,在時間特性和資源利用性兩個方面考察系統的整體性能表現。性能測試應在滿足大用戶量、大數據量和長時間穩定運行的前提下開展。通過對歷年互聯網售票高峰期數據進行統計分析,性能測試的目標應滿足日均售票1 000萬張的處理能力。
2.3 安全測試需求
作為電子商務系統,12306互聯網售票系統的安全問題不容忽視。為了保障旅客資金和鐵路票款的安全,需要對系統的網絡安全、主機安全、應用安全、數據安全及備份恢復等進行全面的安全性測試。
2.4 其它特性測試需求
除了一般功能特性,還需要重點關注系統的可靠性和兼容性。可靠性是指系統在規定的時間和條件下不出現故障,可靠性測試重點考慮軟件、硬件和雙活架構的可靠性。兼容性測試是指軟件在不同的軟硬件平臺上是否能夠正常運行的測試,主要測試12306網站在不同瀏覽器上的表現是否正常;手機APP在不同手機上安裝、卸載、運行、流暢性以及分辨率等。
3.1 功能測試實現
12306互聯網售票系統共劃分了售票、退票、改簽、變更到站等基本功能,以及個人信息、聯系人、訂單信息、保險、旅客服務等輔助功能,還有行程沖突控制、用戶Session控制、黑名單控制、身份核驗等特殊功能總計幾十項。功能測試以黑盒測試為主,綜合運用等價類、邊界值、因/果圖、錯誤推測等方法設計測試用例,形成完整的測試用例庫。測試用例設計時充分考慮了每一個功能點的適合性、準確性和可操作性;同時根據需求手冊分別對應用系統中的業務流程進行分析和設計,除了主流程還要對每一個分支流程進行測試,測試順序為先測主流程后測分支流程。
在測試手段上,采用了手工測試、自動化測試和第三方測試相結合的方式。通過手工執行測試用例庫的方式對功能點和業務流程進行覆蓋式測試。通過開發了部分主要功能點和業務流程的測試腳本,使用自動化測試工具,實現Firefox、Chrome、Opera、Safari、IE等主流瀏覽器的兼容性測試。對部分需要大數據量的功能測試也使用了自動化測試工具輔助完成,從而有效地減少了測試時間,提高了測試的準確性。針對手機售票,借助第三方測試平臺對手機APP進行TOP600的兼容性測試,測試結果表明手機軟件適用于市場95%以上的主流手機。
自12306互聯網售票系統上線至今,共對17個大版本和超過100個以上的小版本進行測試,累積設計業務場景1 000多個,編制測試用例9 000多個,執行測試用例超過100萬次,系統上線后的總缺陷率小于1‰,有效保障了旅客順利完成購票。
3.2 性能測試實現
12306網站的日訪問量極大,高峰期的日瀏覽量(PV)已達到300億次以上,性能測試的重點是要保證大規模用戶量情況下的網絡購票流程及相關操作可以正常進行。
由圖1可知,系統設計上采用了業務分區的模式來滿足旅客不同的業務需求,其中購票業務是測試重中之重,旅客購票的核心操作包括系統登錄、車票查詢、車票預訂、常用聯系人查詢、訂單支付、訂單查詢等,這些核心操作對應了系統的各業務分區。性能測試時采用單業務場景和混合業務場景的模式分別對系統的處理能力進行驗證。單業務場景測試可以得知系統各業務分區的極限處理能力,混合業務場景測試可以得到系統的綜合處理能力。
為真實模擬互聯網用戶購票的操作行為,我們利用公有云平臺部署性能測試軟件,通過12306網站測試域名發起壓力,在性能測試時實現模擬同時在線用戶數不少于20萬,模擬單日訂票張數不少于1 000萬,模擬訂票系統吞吐量(TPS)不低于600筆/s,模擬電子支付TPS不低于420筆/s。為了模擬上述指標,我們的測試團隊專門開發了T-Ticket測試平臺,開發了上述關鍵節點的壓力測試腳本,目前已經累計執行壓力測試10 000 h以上,發現了軟件方面的性能瓶頸33個,硬件方面的性能瓶頸17個,并及時進行了修復和調優。經過努力,12306互聯網售票系統的運行穩定性、處理能力穩步上升,不僅日處理能力從最早的不足200萬張上升到了當前的1 000萬張,而且之前經常出現的系統難以登錄、長時間排隊、訂單不能查詢等情況也得到了明顯的改善。在2016年春運售票期間,系統創出了單日售票量600多萬張的最高紀錄,2016春運售票區間內系統一直平穩運行,未出現任何影響旅客購票體驗的情況。
3.3 安全測試實現
12306互聯網售票系統的網絡架構分為外網、內網和客票專網區域,安全測評范圍為外網和內網。識別被測系統的整體結構、邊界和網絡區域劃分,選取各區域重要設備和軟件系統,并覆蓋不同設備類型、操作系統和數據庫系統分別進行檢查和測試。
檢查是指對測試對象進行觀察、調查、評審、分析或核查的過程,檢查包括:對安全配置的核查、對安全策略的分析和評審等,需要對網絡設備、安全設備、主機設備等進行配置核查,通過查看設備的配置項是否合理、安全策略是否啟用來檢查設備是否實現相應的安全防護功能。
測試是指在特定環境中運行一個或多個評估對象(限于機制或行為)并將實際結果與預期結果進行比較的過程。測試可以分為手工測試和工具測試。手工測試主要采用黑盒測試方法對安全功能進行測試,通過設計、執行測試用例驗證系統安全功能,并通過人工訪談方式對采集到的測試結果進行補充和確認,進行綜合分析。工具測試主要指采用自動化的方式(包括工具、腳本等)獲得系統漏洞并進一步采用工具進行驗證,包括端口掃描測試、漏洞掃描測試和滲透測試。利用工具可以檢查出Web應用和主機操作系統存在的各種程序或腳本存在的安全漏洞,如SQL注入漏洞、跨站腳本、跨站請求偽造漏洞等。此類漏洞是目前引起網絡安全風險的重要原因。除以上安全漏洞掃描工具外,12306互聯網售票系統測試還采用了網絡監控工具,對被測試軟件所發出的數據包進行截獲,查看是否可以截獲到用戶敏感信息,如用戶登錄密碼等。
3.4 雙活測試實現
12306互聯網售票系統采用了一中心和二中心的雙活架構,雙活架構是指在一中心和二中心同時在線,同時為旅客提供服務。為保證雙活模式能夠發揮作用,必須針對性的進行雙活測試,方法就是模擬某個中心全部或部分應用出現故障無法提供服務時,驗證另一個中心的相同應用是否能夠及時接管,從而保證整個系統可以繼續正常運行。
根據系統的架構,分析業務必要性、重要性,我們組織了以下雙活測試場景:(1)排隊系統切換測試:模擬一個中心的排隊系統出現故障,另一個中心的排隊系統是否可以及時接管服務。(2)用戶中心雙活測試:模擬一個用戶中心故障,另一個用戶中心接管,通過登錄用戶、常用聯系人和核驗后用戶的信息正確性來驗證用戶中心雙活。在數據庫切換前完成注冊新用戶、修改用戶信息和常用聯系人信息,切換數據庫后驗證新注冊用戶是否可以登錄,修改的信息是否保存正確,對用戶購票操作是否有影響 。(3)電子客票庫雙活測試:模擬一個中心的承載電子客票數據庫的物理機中出現故障,同中心備份數據庫、異中心備份數據庫和同中心運行數據庫,是否可正常接管服務,且對故障前后旅客的訂單信息無影響。(4)整體雙活測試:驗證一個中心出現故障,無法提供服務后,另一個中心是否可以正常、及時地接管全部服務。以上場景在測試時,均采取人為模擬制造故障的方式,查看故障前后的業務是否正常。
完整的測試流程是由測試需求分析、測試設計、測試執行、測試總結等過程組成,測試執行又具體劃分為單元測試、集成測試、系統測試、驗收測試等環節。由于篇幅有限,本文主要描述了12306互聯網售票系統測試階段的方法與實現,系統實際測試時不只是包含了本文所述的內容。測試不僅僅是局限于發現問題和解決問題,它還是提高12306互聯網售票系統服務質量的重要手段,只有做好產品,才能讓12306互聯網售票系統擁有更好的使用價值,得到市場的廣泛認可。
[1]朱建生,王明哲,楊立鵬.12306互聯網售票系統的架構優化及演進[J].鐵路計算機應用,2015,24(11):1-4.
[2]馮 菲,李天翼,于 澎.鐵路互聯網售票系統自動化測試研究與實現[J].鐵路計算機應用,2015,24(11):24-26.
[3]朱建生,周亮瑾,單杏花,等.新一代客票系統總體架構研究[J].鐵路技術創新,2012(4):93-97.
責任編輯 陳 蓉
Testing of 12306 Internet Ticketing and Reservation System
LI Tianyi
( Institute of Computing Technologies,China Academy of Railway Sciences,Beijing 100081,China)
12306 Internet Ticketing and Reservation System is one of the most important production systems in China railway,directly faces the passengers to provide ticketing services.The stable operation of the System is inseparable from the rational and effective testing.Software testing is an important means to improve the quality of software systems,for different systems,means and methods of testing are not the same.This article introduced test requirements and test process of 12306 Website platform from the aspects of functionality,performance,reliability,security,and so on.
12306 Website;Internet;software testing

U293.22∶TP39
A
1005-8451(2016)10-0027-04
2016-02-01
李天翼,副研究員。