2012年2月6日 星期一

手機軟體測試


    手機作為專用的消費類電子產品需要進行以下測試:可靠性測試(對於硬體則是RQT;對於軟體則是field trial);標準符合性測試(FTA);互通性測試(IOT);安全性測試(安規測試);強度測試等。

    其中,有些種類的測試,例如FTA,有嚴格的標準(GSM3GPP等)來明確被測的功能點,測試人員所要做的是在測試用例的編寫中體現出這些功能點,並且儘量營造這些測試用例所需的運行環境來完成測試,並回饋測試結果。但是對於性能測試,就沒有這樣的規範供測試人員來參考,因此性能測試需要進行哪些用例以及用例通過的指標的高低都有很大彈性,在很大程度上受限於測試人員的經驗和專案的資源和進度壓力。如何在資源、進度和品質之間找到平衡點是產品負責人需要考慮的問題,測試人員可以左右的是劃定性能測試的範圍、明確與性能測試相關的設計需求(提高產品的可測試性)以及通過自動化測試工具等手段來進行更加有效的性能測試,提高產品的品質。

    一、手機性能測試的範圍

    性能測試強調長時間、重複或者高強度的進行某些操作,來驗證產品在各種極限條件下的表現。性能測試隸屬於軟體測試中的系統測試,它對軟體在集成系統中運行的性能行為進行測試,旨在及早確定和消除軟體中與構架有關的性能瓶頸。通過對測試資料和log的分析,還可能找出被測系統隱藏的缺陷。終端作為移動通訊類電子產品,其性能測試又主要和其實現的功能相關,大致可分為以下幾類:

    1 時間相關。

    時間相關的性能測試可分為長時間保持測試和限定時間反應測試。

    長時間保持測試主要是測試終端長時間穩定進行某項功能的能力。主要包括長時間待機能力、長時間CS域業務保持能力、長時間PS域業務保持能力、長時間組合業務保持能力等。長時間待機測試,就是根據手機電池的能力連續不間斷待機一定時間(例如4天),之後驗證手機是否還能夠發起主叫和被叫業務,能夠發起主叫,表示終端在長時間待機後自身還處於正常狀態,能夠發起被叫,說明終端在睡眠模式下可以正常接收尋呼。長時間CS域業務保持測試,就是根據手機電池的能力連續不間斷進行語音通話或者視頻通話一定時間(例如2小時),測試通話期間圖像聲音是否連續、清晰,是否有單通現象出現,是否會有手機板子過熱現象。長時間PS域業務保持測試,主要是通過持續進行WWW業務、ftp業務或者流媒體業務一定時間(例如2小時),測試進行資料業務期間上下行資料傳輸率是否穩定,網頁顯示是否流暢,流媒體播放是否連續等。長時間組合業務保持測試,就是同時保持CSPS域業務一段時間,以驗證終端長時間進行組合業務的能力。

    限定時間反應測試主要是測試終端在規定時間內對用戶的操作作出反應,給出操作結果的能力。主要包括開機駐留時延、關機時延、CS域業務接入時延、PS域業務接入時延、本地應用的操作時延等。開機駐留時延,是指從用戶按下開機鍵(終端上電、系統引導、啟動任務、搜索網路、完成位置更新)到終端進入待機介面,提示使用者可以進行正常服務的總時間。關機時延,是指從用戶按下關機鍵(終端完成網路detach、將RAM中修改過的資料寫回flash)到終端完全下電所需的總時間。CS域業務接入時延,是指在進行語音或視頻電話時從按下撥號鍵到聽到對方回鈴聲所需總時間,由於該過程需要在網路側分配資源,所以測試結果可能會受到當前網路資源可用程度的影響,例如在網路負荷高的時候申請CS 64k業務時,網路側需要重新組織或合併無線資源來滿足業務要求,所需時間相對會長一些。PS域業務接入時延,是指在進行資料業務時從開始連接到能正常進行資料業務所需總時間。本地應用的操作時延,是指完成某些本地操作維護功能所需的時間,例如打開電話薄,在電話薄裡查找連絡人,存儲新建的連絡人,存儲短信,存儲多媒體檔,打開流覽器,播放多媒體檔等所需時延,這些時延如果過長,也會極大地降低用戶體驗的滿意度。

    2 次數相關。

    次數相關的性能測試是測試終端重複穩定地進行某項功能的能力。包括開關機成功率、社區初搜成功率、社區重選成功率、CS域業務成功率、PS域業務成功率、組合業務成功率、切換成功率、本地應用的成功率等。這種重複操作包括很多物件被多次創建和釋放,因此可能會發現潛在的記憶體洩漏等問題。開關機成功率測試,主要是檢驗多次開機是否會有實體層不能正確收到初搜命令的情況,關機不完全也可能會導致下一次開機失敗,以及在某些情況下系統死機後只能通過插拔電池板來重新開機。CS域業務成功率的測試,是指通過進行一定次數的主叫或者被叫,統計失敗的次數,對失敗原因進行歸類,分析是否能夠找到和終端相關的失敗原因。PS域業務成功率、組合業務成功率、切換成功率的測試方法也類似。本地應用的成功率包括多次存儲再刪除檔、連絡人、短信等操作,以及多次打開某個應用或執行某類操作來對該應用的穩定性進行測試,找出瓶頸。

    3 併發業務。

    併發測試主要是測試終端同時進行多項業務時表現出的處理能力。例如同時進行CS域語音業務和PS域下載業務,或者在MP3播放的同時進行WWW上網業務,以測試協議棧、作業系統和處理器對併發業務的支援能力。

    4 負載測試。

    負載測試主要是驗證系統的負載工作能力。系統組態不變的條件下,在一定時間內,終端在高負載情況下的性能行為表現。例如同時進行多個ftp下載,使下行傳輸率接近極限值,觀察終端是否可以正常工作。

    二、手機性能測試的方法

    手機性能測試的方法按照自動化程度不同可分為手工測試和自動測試。

    手工測試主要是通過測試人員手動操作,並借助某些監測儀器和工具,來驗證手機性能。但由於手機功能眾多,並且性能測試工作量大,如果單個測試工程師靠手動按鍵來執行所有測試用例,花費的時間少則幾小時,多則需要幾天的時間,這樣耗費大量測試時間的同時也容易讓測試工程師產生疲倦甚至是厭倦心理,很容易造成測試的遺漏。手機測試中常碰到很多重複性高的工作,如發送數條 SMS 或者 MMS 以驗證其收發成功率以及穩定性、連續進行多次呼叫、多次對檔案系統進行添加刪除操作、多工多進程情況下的衝突測試以及極限測試等等,都是重複性高的工作,手動執行的話費時費力,如果能有一套自動執行的機制,將能大大提高測試的效率。

    由此產生了對手機自動化測試工具的需求。手機這種板機的MMI功能測試不同於基於PC上的MMI測試,後者借助PC平臺,目前市場上已有非常多功能強大且通用的自動測試工具支持其測試,如比較典型的有Winrunner Robot Loadrunner等等,但這些工具通常不能相容到象手機這種嵌入式系統中來。這就要求測試人員能夠基於當前平臺進行二次開發,來滿足自動化測試的需求。

    手機的自動化性能測試一般分為以下幾個步驟進行:

    1. 系統分析

    將系統的性能指標轉化為性能測試的具體目標。通常在這一步驟裡,要分析被測系統結構,結合性能指標,制定具體的性能測試實施方案。這要求測試人員對被測系統結構和實施業務的全面掌握。

    2. 建立虛擬用戶腳本

    將業務流程轉化為測試腳本,通常指的是虛擬用戶腳本或虛擬用戶。虛擬使用者通過驅動一個真正的客戶程式來類比真實使用者。在這一步驟裡,要將各類被測業務流程從頭至尾進行確認和記錄,弄清這些過程可以幫助分析到每步操作的細節和時間,並能精確地轉化為腳本。此過程類似製造一個能夠模仿人的行為和動作的機器人過程。這個步驟非常重要,在這裡將現實世界中的單個用戶行為比較精確地轉化為電腦程式語言。如果對現實世界的行為模仿失真,不能反映真實世界,性能測試的有效性和必要性也就失去了意義。

    3. 根據使用者性能指標創建測試場景

    根據真實業務場景,對生成的測試腳本進行複製和控制,轉化為滿足性能測試指標的測試用例集。在這個步驟裡,對腳本的執行制定規則和約束關係。具體涉及到對業務類型,併發時序等參數的設置。這好比是指揮腳本運行的司令部。這個步驟十分關鍵,往往需要結合使用者性能指標進行細緻地分析。

    4. 運行測試場景,同步監測應用性能

    在性能測試運行中,即時監測能讓測試人員在測試過程中的任何時刻都可以瞭解應用程式的性能優劣。系統的每一部件都需要監測:協定棧,MMI應用程式,記憶體佔用情況,驅動程式運行狀態等。即時監測可以在測試執行中及早發現性能瓶頸。

    5. 性能測試的結果分析和性能評價

    結合測試結果資料,分析出系統性能行為表現的規律,並準確定位系統的性能瓶頸所在。在這個步驟裡,可以利用數學手段對大批量資料進行計算和統計,使結果更加具有客觀性。在性能測試中,需要注意的是,能夠執行的性能測試方案並不一定是成功的,成敗的關鍵在於其是否精確地對真實世界進行了模擬。
在整個性能測試過程中,自動化測試工具的選擇只能影響性能測試執行的複雜程度,簡便一些或繁雜一些;但人的分析和思考卻會直接導致性能測試的成敗。所以這裡著重於對性能測試思路的整理。測試工具的介紹可以參看有關自動化測試工具的資料。

沒有留言: