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