本申請(qǐng)涉及軟件測(cè)試技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用程序兼容性測(cè)試方法和裝置。
背景技術(shù):
兼容性測(cè)試是應(yīng)用程序(application,app)測(cè)試中的重要環(huán)節(jié),用于測(cè)試app中的同一個(gè)功能在不同的終端設(shè)備上的執(zhí)行效果和界面展示效果是否一致。
為了確保app的性能,app需要在多個(gè)終端設(shè)備上進(jìn)行相同的兼容性測(cè)試。對(duì)于一些需要測(cè)試人員手動(dòng)執(zhí)行的兼容性測(cè)試操作,例如,觸屏操作或按鍵操作,當(dāng)需要測(cè)試的終端設(shè)備數(shù)量較多時(shí),測(cè)試人員需要逐個(gè)在每一個(gè)終端設(shè)備上進(jìn)行操作,導(dǎo)致app兼容性測(cè)試的測(cè)試效率較低。
如何提高app兼容性測(cè)試的測(cè)試效率,是本申請(qǐng)所要解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請(qǐng)實(shí)施例提供一種應(yīng)用程序兼容性測(cè)試方法和裝置,用以解決現(xiàn)有的應(yīng)用程序兼容性測(cè)試的測(cè)試效率較低的問(wèn)題。
本申請(qǐng)實(shí)施例提供一種應(yīng)用程序兼容性測(cè)試方法,包括:
確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件;
確定所述第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,其中,所述第二操作事件用于在所述從屬終端設(shè)備中執(zhí)行與所述第一操作事件相同或相似的兼容性測(cè)試操作;
將所述第二操作事件發(fā)送到所述從屬終端設(shè)備。
可選地,確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件,包括:
獲取所述主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的操作點(diǎn)序列;
通過(guò)解析所述操作點(diǎn)序列,確定所述操作點(diǎn)序列中任一操作點(diǎn)的第一橫坐標(biāo)值、第一縱坐標(biāo)值、壓力值以及時(shí)間標(biāo)識(shí);
根據(jù)所述操作點(diǎn)序列中的任一操作點(diǎn)的時(shí)間標(biāo)識(shí),確定相鄰操作點(diǎn)之間的時(shí)間間隔;
根據(jù)所述操作點(diǎn)序列中的任一操作點(diǎn)的第一橫坐標(biāo)值、第一縱坐標(biāo)值、壓力值、時(shí)間標(biāo)識(shí)以及相鄰操作點(diǎn)之間的時(shí)間間隔,確定所述第一操作事件,其中,所述第一操作事件為觸屏操作事件。
可選地,確定所述第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,包括:
獲取所述主終端設(shè)備和所述從屬終端設(shè)備的屏幕分辨率信息;
根據(jù)所述主終端設(shè)備和所述從屬終端設(shè)備的屏幕分辨率信息,將所述操作點(diǎn)序列中的任一操作點(diǎn)的第一橫坐標(biāo)值轉(zhuǎn)換為第二橫坐標(biāo)值,以及將所述操作點(diǎn)序列中的任一操作點(diǎn)的第一縱坐標(biāo)值轉(zhuǎn)換為第二縱坐標(biāo)值;
根據(jù)所述操作點(diǎn)序列中的任一操作點(diǎn)的第二橫坐標(biāo)值、第二縱坐標(biāo)值、壓力值以及相鄰操作點(diǎn)之間的時(shí)間間隔,確定所述第二操作事件。
可選地,所述第一操作事件包括:長(zhǎng)按、拖拽、點(diǎn)擊、雙擊或虛擬按鍵。
可選地,確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件,包括:
獲取所述主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的操作點(diǎn);
通過(guò)解析所述操作點(diǎn),確定所述操作點(diǎn)的操作類型;
根據(jù)所述操作點(diǎn)的操作類型,確定所述第一操作事件,其中,所述第一操作事件為按鍵操作事件。
可選地,確定所述第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,包括:
確定所述第二操作事件為與所述第一操作事件相同的操作事件。
可選地,所述第一操作事件包括:電源鍵操作、返回鍵操作、菜單鍵操作、主鍵操作、音量上鍵操作或音量下鍵操作。
本申請(qǐng)實(shí)施例還提供一種應(yīng)用程序兼容性測(cè)試裝置,包括:確定單元和發(fā)送單元,其中:
確定單元,用于確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件;
所述確定單元,還用于確定所述第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,其中,所述第二操作事件用于在所述從屬終端設(shè)備中執(zhí)行與所述第一操作事件相同或相似的兼容性測(cè)試操作;
發(fā)送單元,用于將所述第二操作事件發(fā)送到所述從屬終端設(shè)備。
本申請(qǐng)實(shí)施例還提供一種應(yīng)用程序兼容性測(cè)試裝置,其特征在于,包括:存儲(chǔ)器和處理器,其中:
存儲(chǔ)器,用于存放程序;
處理器,用于執(zhí)行所述存儲(chǔ)器存放的程序,并具體執(zhí)行:
確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件;
確定所述第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,其中,所述第二操作事件用于在所述從屬終端設(shè)備中執(zhí)行與所述第一操作事件相同或相似的兼容性測(cè)試操作;
將所述第二操作事件發(fā)送到所述從屬終端設(shè)備。
本申請(qǐng)實(shí)施例還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序當(dāng)被包括多個(gè)應(yīng)用程序的電子設(shè)備執(zhí)行時(shí),使得所述電子設(shè)備執(zhí)行以下方法:
確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件;
確定所述第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,其中,所述第二操作事件用于在所述從屬終端設(shè)備中執(zhí)行與所述第一操作事件相同或相似的兼容性測(cè)試操作;
將所述第二操作事件發(fā)送到所述從屬終端設(shè)備。
本申請(qǐng)實(shí)施例采用的上述至少一個(gè)技術(shù)方案能夠達(dá)到以下有益效果:
通過(guò)確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件,進(jìn)而確定第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,并將第二操作事件發(fā)送到該從屬終端設(shè)備,使得該從屬終端設(shè)備根據(jù)第二操作事件,對(duì)自身設(shè)備中的待測(cè)試應(yīng)用程序執(zhí)行與第一操作事件相同或相似的兼容性測(cè)試操作,從而能夠有效提高應(yīng)用程序兼容性測(cè)試的測(cè)試效率。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1為本申請(qǐng)實(shí)施例提供的一種應(yīng)用程序兼容性測(cè)試方法的流程示意圖;
圖2為本申請(qǐng)實(shí)施例提供的操作點(diǎn)序列的示意圖;
圖3為本申請(qǐng)實(shí)施例提供的第一操作事件識(shí)別的示意圖;
圖4為本申請(qǐng)實(shí)施例提供的一種應(yīng)用程序兼容性測(cè)試方法的示意圖;
圖5為本申請(qǐng)實(shí)施例提供的一種電子設(shè)備的示意結(jié)構(gòu)圖;
圖6為本申請(qǐng)實(shí)施例提供的一種應(yīng)用程序兼容性測(cè)試裝置的結(jié)構(gòu)示意圖;
圖7為本申請(qǐng)實(shí)施例提供的一種應(yīng)用程序兼容性測(cè)試裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了實(shí)現(xiàn)本申請(qǐng)的目的,本申請(qǐng)實(shí)施例提供了一種應(yīng)用程序兼容性測(cè)試方法和裝置,該方法包括:通過(guò)確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件,進(jìn)而確定第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,并將第二操作事件發(fā)送到該從屬終端設(shè)備,使得該從屬終端設(shè)備根據(jù)第二操作事件,對(duì)自身設(shè)備中的待測(cè)試應(yīng)用程序執(zhí)行與第一操作事件相同或相似的兼容性測(cè)試操作,從而能夠有效提高應(yīng)用程序兼容性測(cè)試的測(cè)試效率。
下面結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
以下結(jié)合附圖,詳細(xì)說(shuō)明本申請(qǐng)各實(shí)施例提供的技術(shù)方案。
實(shí)施例1
為了解決現(xiàn)有技術(shù)中應(yīng)用程序兼容性測(cè)試的測(cè)試效率較低的問(wèn)題,本申請(qǐng)實(shí)施例1提供一種應(yīng)用程序兼容性測(cè)試方法。本申請(qǐng)實(shí)施例中的待測(cè)試應(yīng)用程序安裝在需要進(jìn)行測(cè)試的終端設(shè)備(以下簡(jiǎn)稱:待測(cè)試終端設(shè)備,即下文描述中的主終端設(shè)備和從屬終端設(shè)備)中,該終端設(shè)備是具有觸摸屏幕的終端設(shè)備,例如:手機(jī)、平板電腦,等等。
圖1為本申請(qǐng)實(shí)施例提供的一種應(yīng)用程序兼容性測(cè)試方法的流程示意圖。該方法可以如下所示。
步驟101:確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件。
在對(duì)應(yīng)用程序進(jìn)行兼容性測(cè)試之前,將所有的待測(cè)試終端設(shè)備連接到一臺(tái)個(gè)人電腦(pc)上,pc中的設(shè)備管理器負(fù)責(zé)管理該pc所連接的所有待測(cè)試終端設(shè)備,使得該pc能夠通過(guò)adb調(diào)試工具,獲取任一待測(cè)試終端設(shè)備的信息,或者向任一待測(cè)試終端設(shè)備發(fā)送指令。
需要說(shuō)明的是,待測(cè)試終端設(shè)備可以通過(guò)usb方式連接到pc上,也可以通過(guò)無(wú)線連接方式連接到pc上,這里不做具體限定。
設(shè)備管理器確定待測(cè)試終端設(shè)備中的主終端設(shè)備,主終端設(shè)備以外的其他待測(cè)試終端設(shè)備為從屬終端設(shè)備,主終端設(shè)備表示測(cè)試人員手動(dòng)執(zhí)行兼容性測(cè)試操作的待測(cè)試終端設(shè)備。
需要說(shuō)明的是,主終端設(shè)備可以是預(yù)先設(shè)定的,也可以是隨機(jī)選取的,這里不做具體限定。
設(shè)備管理器通過(guò)adb調(diào)試工具向主終端設(shè)備發(fā)送getevent命令,使得主終端設(shè)備執(zhí)行該getevent命令。
測(cè)試人員對(duì)主終端設(shè)備中的待測(cè)試應(yīng)用程序執(zhí)行的兼容性測(cè)試操作體現(xiàn)在getevent輸出的操作點(diǎn)中,通過(guò)解析getevent輸出的操作點(diǎn),能夠確定測(cè)試人員在主終端設(shè)備中執(zhí)行的第一操作事件,其中,getevent輸出為十六進(jìn)制輸出。
本申請(qǐng)實(shí)施例中,第一操作事件是觸屏操作事件或按鍵操作事件。
當(dāng)?shù)谝徊僮魇录怯|屏操作事件時(shí),確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件,包括:
獲取主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的操作點(diǎn)序列;
通過(guò)解析操作點(diǎn)序列,確定操作點(diǎn)序列中任一操作點(diǎn)的第一橫坐標(biāo)值、第一縱坐標(biāo)值、壓力值以及時(shí)間標(biāo)識(shí);
根據(jù)操作點(diǎn)序列中任一操作點(diǎn)的時(shí)間標(biāo)識(shí),確定相鄰操作點(diǎn)之間的時(shí)間間隔;
根據(jù)操作點(diǎn)序列中任一操作點(diǎn)的第一橫坐標(biāo)值、第一縱坐標(biāo)值、壓力值、時(shí)間標(biāo)識(shí)以及相鄰操作點(diǎn)之間的時(shí)間間隔,確定第一操作事件,其中,該第一操作事件為觸屏事件。
pc中的操作監(jiān)聽(tīng)器實(shí)時(shí)獲取主終端設(shè)備中的getevent輸出,當(dāng)測(cè)試人員對(duì)主終端設(shè)備中的待測(cè)試應(yīng)用程序執(zhí)行觸屏操作事件時(shí),getevent輸出的是操作點(diǎn)序列。圖2為本申請(qǐng)實(shí)施例提供的操作點(diǎn)序列的示意圖。
操作監(jiān)聽(tīng)器通過(guò)解析操作點(diǎn)序列,確定操作點(diǎn)序列中任一操作點(diǎn)的第一橫坐標(biāo)值、第一縱坐標(biāo)值、壓力值以及時(shí)間標(biāo)識(shí)。
對(duì)于安卓操作系統(tǒng),getevent的用法如下:
usage:getevent[-t][-n][-sswitchmask][-s][-v[mask]][-d][-p][-i][-l][-q][-ccount][-r][device]
-t:showtimestamps
-n:don'tprintnewlines
-s:printswitchstatesforgivenbits
-s:printallswitchstates
-v:verbositymask(errs=1,dev=2,name=4,info=8,vers=16,pos.events=32,props=64)
-d:showhiddescriptor,ifavailable
-p:showpossibleevents(errs,dev,name,pos.events)
-i:showalldeviceinfoandpossibleevents
-l:labeleventtypesandnamesinplaintext
-q:quiet(clearverbositymask)
-c:printgivennumberofeventsthenexit
-r:printrateeventsarereceived
在安卓操作系統(tǒng)的主終端設(shè)備中執(zhí)行g(shù)etevent命令之后,獲取得到的getevent輸出片段如下:
其中,ev_keybtn_touchdown表示手指按下屏幕;
ev_keybtn_touchup表示手指離開(kāi)屏幕。
對(duì)于/dev/input/event4:ev_absabs_mt_position_x00000182
/dev/input/event4:ev_absabs_mt_position_y000002a6
/dev/input/event4:ev_absabs_mt_pressure0000003f,
abs_mt_position_x,abs_mt_position_y,分別表示一次觸屏操作中一個(gè)觸摸操作點(diǎn)的橫坐標(biāo)x以及縱坐標(biāo)y的標(biāo)識(shí),00000182和000002a6是16進(jìn)制的數(shù)值,解析成10進(jìn)制分別為:386,678,即該操作點(diǎn)的坐標(biāo)值為(386,678);
abs_mt_pressure表示在該操作點(diǎn)上的壓力標(biāo)識(shí),后面的0000003f是16進(jìn)制的數(shù)值,解析成10進(jìn)制為63,也就表示在操作點(diǎn)(386,678)上的壓力值為63。
確定操作點(diǎn)的壓力值,是為了記錄測(cè)試人員執(zhí)行觸屏操作時(shí)手指移動(dòng)的壓力。
操作監(jiān)聽(tīng)器將解析得到的操作點(diǎn)序列發(fā)送給事件分析器進(jìn)行操作事件分析。
對(duì)于觸屏操作事件,事件分析器根據(jù)操作點(diǎn)序列中的最后一個(gè)操作點(diǎn)的事件標(biāo)識(shí),來(lái)界定一個(gè)完整的操作事件(即測(cè)試人員執(zhí)行的一次自然操作),例如,當(dāng)解析得到的操作點(diǎn)序列中最后一個(gè)操作點(diǎn)的時(shí)間與當(dāng)前時(shí)間的時(shí)間間隔大于600ms時(shí),則確定之前解析得到的操作點(diǎn)序列是一個(gè)完整的操作事件。
對(duì)于一個(gè)完整的操作事件對(duì)應(yīng)的操作點(diǎn)序列,根據(jù)操作點(diǎn)序列中任一操作點(diǎn)的時(shí)間標(biāo)識(shí),確定相鄰操作點(diǎn)之間的時(shí)間間隔。
根據(jù)一個(gè)完整的操作事件對(duì)應(yīng)的操作點(diǎn)序列中任一操作點(diǎn)的第一橫坐標(biāo)值、第一縱坐標(biāo)值、壓力值、時(shí)間標(biāo)識(shí)以及相鄰操作點(diǎn)之間的時(shí)間間隔,確定第一操作事件。
事件分析器識(shí)別第一操作事件,其中,第一操作事件包括:長(zhǎng)按、拖拽、點(diǎn)擊、雙擊或虛擬按鍵。
圖3為本申請(qǐng)實(shí)施例提供的第一操作事件識(shí)別的示意圖。
如圖3所示,第一操作事件對(duì)應(yīng)的操作點(diǎn)序列構(gòu)成曲線軌跡,通過(guò)遍歷操作點(diǎn)序列中的各個(gè)操作點(diǎn),確定該操作點(diǎn)序列所覆蓋區(qū)域的左上角的操作點(diǎn)a和右下角的操作點(diǎn)b;
計(jì)算操作點(diǎn)a和操作點(diǎn)b之間的距離len,通過(guò)len來(lái)表示第一操作事件對(duì)應(yīng)的操作點(diǎn)序列所覆蓋的范圍的大??;
根據(jù)操作點(diǎn)a和操作點(diǎn)b的坐標(biāo)值,計(jì)算操作點(diǎn)a和操作點(diǎn)b的中心點(diǎn)c的坐標(biāo)值,通過(guò)中心點(diǎn)c的坐標(biāo)值,確定第一操作事件是否作用于虛擬按鍵;
根據(jù)第一操作事件對(duì)應(yīng)的操作點(diǎn)序列中的第一個(gè)操作點(diǎn)的時(shí)間標(biāo)識(shí)以及最后一個(gè)操作點(diǎn)的時(shí)間標(biāo)識(shí),計(jì)算操作點(diǎn)序列中的第一個(gè)操作點(diǎn)和最后一個(gè)操作點(diǎn)的時(shí)間差,該時(shí)間差表示第一操作事件的耗時(shí)(timeconsumed)。
當(dāng)len小于等于100像素,并且timeconsumed大于600ms時(shí),表示第一操作事件的移動(dòng)范圍較小,但是操作時(shí)間較長(zhǎng),因此,確定第一操作事件為長(zhǎng)按操作;
當(dāng)len大于100像素,表示第一操作事件的移動(dòng)范圍較大,因此,不管timeconsumed的取值是多少,都確定第一操作事件為拖拽操作;另外,當(dāng)len大于20像素并且timeconsumed大于200ms,或者,當(dāng)len大于30像素并且timeconsumed大于50ms時(shí),確定第一操作事件為拖拽操作;
當(dāng)len小于等于20像素,或者,當(dāng)len小于等于30像素并且timeconsumed大于200ms時(shí),確定第一操作事件為點(diǎn)擊操作;
當(dāng)?shù)谝徊僮魇录邪瑑蓚€(gè)時(shí)間間隔小于600ms的點(diǎn)擊操作時(shí),確定第一操作事件為雙擊操作;
在待測(cè)試終端設(shè)備中存在一個(gè)文件/sys/board_properties/virtualkeys,用于定義屏幕上的虛擬按鍵區(qū)域的坐標(biāo)值。通過(guò)這個(gè)文件,以及上述計(jì)算得到的中心點(diǎn)c的坐標(biāo)值,確定第一操作事件是否作用于虛擬按鍵。
當(dāng)?shù)谝徊僮魇录怯|屏操作事件時(shí),確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件,包括:
獲取主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的操作點(diǎn);
通過(guò)解析操作點(diǎn),確定操作點(diǎn)的操作類型標(biāo)識(shí);
根據(jù)操作點(diǎn)的操作類型標(biāo)識(shí),確定第一操作事件,其中,該第一操作事件為按鍵操作事件。
pc中的操作監(jiān)聽(tīng)器實(shí)時(shí)獲取主終端設(shè)備中的getevent輸出,當(dāng)測(cè)試人員對(duì)主終端設(shè)備中的待測(cè)試應(yīng)用程序執(zhí)行的按鍵操作事件時(shí),getevent輸出的操作點(diǎn)序列中的操作點(diǎn)包含操作類型標(biāo)識(shí)。
操作監(jiān)聽(tīng)器將解析得到的操作點(diǎn)序列發(fā)送給事件分析器進(jìn)行操作事件分析。事件分析器根據(jù)操作點(diǎn)序列中操作點(diǎn)的操作類型標(biāo)識(shí),確定第一操作事件,其中,第一操作事件包括:電源鍵操作、返回鍵操作、菜單鍵操作、主鍵操作、音量上鍵操作或音量下鍵操作。
針對(duì)電源鍵操作,操作點(diǎn)的操作類型標(biāo)識(shí)為0074,對(duì)應(yīng)的getevent輸出樣例如下(00000001是按下標(biāo)識(shí),00000000是松開(kāi)標(biāo)識(shí)):
根據(jù)/dev/input/event2:0001007400000001,確定第一操作事件為電源鍵操作。
針對(duì)返回鍵操作,操作點(diǎn)的操作類型標(biāo)識(shí)為009e,對(duì)應(yīng)的getevent輸出樣例如下(00000001是按下標(biāo)識(shí),00000000是松開(kāi)標(biāo)識(shí)):
根據(jù)/dev/input/event2:0001009e00000001,確定第一操作事件為返回鍵操作。
針對(duì)菜單鍵操作,操作點(diǎn)的操作類型標(biāo)識(shí)為008b,對(duì)應(yīng)的getevent輸出樣例如下(00000001是按下標(biāo)識(shí),00000000是松開(kāi)標(biāo)識(shí)):
根據(jù)/dev/input/event2:0001008b00000001,確定第一操作事件為菜單鍵操作。
針對(duì)主鍵操作,操作點(diǎn)的操作類型標(biāo)識(shí)為0066,對(duì)應(yīng)的getevent輸出樣例如下(00000001是按下標(biāo)識(shí),00000000是松開(kāi)標(biāo)識(shí)):
根據(jù)/dev/input/event2:0001006600000001,確定第一操作事件為主鍵操作。
針對(duì)音量上鍵操作,操作點(diǎn)的操作類型標(biāo)識(shí)為0073,對(duì)應(yīng)的getevent輸出樣例如下(00000001是按下標(biāo)識(shí),00000000是松開(kāi)標(biāo)識(shí)):
根據(jù)/dev/input/event2:0001007300000001,確定第一操作事件為音量上鍵操作。
針對(duì)菜單鍵操作,操作點(diǎn)的操作類型標(biāo)識(shí)為0072,對(duì)應(yīng)的getevent輸出樣例如下(00000001是按下標(biāo)識(shí),00000000是松開(kāi)標(biāo)識(shí)):
根據(jù)/dev/input/event2:0001007200000001,確定第一操作事件為音量下鍵操作。
事件分析器確定第一操作事件之后,將第一操作事件發(fā)送到事件分發(fā)器。
事件分發(fā)器將第一操作事件發(fā)送到與至少一個(gè)從屬終端設(shè)備相對(duì)應(yīng)的事件消費(fèi)器。
步驟102:確定第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件。
其中,第二操作事件用于在從屬終端設(shè)備中執(zhí)行與第一操作事件相同或相似的兼容性測(cè)試操作。
本申請(qǐng)實(shí)施例中,當(dāng)?shù)谝徊僮魇录榘存I操作事件時(shí),事件消費(fèi)器確定第二操作事件為與第一操作事件相同的操作事件。
本申請(qǐng)實(shí)施例中,當(dāng)?shù)谝徊僮魇录橛|屏操作事件時(shí),事件消費(fèi)器對(duì)第一操作事件中的操作點(diǎn)序列中的任一操作點(diǎn)進(jìn)行坐標(biāo)轉(zhuǎn)換,確定第二操作事件,具體地:
獲取主終端設(shè)備和從屬終端設(shè)備的屏幕分辨率信息;
根據(jù)主終端設(shè)備和從屬終端設(shè)備的屏幕分辨率信息,將操作點(diǎn)序列中的任一操作點(diǎn)的第一橫坐標(biāo)值轉(zhuǎn)換為第二橫坐標(biāo)值,以及將操作點(diǎn)序列中的任一操作點(diǎn)的第一縱坐標(biāo)值轉(zhuǎn)換為第二縱坐標(biāo)值;
根據(jù)操作點(diǎn)序列中的任一操作點(diǎn)的第二橫坐標(biāo)值、第二縱坐標(biāo)值、壓力值以及相鄰操作點(diǎn)之間的時(shí)間間隔,確定第二操作事件。
在實(shí)際測(cè)試中,各個(gè)從屬終端設(shè)備的屏幕分辨率信息和主終端設(shè)備有可能不相同,為了能夠保證將主終端設(shè)備中的兼容性測(cè)試操作高保真地同步到各個(gè)從屬終端設(shè)備中,需要對(duì)第一操作事件對(duì)應(yīng)的操作點(diǎn)序列中的任一操作點(diǎn)的進(jìn)行坐標(biāo)轉(zhuǎn)換。
同時(shí),為了能夠保證將主終端設(shè)備中的兼容性測(cè)試操作高保真地同步到各個(gè)從屬終端設(shè)備中,需要保留第一操作事件對(duì)應(yīng)的操作點(diǎn)序列中的任一操作點(diǎn)的壓力值以及相鄰操作點(diǎn)之間的時(shí)間間隔,即保留測(cè)試人員在主終端設(shè)備中執(zhí)行第一操作事件時(shí)手指移動(dòng)的快慢和壓力。
步驟103:將第二操作事件發(fā)送到從屬終端設(shè)備。
事件消費(fèi)器生成第二操作事件對(duì)應(yīng)的monkey腳本,并通過(guò)adb.push命令發(fā)送到對(duì)應(yīng)的從屬終端設(shè)備中,使得從屬終端設(shè)備通過(guò)運(yùn)行該monkey腳本,對(duì)自身設(shè)備中的待測(cè)試應(yīng)用程序執(zhí)行與第一操作事件相同或相似的兼容性測(cè)試操作。
monkey腳本的用法如下:
dispatchpress(stringkey_name):實(shí)現(xiàn)按鍵操作
@key_name鍵值名
userwait(longsleeptime):相鄰操作點(diǎn)之間的時(shí)間間隔
@sleeptime等待時(shí)間,單位毫秒
dispatchpointer(downtime,eventtime,action,x,y,pressure,size,metastate,xprecision,yprecision,device,edgeflags)
@paramlongdowntime//主終端設(shè)備中操作事件開(kāi)始的時(shí)間標(biāo)識(shí),一般為固定值
@paramlongeventtime//從屬終端設(shè)備中操作事件開(kāi)始的時(shí)間標(biāo)識(shí),一般為固定值
@paramintaction//(action_down=0,action_move=2,action_up=1,action_cancel=3)
@paramfloatx//x坐標(biāo)值
@paramfloaty//y坐標(biāo)值
@paramfloatpressure//當(dāng)前事件的壓力,范圍0-1
@paramfloatsize//觸摸的近似值,范圍0-1
@paramintmetastate//當(dāng)前按下的meta鍵的標(biāo)識(shí)
@paramfloatxprecision//x坐標(biāo)值精度
@paramfloatyprecision//y坐標(biāo)值精度
@paramintdevice//事件來(lái)源,范圍0-x,0表示不來(lái)自物理設(shè)備
@paramintsedgeflags//
一個(gè)點(diǎn)擊操作事件的monkey腳本示例如下:
#startofscript
type=user
count=6
speed=1.0
startdata>>
dispatchpointer(10,10,0,346,771,0.20784314,0.06666667,0,0.0,0.0,65539,0)
userwait(10)
dispatchpointer(10,20,2,346,771,0.20784314,0.06666667,0,0.0,0.0,65539,0)
userwait(10)
dispatchpointer(10,10,1,346,771,0.20784314,0.06666667,0,0.0,0.0,65539,0)
userwait(10)
從屬終端設(shè)備通過(guò)運(yùn)行該點(diǎn)擊操作事件對(duì)應(yīng)的monkey腳本,能夠?qū)ψ陨碓O(shè)備中的待測(cè)試應(yīng)用程序執(zhí)行點(diǎn)擊操作。
本申請(qǐng)實(shí)施例中,當(dāng)從屬終端設(shè)備當(dāng)前操作事件還沒(méi)執(zhí)行完,就接收到新的操作事件時(shí),將新的操作事件緩存起來(lái),當(dāng)該從屬終端設(shè)備空閑時(shí)執(zhí)行。
本申請(qǐng)實(shí)施例所記載的技術(shù)方案,通過(guò)確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件,進(jìn)而確定第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,并將第二操作事件發(fā)送到該從屬終端設(shè)備,使得該從屬終端設(shè)備根據(jù)第二操作事件,對(duì)自身設(shè)備中的待測(cè)試應(yīng)用程序執(zhí)行與第一操作事件相同或相似的兼容性測(cè)試操作,從而能夠有效提高應(yīng)用程序兼容性測(cè)試的測(cè)試效率。
實(shí)施例2
基于前述實(shí)施例1詳細(xì)敘述的本申請(qǐng)的發(fā)明構(gòu)思,為了便于更好的理解本申請(qǐng)的技術(shù)特征、手段和效果,下面對(duì)本申請(qǐng)的應(yīng)用程序兼容性測(cè)試方法做進(jìn)一步說(shuō)明,從而形成本申請(qǐng)的又一個(gè)實(shí)施例。
本申請(qǐng)實(shí)施例2中應(yīng)用程序兼容性測(cè)試過(guò)程與實(shí)施例1中的應(yīng)用程序兼容性測(cè)試過(guò)程相似,實(shí)施例2中沒(méi)有介紹到的其他一些步驟可以參見(jiàn)實(shí)施例1中的相關(guān)描述,此處不再贅述。
圖4為本申請(qǐng)實(shí)施例提供的一種應(yīng)用程序兼容性測(cè)試方法的示意圖。該方法可以如下所示。
步驟401:將待測(cè)試終端設(shè)備連接到pc上,并確定待測(cè)試終端設(shè)備中的主終端設(shè)備,pc中的設(shè)備管理器負(fù)責(zé)管理該pc所連接的所有待測(cè)試終端設(shè)備;
步驟402:測(cè)試人員在主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作;
步驟403:操作監(jiān)聽(tīng)器獲取getevent輸出,得到主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的操作點(diǎn)序列;
步驟404:事件分析器根據(jù)操作點(diǎn)序列,確定第一操作事件,并將第一操作事件發(fā)送給事件分發(fā)器,其中,第一操作事件為觸屏操作事件或按鍵操作事件;
步驟405:事件分發(fā)器將第一操作事件發(fā)送給需要執(zhí)行兼容性測(cè)試操作的從屬終端設(shè)備對(duì)應(yīng)的事件消費(fèi)器;
步驟406:當(dāng)?shù)谝徊僮魇录榘存I操作事件時(shí),事件消費(fèi)器確定第二操作事件為與第一操作事件相同的操作事件,并生成第二操作事件對(duì)應(yīng)的monkey腳本;
當(dāng)?shù)谝徊僮魇录橛|屏操作事件時(shí),事件消費(fèi)器根據(jù)主終端設(shè)備和從屬終端設(shè)備的屏幕分辨率信息,通過(guò)對(duì)第一操作事件對(duì)應(yīng)的操作點(diǎn)序列中的任一操作點(diǎn)進(jìn)行坐標(biāo)轉(zhuǎn)換,確定第二操作事件,進(jìn)而生成第二操作事件對(duì)應(yīng)的monkey腳本。
步驟407:事件消費(fèi)器將第二操作事件對(duì)應(yīng)的monkey腳本發(fā)送到對(duì)應(yīng)的從屬終端設(shè)備中,使得從屬終端設(shè)備通過(guò)運(yùn)行該monkey腳本,對(duì)自身設(shè)備中的待測(cè)試應(yīng)用程序執(zhí)行與第一操作事件相同或相似的兼容性測(cè)試操作。
實(shí)施例3
圖5為本申請(qǐng)實(shí)施例提供的一種電子設(shè)備的示意結(jié)構(gòu)圖。如圖5所示,在硬件層面,該電子設(shè)備包括處理器、內(nèi)部總線、網(wǎng)絡(luò)接口、內(nèi)存以及非易失性存儲(chǔ)器,當(dāng)然還可能包括其他業(yè)務(wù)所需要的硬件。處理器從非易失性存儲(chǔ)器中讀取對(duì)應(yīng)的計(jì)算機(jī)程序到內(nèi)存中然后運(yùn)行,在邏輯層面上形成應(yīng)用程序兼容性測(cè)試裝置。當(dāng)然,除了軟件實(shí)現(xiàn)方式之外,本申請(qǐng)并不排除其他實(shí)現(xiàn)方式,比如邏輯器件抑或軟硬件結(jié)合的方式等等,也就是說(shuō)以下處理流程的執(zhí)行主體并不限定于各個(gè)邏輯單元,也可以是硬件或邏輯器件。
圖6為本申請(qǐng)實(shí)施例提供的一種應(yīng)用程序兼容性測(cè)試裝置的結(jié)構(gòu)示意圖。裝置600包括:確定單元601和發(fā)送單元602:
確定單元601,用于確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件;
確定單元601,還用于確定第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,其中,第二操作事件用于在從屬終端設(shè)備中執(zhí)行與第一操作事件相同或相似的兼容性測(cè)試操作;
發(fā)送單元602,用于將第二操作事件發(fā)送到該從屬終端設(shè)備。
可選地,確定單元601確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件,包括:
獲取主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的操作點(diǎn)序列;
通過(guò)解析操作點(diǎn)序列,確定操作點(diǎn)序列中任一操作點(diǎn)的第一橫坐標(biāo)值、第一縱坐標(biāo)值、壓力值以及時(shí)間標(biāo)識(shí);
根據(jù)操作點(diǎn)序列中的任一操作點(diǎn)的時(shí)間標(biāo)識(shí),確定相鄰操作點(diǎn)之間的時(shí)間間隔;
根據(jù)操作點(diǎn)序列中的任一操作點(diǎn)的第一橫坐標(biāo)值、第一縱坐標(biāo)值、壓力值以及相鄰操作點(diǎn)之間的時(shí)間間隔,確定第一操作事件,其中,第一操作事件為觸屏操作事件。
可選地,確定單元601確定第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,包括:
獲取主終端設(shè)備和從屬終端設(shè)備的屏幕分辨率信息;
根據(jù)主終端設(shè)備和從屬終端設(shè)備的屏幕分辨率信息,將操作點(diǎn)序列中的任一操作點(diǎn)的第一橫坐標(biāo)值轉(zhuǎn)換為第二橫坐標(biāo)值,以及將操作點(diǎn)序列中的任一操作點(diǎn)的第一縱坐標(biāo)值轉(zhuǎn)換為第二縱坐標(biāo)值;
根據(jù)操作點(diǎn)序列中的任一操作點(diǎn)的第二橫坐標(biāo)值、第二縱坐標(biāo)值、壓力值以及相鄰操作點(diǎn)之間的時(shí)間間隔,確定所述第二操作事件。
可選地,第一操作事件包括:長(zhǎng)按、拖拽、點(diǎn)擊、雙擊或虛擬按鍵。
可選地,確定單元601確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件,包括:
獲取主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的操作點(diǎn);
通過(guò)解析操作點(diǎn),確定操作點(diǎn)的操作類型標(biāo)識(shí);
根據(jù)操作點(diǎn)的操作類型標(biāo)識(shí),確定第一操作事件,其中,第一操作事件為按鍵操作事件。
可選地,確定單元601確定第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,包括:
確定第二操作事件為與第一操作事件相同的操作事件。
可選地,第一操作事件包括:電源鍵操作、返回鍵操作、菜單鍵操作、主鍵操作、音量上鍵操作或音量下鍵操作。
根據(jù)應(yīng)用程序兼容性測(cè)試裝置,確定單元用于確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件;確定單元還用于確定第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,其中,第二操作事件用于在從屬終端設(shè)備中執(zhí)行與第一操作事件相同或相似的兼容性測(cè)試操作;發(fā)送單元用于將第二操作事件發(fā)送到從屬終端設(shè)備,從而能夠有效提高應(yīng)用程序兼容性測(cè)試的測(cè)試效率。
圖7為本申請(qǐng)實(shí)施例提供的一種應(yīng)用程序兼容性測(cè)試裝置的結(jié)構(gòu)示意圖??ㄆ臄z裝置700可包括:通道接口701和處理器702,可選地,包括存儲(chǔ)器703。
通道接口701、處理器702和存儲(chǔ)器703可以通過(guò)總線704系統(tǒng)相互連接??偩€704可以是isa(industrystandardarchitecture,工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu))總線、pci(peripheralcomponentinterconnect,外設(shè)部件互連標(biāo)準(zhǔn))總線或eisa(extendedindustrystandardarchitecture,擴(kuò)展工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu))總線等。所述總線可以分為地址總線、數(shù)據(jù)總線、控制總線等。為便于表示,圖7中僅用一個(gè)雙向箭頭表示,但并不表示僅有一根總線或一種類型的總線。
可選地,包括存儲(chǔ)器703,用于存放程序。具體地,程序可以包括程序代碼,所述程序代碼包括計(jì)算機(jī)操作指令。存儲(chǔ)器703可以包括只讀存儲(chǔ)器和隨機(jī)存取存儲(chǔ)器,并向處理器702提供指令和數(shù)據(jù)。存儲(chǔ)器703可能包含高速隨機(jī)存取存儲(chǔ)器(random-accessmemory,ram),也可能還包括非易失性存儲(chǔ)器(non-volatilememory),例如至少1個(gè)磁盤存儲(chǔ)器。
處理器702,用于執(zhí)行以下操作,可選地,執(zhí)行存儲(chǔ)器703所存放的程序,并具體用于執(zhí)行以下操作:
確定主終端設(shè)備中對(duì)待測(cè)試應(yīng)用程序執(zhí)行兼容性測(cè)試操作的第一操作事件;
確定第一操作事件在從屬終端設(shè)備中相對(duì)應(yīng)的第二操作事件,其中,第二操作事件用于在從屬終端設(shè)備中執(zhí)行與第一操作事件相同或相似的兼容性測(cè)試操作;
將第二操作事件發(fā)送到從屬終端設(shè)備。
上述如本申請(qǐng)圖1和圖5-6所示實(shí)施例揭示的應(yīng)用程序兼容性測(cè)試裝置或管理者(master)節(jié)點(diǎn)執(zhí)行的方法可以應(yīng)用于處理器702中,或者由處理器702實(shí)現(xiàn)。處理器702可能是一種集成電路芯片,具有信號(hào)的處理能力。在實(shí)現(xiàn)過(guò)程中,上述方法的各步驟可以通過(guò)處理器702中的硬件的集成邏輯電路或者軟件形式的指令完成。上述的處理器702可以是通用處理器,包括中央處理器(centralprocessingunit,cpu)、網(wǎng)絡(luò)處理器(networkprocessor,np)等;還可以是數(shù)字信號(hào)處理器(digitalsignalprocessor,dsp)、專用集成電路(applicationspecificintegratedcircuit,asic)、現(xiàn)場(chǎng)可編程門陣列(field-programmablegatearray,fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫?shí)現(xiàn)或者執(zhí)行本申請(qǐng)實(shí)施例中的公開(kāi)的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。結(jié)合本申請(qǐng)實(shí)施例所公開(kāi)的方法的步驟可以直接體現(xiàn)為硬件譯碼處理器執(zhí)行完成,或者用譯碼處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機(jī)存儲(chǔ)器,閃存、只讀存儲(chǔ)器,可編程只讀存儲(chǔ)器或者電可擦寫可編程存儲(chǔ)器、寄存器等本領(lǐng)域成熟的存儲(chǔ)介質(zhì)中。該存儲(chǔ)介質(zhì)位于存儲(chǔ)器703,處理器702讀取存儲(chǔ)器703中的信息,結(jié)合其硬件完成上述方法的步驟。
應(yīng)用程序兼容性測(cè)試裝置700還可執(zhí)行圖1的方法,并實(shí)現(xiàn)管理者節(jié)點(diǎn)執(zhí)行的方法。
實(shí)施例4
本申請(qǐng)實(shí)施例還提出了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)一個(gè)或多個(gè)程序,該一個(gè)或多個(gè)程序包括指令,該指令當(dāng)被包括多個(gè)應(yīng)用程序的便攜式電子設(shè)備執(zhí)行時(shí),能夠使該便攜式電子設(shè)備執(zhí)行實(shí)施例1的方法。
在20世紀(jì)90年代,對(duì)于一個(gè)技術(shù)的改進(jìn)可以很明顯地區(qū)分是硬件上的改進(jìn)(例如,對(duì)二極管、晶體管、開(kāi)關(guān)等電路結(jié)構(gòu)的改進(jìn))還是軟件上的改進(jìn)(對(duì)于方法流程的改進(jìn))。然而,隨著技術(shù)的發(fā)展,當(dāng)今的很多方法流程的改進(jìn)已經(jīng)可以視為硬件電路結(jié)構(gòu)的直接改進(jìn)。設(shè)計(jì)人員幾乎都通過(guò)將改進(jìn)的方法流程編程到硬件電路中來(lái)得到相應(yīng)的硬件電路結(jié)構(gòu)。因此,不能說(shuō)一個(gè)方法流程的改進(jìn)就不能用硬件實(shí)體模塊來(lái)實(shí)現(xiàn)。例如,可編程邏輯器件(programmablelogicdevice,pld)(例如現(xiàn)場(chǎng)可編程門陣列(fieldprogrammablegatearray,fpga))就是這樣一種集成電路,其邏輯功能由用戶對(duì)器件編程來(lái)確定。由設(shè)計(jì)人員自行編程來(lái)把一個(gè)數(shù)字系統(tǒng)“集成”在一片pld上,而不需要請(qǐng)芯片制造廠商來(lái)設(shè)計(jì)和制作專用的集成電路芯片。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logiccompiler)”軟件來(lái)實(shí)現(xiàn),它與程序開(kāi)發(fā)撰寫時(shí)所用的軟件編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語(yǔ)言來(lái)撰寫,此稱之為硬件描述語(yǔ)言(hardwaredescriptionlanguage,hdl),而hdl也并非僅有一種,而是有許多種,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)與verilog。本領(lǐng)域技術(shù)人員也應(yīng)該清楚,只需要將方法流程用上述幾種硬件描述語(yǔ)言稍作邏輯編程并編程到集成電路中,就可以很容易得到實(shí)現(xiàn)該邏輯方法流程的硬件電路。
控制器可以按任何適當(dāng)?shù)姆绞綄?shí)現(xiàn),例如,控制器可以采取例如微處理器或處理器以及存儲(chǔ)可由該(微)處理器執(zhí)行的計(jì)算機(jī)可讀程序代碼(例如軟件或固件)的計(jì)算機(jī)可讀介質(zhì)、邏輯門、開(kāi)關(guān)、專用集成電路(applicationspecificintegratedcircuit,asic)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存儲(chǔ)器控制器還可以被實(shí)現(xiàn)為存儲(chǔ)器的控制邏輯的一部分。本領(lǐng)域技術(shù)人員也知道,除了以純計(jì)算機(jī)可讀程序代碼方式實(shí)現(xiàn)控制器以外,完全可以通過(guò)將方法步驟進(jìn)行邏輯編程來(lái)使得控制器以邏輯門、開(kāi)關(guān)、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來(lái)實(shí)現(xiàn)相同功能。因此這種控制器可以被認(rèn)為是一種硬件部件,而對(duì)其內(nèi)包括的用于實(shí)現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)?;蛘呱踔粒梢詫⒂糜趯?shí)現(xiàn)各種功能的裝置視為既可以是實(shí)現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。
上述實(shí)施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來(lái)實(shí)現(xiàn)。一種典型的實(shí)現(xiàn)設(shè)備為計(jì)算機(jī)。具體的,計(jì)算機(jī)例如可以為個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)、蜂窩電話、相機(jī)電話、智能電話、個(gè)人數(shù)字助理、媒體播放器、導(dǎo)航設(shè)備、電子郵件設(shè)備、游戲控制臺(tái)、平板計(jì)算機(jī)、可穿戴設(shè)備或者這些設(shè)備中的任何設(shè)備的組合。
為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
還需要說(shuō)明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、商品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、商品或者設(shè)備中還存在另外的相同要素。
本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過(guò)通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
以上所述僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō),本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。