陳果
摘要:本文首先從移動電子設(shè)備的軟件開發(fā)和軟件測試的現(xiàn)狀開始介紹,然后根據(jù)現(xiàn)狀分析了當(dāng)前開發(fā)測試模式存在的問題;然后針對真實的手機(jī)運行的環(huán)境以及運行機(jī)制提出了模擬器平臺的體系架構(gòu),所設(shè)計的體系結(jié)構(gòu)實現(xiàn)了兩個目標(biāo),即應(yīng)用程序代碼的獨立性和系統(tǒng)的可配置性。最后,恨據(jù)所設(shè)計的體系結(jié)構(gòu),使用PC機(jī)模擬器對其進(jìn)行了實現(xiàn)。實驗的結(jié)果顯示,在模擬器上進(jìn)行軟件的開發(fā)會顯著的提高手機(jī)軟件的開發(fā)效率,而且在模擬器上進(jìn)行可以非常詳細(xì)的測試在現(xiàn)實生活中發(fā)生的事情,比如來電、打電話和多方通話等情況。
【關(guān)鍵詞】電子設(shè)備 軟件測試 模擬器
1 現(xiàn)狀和存在的問題
現(xiàn)在的手機(jī)越來越高級,性能越來越高,能夠在手機(jī)上運行的應(yīng)用程序越來越多,幾乎每個人的手機(jī)上都安裝了各種各樣的軟件,因此導(dǎo)致了手機(jī)復(fù)雜性的顯著提高,另外由于手機(jī)單一的測試條件,大大限制了手機(jī)軟件的開發(fā)。而且在用手機(jī)進(jìn)行測試的時候,許多發(fā)生的情況會影響到測試的結(jié)構(gòu),所以,現(xiàn)在國內(nèi)的許多廠家都使用PC機(jī)進(jìn)行開發(fā)軟件,然后下載到手機(jī)上,通過串口通信將Trace信息寫的PC機(jī)上,然后通過Trace信息定位問題。但是針對手機(jī)通話這種相對來說比較復(fù)雜的問題,通常情況下是通過內(nèi)部蜂窩站多人協(xié)同測試,相率怎么樣可想而知。
上而所涉及到的是PC機(jī)的優(yōu)點,可否利用PC機(jī)的開發(fā)環(huán)境來輔助手機(jī)的軟件開發(fā)是一個值得思考的問題?再一個問題是,能否利用所提到的模擬平臺來測試多方通話等現(xiàn)實生活中能夠遇到卻很難把握的情況。
2 手機(jī)運行環(huán)境
實時操作系統(tǒng)是多任務(wù)的操作系統(tǒng),核心軟件,能夠提供許多功能,比如內(nèi)存分配功能,中斷控制功能,任務(wù)調(diào)度功能等。
2.1 體系結(jié)構(gòu)
如圖1所示。
(1)表示信息在Service Task和MMITask之問傳遞:
(2)表示信息在Handler和MMI Task之間傳遞;
(3)表示函數(shù)調(diào)用;
(4) RTOS向MMI Task發(fā)送的延時信息。
2.2 運行機(jī)制
MMI即人機(jī)界而接口它的功能是完成底層與用戶之問的交互,它的工作方式分為兩種,即主動的方式和被動的方式。
被動方式:用戶需要輸入,然后調(diào)用底層的函數(shù)返回結(jié)果,并將結(jié)果返回給用戶。
主動方式:對底層的消息進(jìn)行接收,針對接收到的消息主動的反饋給用戶,比如說接收到了電話,手機(jī)的電量不足等。
從圖1我們可以看到,有三種不同的信息傳遞的表示方式,但是我們用實線箭頭來表示函數(shù)調(diào)用,比如申請動態(tài)內(nèi)存,如圖1中的虛線所示,大多數(shù)是通過消息這一機(jī)制來運行的。
2.3 消息大致有以下幾類
MMI要想指定的服務(wù)器發(fā)送某個消息,服務(wù)器會在一定的時問問隔內(nèi)返回給MMI成功的消息或者是失敗的消息,這是標(biāo)準(zhǔn)的雙向消息。
MMI會以Handler為目標(biāo)發(fā)送請求消息,比如說MMI通過發(fā)送一個CLOCK消息獲取時間,然后在指定的時問問隔內(nèi)CLOCK會向MMI發(fā)送當(dāng)前的時問,這個也是標(biāo)準(zhǔn)的雙向消息。
定時器消息。MMI程序顯示類似于屏保這樣的畫而需要用到定時器消息,這個消息不需要返回消息,所以說這種消息是單向的。
單向的消息還有很多,比如說,MMI任務(wù)要求刷新屏幕需要請求LCD任務(wù),而不需要返回消息,這就是單向的消息:又比如,鍵盤可以向MMI發(fā)送按壓鍵盤還是釋放鍵盤的消息,只需要提示而不需要返回消息,這也是單向的。
2.4 小節(jié)
在一個系統(tǒng)中,有一個MMI任務(wù)和許多的服務(wù)任務(wù),但是對于每一個任務(wù),他只有一個消息隊列和唯一的ID標(biāo)識。3PC模擬平臺體系結(jié)構(gòu)設(shè)計
3.1 系統(tǒng)應(yīng)該提供的函數(shù)
RTOS提供的內(nèi)存分配函數(shù)用于實現(xiàn)各個任務(wù)的調(diào)用,電泳完成之后要能夠正確的釋放。
對于RTOS的消息派發(fā)函數(shù),根據(jù)所接收到的四元組的信息,包括發(fā)送方ID、消息ID、接收方ID、和實際消息數(shù)據(jù)塊這四個部分,將所接收到的四元組的信息正確無誤的放在接受任務(wù)的消息隊列中等待處理。
對于定時器的實現(xiàn),所使用的的函數(shù)參數(shù)就是TimerID,根據(jù)TimerID來得到調(diào)用者的任務(wù)的ID,當(dāng)任務(wù)超市后,必須向消息隊列中添加相應(yīng)的超時的消息。
3.2 系統(tǒng)的可配置性
在大多數(shù)情況下,只有當(dāng)時問發(fā)生了之后,服務(wù)器才會給MMI發(fā)型消息,四元組中的第四個消息其實沒有意義,換句話說,可以是一個固定的數(shù)值,這種情況發(fā)生時,可以將缺省的參數(shù)發(fā)送給MMI,這樣MMI發(fā)送請求的時候,測試人員可以直接發(fā)送通知消息給MMI。
對于不同的請求,一個請求消息對應(yīng)的可以是一定數(shù)量的返回消息,比如說定時器消息,當(dāng)MMI向CLOCK發(fā)送時問的請求消息時,CLOCK會定時向MMI發(fā)送當(dāng)前時問的消息,比如沒30秒就會給MMI發(fā)送消息。
3.3 應(yīng)用程序代碼的獨立性
對于應(yīng)用在手機(jī)上的代碼,要完整的原封不動的復(fù)制到模擬器上運行,只有這樣才能保證發(fā)生在手機(jī)上的事情也能夠在模擬器上真實的顯現(xiàn)出來,能夠使測試的結(jié)果最大限度的接近現(xiàn)實情況,也能夠因此證明模擬器的可靠性。
3.4 模擬器體系結(jié)構(gòu)
如圖2所示。
(1) MMI向服務(wù)器發(fā)送請求消息
(2)服務(wù)器向MMI發(fā)送的回應(yīng)消息或者是服務(wù)器主動給MMI發(fā)送的消息
(3)控制臺線程主動給MM你發(fā)送的帶缺省參數(shù)的消息或者通知消息服務(wù)模塊的功能
(4)控制臺界而線程發(fā)送給服務(wù)器的內(nèi)部的超時消息,服務(wù)器模塊可以實現(xiàn)特定時問問隔向MMI發(fā)送消息;
(5)模擬PTOS給MMI發(fā)送的延時消息。
4 結(jié)論
本文通過分析手機(jī)在軟件開發(fā)和軟件測試中出現(xiàn)的問題,然后對手機(jī)的可運行環(huán)境做了簡要的介紹,對于所涉及的體系結(jié)構(gòu)的設(shè)計,實現(xiàn)了系統(tǒng)的可配置性和應(yīng)用程序代碼的獨立性,實現(xiàn)模擬器上的軟件開發(fā)的同時大大提高了手機(jī)軟件的開發(fā)效率,而且對于在測試過程中出現(xiàn)的突然來電等情況進(jìn)行更詳盡的測試,提高了開發(fā)測試的效率。endprint