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