【摘要】本文杰爾系統( Agere system )平臺基礎上開發的 GSM 手機自動化測試提供一些技術介紹,并結合實際例子講解一些應用經驗,來說明自動化測試在手機功能測試一級中所帶來的效率。
【關鍵詞】手機平臺,杰爾系統, Trace , PTE 命令,手機軟件功能測試,自動化測試
• 國內手機功能測試現狀:
當前國內手機廠商和設計公司據統計已達到 300 多家,但至今所有的設計開發都是基于國外技術平臺基礎上的二次開發,即通常所說的 MMI 開發, 提供開發的手機平臺目前主要有德州儀器( TI ),英特爾( Intel ),飛思卡特( freescale ),杰爾系統( Agere system ),英飛凌( infineon ),瑞薩科技( renesas ),菲利普半導體( philips ),意法半導體( ST ),美國博通( broadcom ),美國模擬器件( ADI ),微控科技( wavecom )。通常這些平臺供應商的核心技術都不對外開放,只為購買其開發平臺的用戶提供一個可二次開發的環境,比如本文所要介紹的自動測試所基于的平臺 ——Agere system , 它在其軟件架構的上層為開發用戶做了一層 UI ( User Interface ) , 并做了基本的 AL 開發,通常方案提供后可以直接作為國內廠商用于 FTA 測試,這即是國內眾多手機廠商和 design house 開發和測試的母體。
曾聽一位從事手機功能測試的同仁說 “ 做手機功能測試只要有手可以了 ” ,確實手機功能測試很容易給人一種是簡單而重復按鍵操作的感覺。但手機功能眾多,并且回歸測試工作量大,如果單個測試工程師靠手動按鍵來執行所有測試用例,花費的時間少則幾小時,多則需要幾天的時間,這樣耗費大量測試時間的同時也容易讓測試工程師產生疲倦甚至是厭倦心里,很容易造成測試的遺漏。手機測試中常碰到很多重復性高的工作,如發送數條 SMS 或者 MMS 以驗證其收發成功率以及穩定性、連續進行多次呼叫、多次對文件系統進行添加刪除操作、多任務多進程情況下的沖突測試以及極限測試等等,都是重復性高的工作,手動執行的話費時費力,如果能有一套自動執行的機制,將能大大提高測試的效率。
由于手機平臺的特殊性,國內通常都沒有自動化測試工具支持手機功能測試,紛繁復雜的功能測試大多只能通過文本化測試用例的指導,由廣大測試員手工來完成。手機這種板機的 MMI 功能測試不同于基于 PC 上的 MMI 測試,后者借助 PC 平臺,目前市場上已有非常多功能強大且通用的自動測試工具支持其測試,如比較典型的有 Winrunner , Robot , Loadrunner 等等,但這些工具通常不能兼容到象手機這種嵌入式系統中來。當然平臺供應商對他們底層 lay1 , lay2 , lay3 的測試都有自己開發的測試工具來自動執行,但這些工具暫時都不提供給國內的開發廠家。
為了解決上述手機測試工作中的困難,筆者所在的測試團隊經過不斷的總結實踐,目前已在基于杰爾系統( Agere system )平臺上建立了一套實用的自動測試機制,通過該機制的建立,不但調動了測試工程師的工作積極性和熱情,同時也大大提高了測試的效率。下面將圍繞 Agere 平臺上自動測試機制給大家做個總體介紹。在講述該方案前,將先對 Agere 平臺的窗體和消息,以及手機同 PC 的數據交互原理做個簡單介紹。
• 手機中的窗體和消息:
功能測試時,在手機上每按下一按鍵,都是在特定的窗口下完成其功能,窗口處理函數接收到窗口所用鍵盤中定義的按鍵消息后執行相應的處理,完成指定的工作。這里所談的窗口系統本質上是一個鏈表,主要是響應手機中常用的三類消息:用戶的按鍵操作、 GSM 網絡消息、以及計時器消息。
手機中窗體處理函數結構通常如下:
static UINT32 TestWindowProc( UIWINDOW * win, UINT16 cmd, UINT16 wParam, UINT32 lParam )
{
switch ( wParam )
{
case EV_KEYSEND: /*按發送鍵*/
CALL(MAOTelNumber);
return TRUE;
case EV_KEYEND: /*按掛機鍵*/
ENDCALL(MAOTelNumber);
return TRUE;
......
default:
break;
}
}
在窗體中除了對消息的實時處理外,還有通過具體的消息傳遞函數對本窗口中消息進行派發和定向流動,通常有 GSM 消息的流動和鍵盤消息的流動,派發 GSM 消息時,依據窗口建立的逆向順序逐層往上流動,而鍵盤消息只向上傳遞一層,即子窗口向父窗口傳送。 在系統功能測試過程中,窗口中的消息執行情況是看不到摸不著的東西,但是各個窗口中這三類消息的處理以及消息的派發流動都是測試所必須了解和測試的重點,怎樣才能直觀的看到,跟蹤并了解這些消息的執行情況呢?測試工程師可以通過在跟蹤點加測試樁或者跟蹤語句來實現追蹤,利用杰爾系統的 trace 工具( optitrace )以文本的形式輸出所需要了解的信息,根據這些信息的輸出流程和實際數據,以達到測試跟蹤和分析的目的,如上面這一簡單例子中所列舉的兩個事件 EV_KEYSEND 和 EV_KEYEND ,簡單的跟蹤是通過在這兩類事件觸發前增加類似于 print 跟蹤語句,判斷 “ 發送鍵 ” 按下后是否在指定的窗口里執行到 EV_KEYSEND 事件并調用呼叫函數 CALL 執行呼叫請求 , 實際運行時,根據 optitrace 工具所顯示的 print 信息觀察程序的運行及消息的執行情況,跟蹤的手段很多,在此不詳細列舉。下面介紹 PC 怎樣通過 Optitrace 工具實現同手機板機的數據交互。
• 手機與 PC 的數據交互
通常每個平臺為軟件開發提供一系列的開發套件,常用的有仿真軟件、 Trace 跟蹤分析軟件、 Download 目標代碼的裝載軟件等等,通過這些軟件實現手機同 PC 的數據交互,實現軟件的開發仿真,問題的跟蹤分析,以及程序的灌寫等。這些軟件大多采用串口通訊的方式,通過特定的數據線連接手機串口通訊端與 PC 的串口或者 USB 端( USB 轉串口)。下面將要介紹的是杰爾系統( Agere system )的開發套件之一 optitrace 。
該工具可以運行于 win9X/2000/NT 系統中,是 Agere 參考設計平臺的輔助診斷工具,它為軟硬件開發人員提供 Protocol Stack and MMI 的跟蹤分析以及模擬用戶硬件如串口顯示和按鍵,為 field Test 人員提供 Trace Logs 和 Vital signs ,為產品測試工程師提供 Product Test environment ( PTE ) 窗口和腳本的定制以及播放。
運行界面中通過 optitrace 工具捕捉的用戶按鍵消息,如 Key Code 4 ,表示用戶在手機上按下數字鍵 4 , key code 后面的數字是按鍵所定義的編碼值,手機中每個按鍵都有的按鍵編碼值。從中可以看出,用戶所有的按鍵動作都以 “AL got key AL_KeyDown event , key code X” 的形式被記錄下來。這些按鍵信息的捕捉只是該工具 trace 信息的一部分,該工具提供非常多的 trace 選項,實際應用中,可以根據所要跟蹤的信息來選擇顯示。
該工具一個重要的功能是可以在 PC 端通過 PTE 命令模擬用戶來操作數據線另外一端的手機,該工具本身定義了 11 類的 PTE 命令,下面重點介紹兩個重要的 PTE 命令,
• 模擬一個按鍵按下和釋放
輸入格式: Key <INT16 Keycode>
返 回: Key:DONE
用戶可以在 optirace 的 PTE 命令輸入行中,通過輸入正確的 Key 命令,往手機端寫入按鍵事件,手機端解析后執行相應的按鍵操作,如用戶輸入 key 8 回車后,手機端 LCD 顯示 8 或者執行按鍵 8 所對應的操作,執行后返回 key : DONE 消息。同時 trace 中顯示 AL got key AL_KeyDown event , key code 8 。