馮 菲,楊佳愉,李天翼,于 澎
(1.中國鐵道科學研究院集團有限公司 電子計算技術研究所,北京 100081;2.北京經緯信息技術有限公司,北京 100081)
2013年12月,鐵路手機售票公共服務平臺(簡稱:12306手機APP)正式上線,推出了Android和IOS兩個主流平臺版本的客戶端,作為窗口、自動售票機和電話訂票等傳統售票渠道的補充,12306互聯網售票系統(簡稱:12306)網站的延伸。系統推出后經過多次版本升級,累積了豐富的測試經驗。目前,客戶端總裝機量超過3億,已經成為旅客購票的重要渠道。
隨著12306 手機APP軟件的規模增大、復雜度增加以及質量需求的提高,對其測試技術、測試質量、測試效率提出了更高要求。平臺推出1.0版本時,主要以基本功能測試、業務流程測試、UI界面測試為主;為了保證平臺的穩定性,針對APP的后臺模塊進行了負載、壓力、配置、并發、可靠性、失效恢復等性能測試;為了保護客戶信息和系統數據,阻擋非法訪問,對平臺進行了整體的安全性測試。隨著12306網站注冊用戶的增加、APP裝機量的迅速增長,在2.0版本推出時,引入了兼容性測試,測試應用在不同的機型、系統平臺、分辨率、網絡、廠商、數據的兼容性;為了保證APP在不同機型的響應速度、資源合理占用,使用過程中與手機其他功能的正常切換,進行了APP在手機上的性能測試和交叉事件測試。平臺推出3.0版本,為了更好地提升用戶體驗、及時了解客戶反饋,對平臺進行A/B測試和灰度發布。引入多種測試方法,通過對平臺進行全面測試,修復軟件、硬件、網絡、應用等各方面存在的缺陷,驗證平臺的功能、性能、可靠性、易用性和安全性等方面能夠滿足設計需求,同時為平臺的下一次升級工作提供數據支撐[1]。
手機APP的功能測試,和常規的軟件測試一樣,要驗證系統是否滿足了用戶需求說明書及相關設計文檔中的業務需求。另外,基于手機APP使用平臺的特點,還要從APP啟動、前后臺間的切換、免登陸、離線瀏覽、APP更新、獲取定位信息、獲取相機權限等方面進行測試。
性能測試,主要測試 APP在極限的時間或空間特性下的狀態反應[2]。一般包含兩個方面:(1)APP安裝、卸載及執行各類功能操作時的響應時間。(2)反復執行安裝卸載或反復執行某一功能時對手機軟硬件資源的占用情況。性能測試主要評估 APP的時間和空間特性,APP性能的好壞直接影響 APP未來的發展[3]。
手機APP兼容性測試,一般包含兩個方面:(1)APP與手機操作系統軟件及其它應用程序的兼容性。(2)APP與手機硬件(不同品牌、不同的屏幕分辨率)的兼容性。
安全測試是檢查軟件中已存在的安全性、保密性措施是否有效的測試[4]。針對移動APP的安全測試包括:安裝包測試、敏感信息測試、軟鍵盤劫持、賬戶安全、數據通信安全、組件安全測試、服務器接口[5]。
手機APP的安裝測試,一般包含應用是否能夠正確安裝、是否能夠創建正確的應用圖標、安裝時是否能夠指定安裝位置、是否可以設置自啟動權限等。卸載測試,一般包含卸載文件是否徹底、刪除用戶個人文件時是否會提示、系統及個人配置信息是否還原、是否會影響其它應用的正常使用等。
又稱沖突測試或事件,是一個正在執行的模塊被另一個模塊干擾的測試操作[6]。目前,智能手機的功能越來越多,手機APP的交叉事件測試也相當重要,例如,多個APP是否能夠同時運行、APP在前后臺間切換、APP運行時是否能夠撥打接聽電話、發送接收短信、啟用相機、藍牙設備等。
用戶體驗測試,要以使用者的角度測試APP是否易用,界面是否友好,菜單、操作流程是否簡潔合理,盡可能地提高用戶的使用體驗。用戶體驗性測試的重要目的是判定軟件產品是否能讓用戶快速接受和使用、是否符合用戶習慣等[7]。
除了上述需要重點關注的測試外,還有諸如UI測試、手勢操作測試、客戶端數據庫測試等。
隨著12306手機APP功能的不斷增加,用戶群體的不斷擴大,APP各方面的承受能力都在增加,測試難度和復雜度也隨之上升,對APP的測試包括功能、兼容性、性能和安全性等多方面測試,現分別從功能、性能和兼容性3個方面對12306手機APP測試進行描述。
12306手機APP功能測試的用例設計方法包括等價類劃分法、邊界值分析法、錯誤推測法、場景法等。場景法是通過設計場景來描述軟件,由 Rational公司提出,是黑盒測試技術中重要測試方法之一[8]。簡單來說,場景法是通過將系統的業務流程或功能點通過場景來進行描述,從而更高效地完成測試的一種方法。場景法包含基本流和備選。一個業務僅存在一個基本流,且基本流僅有一個起點和一個終點。備選流為除了基本流之外的各支流,包含多種不同情況[9]。
2.1.1 流程圖
以改簽為例,使用場景法結合相應的業務規則對其測試過程進行闡述。根據業務規則,繪制流程圖如圖1所示。

圖1 場景法流程圖
2.1.2 基本流和備選流
根據場景法,設計基本流和備選流,流程描述如表1所示。

表1 場景法基本流和備選流描述
流運用場景法根據圖1和表1生成場景指導測試,場景舉例如下:
(1)場景1:基本流+E4+E7+E10
改簽原票距開車時間小于48 h,對多張車票進行批量改簽,可選乘車日期為開車前,也可改簽開車后至票面日期當日24:00之間,在查詢結果中選擇某個車次,提交訂單,某乘車人新票與已有車票存在行程沖突,不滿足實名制購票規則,扣票失敗。
(2)場景2:基本流+E4+E9
對購買返程優惠的返程動臥車票進行批量改簽,票面日期距開車時間超過48 h,乘車日期可為預售期內任意一天,查詢并選擇某個動臥車次,購買的車票仍可執行返程優惠,改簽核收的手續費需按照距改簽原票票面乘車站開車的時間進行計算,支付或退差額后,改簽成功。
(3)場景3:基本流+E4+E8+E11
對距開車時間大于30 min的廣深港跨境高鐵列車車票(發站不為香港西九龍)進行批量改簽,改簽新票乘車日期可為預售期內任意一天,查詢并選擇某個車次,提交訂單,支付訂單,廣深港跨境高鐵車票改簽不收取退差額手續費,改簽成功。
客戶端的性能是影響用戶體驗的重要方面,移動客戶端的性能測試指標通常包括安裝時間、啟動時間、CPU占用、圖形處理器(GPU)占用和內存占用等。CPU的性能體現了手機的運算能力,是標志手機性能的主要衡量指標。GPU的性能體現了手機對于圖形圖像的處理能力,GPU占用直接影響手機軟件的輸出效果。內存占用指的是RAM,即手機的運行內存,是體現手機實際處理能力的重要指標,直接影響到手機軟件的運行速度。
12306手機APP應用的性能測試,也是基于上述通用指標完成的,性能測試通常分為3個步驟:(1)設計性能測試用例,分析12306應用的特點,確定要測試的業務功能點,開發測試腳本。再根據市場使用情況,確定待測機型,鑒于手機12306用戶基數龐大,為保證測試準確性、嚴謹性,在選取待測機型時,除了考慮覆蓋最常用的機型(如Top100)外,還會選擇一些配置較低但仍具有一定保有量的機型作為補充。(2)執行性能測試,12306升級頻率高,性能測試工作量大,為了提高性能測試執行效率,節約測試時間,在執行手機性能測試時通過性能測試平臺同時調用多臺手機批量執行性能測試腳本,生成測試結果。(3)分析測試結果,平臺以圖表的形式生成直觀的測試結果,為開發人員進一步優化提供依據。
本文選取V3.X和V4.X兩個版本的測試結果進行比較,如表2所示。其中,安裝時間、啟動時間和CPU占用都明顯得到了優化,安裝時間平均值由25.5 s縮短至17.4 s;啟動時間平均值由4.3 s縮短至1.5 s;CPU占用平均值由3.4%降低至2.6%。GPU占用和內存占用還有優化空間,不排除與UI界面的優化和新增功能有關。

表2 12306手機APPV3.X版本與V4.X版本性能測試結果對比
雖然業界普遍認為,手機APP的兼容性測試是一個高成本、高耗時、低效率的工作,需要投入大量的人力、物力資源,但考慮到12306網站數以億計的手機用戶群體,本著用戶至上的宗旨,每次應用升級前的兼容性測試都是重點工作之一。
12306手機APP的兼容性測試,通常從需求階段開始,依次分為3個階段:測試用例設計階段、執行測試階段、應用上線后的跟蹤測試階段。
2.3.1 測試用例設計階段
通過市場調研并結合歷年來積累的數據,確定當前用戶群體主流手機的系統平臺、廠商品牌、屏幕分辨率等數據,生成APP兼容性測試矩陣,覆蓋盡可能多的手機用戶的同時減少用例的重復和冗余。
在設計用例時我們一般遵守以下原則。
(1)系統版本覆蓋原則:例如Android系統4.3以下版本和IOS系統8.X以下版本當前的用戶使用率均不超過5%,使用份額小,適配難度高,如果項目需求中沒有明確要求支持上述版本,在設計兼容性測試用例時就暫時不予考慮。
(2)版本差異篩選原則:對于使用率較高的版本,通過分析需求設計說明書,與開發人員溝通,了解程序底層交互及接口調用關系,確定重點檢查的頁面和交互,如果多個版本之間的差異并無前端UI和交互變動,則可以繼續進行優化精簡,只需選取某一個版本進行覆蓋。
(3)屏幕分辨率和尺寸覆蓋原則:盡早與開發、設計人員溝通不同分辨率下的適配方案,盡量覆蓋主流分辨率和尺寸,剔除已經不能適配的分辨率和尺寸。
2.3.2 執行測試階段
在測試用例設計階段,已經設計好了兼容性測試用例,能夠保證測試用例執行時的有效性和高效性,執行測試時可以按照一定的策略來提高執行效率,縮短測試周期。
(1)測試執行過程中,不同的迭代輪次可以切換不同測試機執行測試。
(2)在做功能測試時,可以選取以前經常出現兼容性問題的機型進行測試覆蓋,盡早發現更多的兼容性問題。
(3)利用一些測試工具,如STF(TesterHome)平臺提高測試機的利用率,通過PC端遠程控制測試機的方式提高測試執行效率。
(4)利用第3方測試平臺進行兼容性測試,可以輕松完成數百種常用機型的覆蓋,得到事半功倍的效果。
2.3.3 上線后跟蹤測試
12306手機APP上線后,需要進行持續的跟蹤測試,收集廣大用戶的反饋意見,及時發現系統上線前未能發現的兼容性問題,例如,在某些特殊型號上出現的閃退、無法安裝、無法運行等問題,及時進行問題分析總結,并補充到兼容性測試用例矩陣中,為后續版本的測試打好基礎。另外,還需時刻關注主流手機廠商推出的新版本系統,迅速與12306手機APP應用進行適配性測試,適應市場的變化,提升用戶體驗。
除了傳統的測試方法,12306手機APP還進行了A/B測試,為頁面改版、功能設計、業務優化等提供了數據支持。所謂A/B測試,就是對同一個優化目標制定兩個方案,讓一部分用戶使用A方案,同時另一部分用戶使用B方案,統計并比對AB兩個方案的轉化率、點擊量、留存量等指標,以判斷不同方案的優劣進行決策。簡單地說,A/B測試是一種用于提升產品轉化率、優化獲得客戶成本的數據決策方法。
以12306 手機APP的“鐵路暢行”功能為例,“鐵路暢行”推出的目的是將12306網站的注冊用戶轉化為鐵路的積分用戶,積分用戶可以用積分購買鐵路產品。設計團隊設計了兩種方案:(1)A方案,將“鐵路暢行”作為二級菜單放在了“我的12306”下,這種方案對于APP首頁無變動;(2)B方案,將“鐵路暢行”放在了首頁,并將主要功能以BUTTON的形式顯示在主頁面上,如圖2所示。
通過測試配置,分別為兩個方案分配了100萬的外部用戶,經過7天左右的實驗觀察,數據顯示,A方案用戶中由普通用戶轉化為積分用戶的不足0.34%,B方案用戶的轉化率達到了2.97%。為防止樣本隨機性帶來的偏差,第2次分配了100萬的不同用戶,這次,A方案的用戶轉化率為0.38%,B方案的用戶轉化率為3.01%。基于這個實驗結果,最終選擇了版本B推送給了全部用戶,顯著提升了積分用戶的轉化率。

圖2 A/B方案界面圖
本文基于12306手機APP測試工作中的具體實踐,結合當前手機APP測試的一般方法,闡述了這些測試方法在12306手機APP測試中的運用與升華。有效地發現了系統在軟件、硬件、網絡、應用等各方面存在的缺陷,提高了系統的整體質量,驗證和確認了系統的功能、性能、可靠性、易用性和安全性。