深圳創(chuàng)維-RGB電子有限公司 張 帆
Android智能電視開發(fā)技巧之提高BUG復(fù)現(xiàn)概率的方法
深圳創(chuàng)維-RGB電子有限公司 張 帆
解決軟件BUG是軟件工程師工作的一部分,對于目前越來越復(fù)雜的電子產(chǎn)品而言,在開發(fā)過程中遇到的BUG不僅數(shù)量上有所增加,BUG的復(fù)現(xiàn)難度也不斷增加,有些BUG需要操作好幾個步驟才能復(fù)現(xiàn)到,而往往測試人員只能靠記憶來復(fù)現(xiàn)BUG。本文提出了一種自動記錄測試過程中遙控按鍵的方法,并且可以自動發(fā)送按鍵,大大提高了BUG復(fù)現(xiàn)的概率。
Android;電視;BUG
本文主要涉及到兩個主要的軟件模塊:按鍵記錄模塊、自動發(fā)送虛擬按鍵模塊。
按鍵記錄模塊:該模塊需要以service的形式,添加到Android系統(tǒng)的init.rc文件中,確保開機會自動執(zhí)行此模塊。開機該模塊被系統(tǒng)啟動后,首先需要保存電視機的當(dāng)前狀態(tài),以便出現(xiàn)問題時,從相同狀態(tài)開始發(fā)送記錄的按鍵,確保起點一致。其次,打開紅外的設(shè)備節(jié)點,例如:”/dev/input/event0”。隨后進入監(jiān)聽事件的狀態(tài),直到有按鍵事件的發(fā)生。接著讀取事件內(nèi)容并解析,這里需要保存按鍵的鍵值、按鍵的屬性(是按下還是彈起)、距離上次按鍵的間隔、按鍵按下的時長,數(shù)據(jù)以文件形式按一定的規(guī)則保存到電視內(nèi)部存儲空間,文件形式見表1。最后,再次進入監(jiān)聽事件的狀態(tài),具體流程見圖1。
圖1 按鍵記錄模塊
表1 按鍵數(shù)據(jù)保存形式
讀取按鍵鍵值可以參考以下示例程序。
測試人員發(fā)現(xiàn)隨機問題后,如果想要復(fù)現(xiàn)問題,可以啟動自動發(fā)送虛擬按鍵模塊,一步一步還原出問題時的操作。
自動發(fā)送虛擬按鍵模塊:首先,將備份的數(shù)據(jù)恢復(fù)到系統(tǒng),并重啟機器。這樣機器可以恢復(fù)到記錄按鍵前的狀態(tài)。其次,初始化虛擬輸入設(shè)備,這里以”/dev/uinput”為例。注冊虛擬輸入設(shè)備的名稱、VENDOR_ID、PRODUCT_ID、及總線類型。隨后,打開按鍵保存模塊記錄的文件,并以表1規(guī)則依次讀取距離上次按鍵的間隔,并按具體數(shù)值作相應(yīng)的延時,再將解析到的鍵值及按下按鍵的時長傳遞給發(fā)送模塊。最后,發(fā)送模塊按照按鍵的間隔發(fā)送按鍵到虛擬輸入設(shè)備,具體流程見圖2。
圖2 虛擬按鍵自動發(fā)送模塊
總結(jié):本文利用純軟件的方式,解決了測試過程中遇到的隨機BUG很難復(fù)現(xiàn)的難題,無需投入硬件及人力成本。其創(chuàng)造性在于巧妙的利用了android系統(tǒng)中,紅外遙控的驅(qū)動及虛擬輸入設(shè)備驅(qū)動,實現(xiàn)了按鍵的自動記錄及自動發(fā)送的功能。