本發(fā)明涉及智能控制領(lǐng)域,特別涉及一種圖形界面語(yǔ)義描述系統(tǒng)及其建立方法和操作路徑生成方法。
背景技術(shù):
在信息技術(shù)和工業(yè)自動(dòng)化相結(jié)合的領(lǐng)域,實(shí)現(xiàn)具有人工智能的自動(dòng)化生產(chǎn)和測(cè)試是近年來(lái)發(fā)展的熱點(diǎn)之一,用智能機(jī)械化操作替代人工操作的智能自動(dòng)化控制是一個(gè)發(fā)展趨勢(shì);另外,一些綜合性強(qiáng)、構(gòu)成復(fù)雜的產(chǎn)品,如飛機(jī)、汽車、輪船等,在投入使用之前,需要進(jìn)行大量的功能模擬、性能測(cè)試和結(jié)果分析,而工業(yè)機(jī)器人廣泛的應(yīng)用于自動(dòng)化生產(chǎn)和測(cè)試過(guò)程中,其不僅可以減輕勞動(dòng)強(qiáng)度,提高勞動(dòng)生產(chǎn)率、降低勞動(dòng)成本,而且對(duì)提高產(chǎn)品的質(zhì)量,改善勞動(dòng)環(huán)境有很重要的意義。
然而,對(duì)復(fù)雜產(chǎn)品的智能自動(dòng)化測(cè)試必然與計(jì)算機(jī)軟件的自動(dòng)化操作密不可分。這是因?yàn)?,工業(yè)生產(chǎn)過(guò)程中對(duì)自動(dòng)化設(shè)備的人機(jī)交互操作和測(cè)試就是通過(guò)軟件執(zhí)行一系列操作,如響應(yīng)命令、響應(yīng)異常、記錄異常狀態(tài)等;通過(guò)軟件系統(tǒng)自動(dòng)規(guī)劃操作路徑,再將軟件系統(tǒng)發(fā)出的指令傳導(dǎo)至機(jī)械裝置(常見(jiàn)的如機(jī)械臂)輔助自動(dòng)完成操作。另外,計(jì)算機(jī)軟件的自動(dòng)化操作還用于遠(yuǎn)程交互中,如遠(yuǎn)程操作、遠(yuǎn)程培訓(xùn)和遠(yuǎn)程協(xié)助。獲取遠(yuǎn)程設(shè)備上的圖像在本地進(jìn)行分析,根據(jù)操作命令(可以是本地設(shè)定的命令、也可以是遠(yuǎn)程設(shè)備傳達(dá)的命令)規(guī)劃好操作路徑傳送到遠(yuǎn)程設(shè)備上,遠(yuǎn)程設(shè)備的后臺(tái)程序(如具有模擬鼠標(biāo)、鍵盤等操作的一些程序)按照路徑自動(dòng)進(jìn)行操作。
因此,在具有圖形圖像的人機(jī)界面的軟件自動(dòng)化測(cè)試(操作)過(guò)程中,特別解決的關(guān)鍵問(wèn)題是分析軟件界面特征和構(gòu)成,建立起軟件圖形界面的表述和描述模型,根據(jù)測(cè)試需求產(chǎn)生控制命令,生成操作路徑。界面特征通常用屏幕位圖、api解析界面元素、圖像識(shí)別等方式表示。屏幕位圖方式產(chǎn)生的數(shù)據(jù)量大,特別是支持多任務(wù)同時(shí)運(yùn)行的視窗應(yīng)用軟件,其圖形用戶界面的靈活多變,難以通過(guò)位圖比較分析,因而測(cè)試結(jié)果可靠性低。api解析界面元素的方法依賴于源程序、開發(fā)和調(diào)試環(huán)境,通用性較差。隨著圖像分析與識(shí)別技術(shù)發(fā)展和cpu、gpu性能的大幅度,基于此的圖形界面方法具有較高的可靠性,而且不依賴于待分析軟件程序源代碼、開發(fā)和調(diào)試環(huán)境。
圖形界面的描述方法的建模,現(xiàn)有的方法一般是采用樹狀結(jié)構(gòu)的描述模型。將待分析對(duì)象中的內(nèi)容按種類進(jìn)行劃分,不同種類對(duì)應(yīng)于一棵子樹,子樹中記錄所有的信息以便于查找,如專利申請(qǐng)?zhí)?01410452282.9《一種基于自動(dòng)化測(cè)試平臺(tái)的測(cè)試需求自動(dòng)分析方法》中提到的trm模型,就是以樹狀的結(jié)構(gòu)記錄待測(cè)試產(chǎn)品的相關(guān)信息如名稱、版本號(hào)等。由于視窗軟件的各界面之間都是有聯(lián)系的,這種聯(lián)系可以是雙向也可以是單向,因此樹狀結(jié)構(gòu)不能反應(yīng)各子樹之間的聯(lián)系,也不能完全滿足需求。有的方法采用有限狀態(tài)機(jī)fsm表示,圖形界面的內(nèi)容表現(xiàn)形式作為狀態(tài)節(jié)點(diǎn),對(duì)軟件的輸入輸出作為狀態(tài)轉(zhuǎn)移的事件,這類方法會(huì)因界面內(nèi)容變化多樣,而產(chǎn)生狀態(tài)爆炸的問(wèn)題。還有的方法采用event-flow事件流的綜合方式,同時(shí)解決軟件界面描述和測(cè)試用例的生成問(wèn)題,該類方法還是難以解決因事件數(shù)量增加而模型空間急劇增大的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)以上出現(xiàn)的問(wèn)題,本發(fā)明提出了一種不依賴待分析軟件程序源代碼、開發(fā)和調(diào)試環(huán)境,僅僅基于待分析軟件的圖形界面,對(duì)待分析軟件整體進(jìn)行語(yǔ)義描述的語(yǔ)義描述系統(tǒng)建立方法
為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供了以下技術(shù)方案:
一種圖像界面語(yǔ)義描述系統(tǒng)建立方法,包含如下步驟:
包括采集所有界面圖像信息的步驟;應(yīng)注意的是,本文中提到的所有界面均指待分析軟件的所有窗口界面;在一些實(shí)施例中,待分析軟件系統(tǒng)的窗口界面可能是全部以頁(yè)面的形式或者一部分是窗口界面,一部分是頁(yè)面的方式展現(xiàn),應(yīng)聲明的是,本發(fā)明中提到界面時(shí),界面同時(shí)包含窗口界面、頁(yè)面的含義。
包括采集各個(gè)界面靜態(tài)屬性信息的步驟;
包括采集各個(gè)界面中可以觸發(fā)操作的標(biāo)識(shí)的圖像信息的步驟;
包括采集可執(zhí)行操作的步驟;
包括將可執(zhí)行操作與觸發(fā)該操作的標(biāo)識(shí)進(jìn)行對(duì)應(yīng)的步驟。
其中,各個(gè)采集步驟可以是自動(dòng)采集也可以是人工手動(dòng)采集,或者自動(dòng)采集和人工采集相結(jié)合,比如,各個(gè)界面的圖像信息完全可以實(shí)現(xiàn)自動(dòng)采集,而各個(gè)界面中出發(fā)操作的標(biāo)識(shí),可以采用自動(dòng)采集加人工校正的方式進(jìn)行采集;而可執(zhí)行操作,既可以是通過(guò)數(shù)據(jù)導(dǎo)入的方式進(jìn)行采集,也可以依靠人工進(jìn)行輸入校正;而將可執(zhí)行操作和標(biāo)識(shí)進(jìn)行對(duì)應(yīng)的步驟,優(yōu)選采用人工操作的方式實(shí)現(xiàn),以提高正確率;但是不排除可以采用相應(yīng)算法自動(dòng)完成對(duì)應(yīng)操作。
進(jìn)一步的,還包括從可執(zhí)行操作中提取界面之間的跳轉(zhuǎn)關(guān)系并記錄的步驟,如上所述,各個(gè)界面之間的跳轉(zhuǎn),當(dāng)然既包含窗口界面之間的跳轉(zhuǎn),也包含頁(yè)面之間的跳轉(zhuǎn),或者窗口界面和頁(yè)面之間的跳轉(zhuǎn);跳轉(zhuǎn)包括通過(guò)鏈接或按鈕打開新的界面,也包括通過(guò)按鈕或者圖標(biāo)標(biāo)識(shí)進(jìn)行相應(yīng)操作關(guān)閉相應(yīng)界面。
進(jìn)一步的,所述界面的靜態(tài)屬性信息包括界面的制約屬性,制約屬性為真是,說(shuō)明該界面為模態(tài)界面,反之,則說(shuō)明該界面為非模態(tài)界面;眾所周知的是,所謂模態(tài)界面指,用戶想要操作其他界面時(shí),必須關(guān)閉該界面,常見(jiàn)的視窗操作系統(tǒng)中,大多數(shù)彈出式對(duì)話框均為模態(tài)對(duì)話框,即,當(dāng)其存在時(shí),用戶無(wú)法操作同一軟件系統(tǒng)中的其他界面。
同時(shí),靜態(tài)屬性信息還包括界面的id號(hào)、界面包含的文字以及界面包含的按鈕中的一項(xiàng)或多項(xiàng)。
進(jìn)一步的,標(biāo)識(shí)包括按鈕標(biāo)識(shí)、文本標(biāo)識(shí)、菜單標(biāo)識(shí)、滾條標(biāo)識(shí)中一種或多種。
本發(fā)明同時(shí)提供一種基于圖形界面語(yǔ)義描述待分析軟件系統(tǒng)整體架構(gòu)的描述系統(tǒng),包括,視圖模塊及操作模塊;其中,
所述視圖模塊包括待操作對(duì)象(待分析軟件)中所有界面的圖像信息以及各個(gè)界面中可以觸發(fā)操作的標(biāo)識(shí)信息,一些實(shí)施例中,視圖模塊也可以包括各個(gè)界面中不會(huì)觸發(fā)操作的其他信息,比如僅僅起到展示或者其他作用的圖片信息、文本信息、色彩信息等;
所述操作模塊包括待操作對(duì)象中所有的可執(zhí)行操作的信息;所述可執(zhí)行操作信息與觸發(fā)該操作的標(biāo)識(shí)一一對(duì)應(yīng),相應(yīng)的,各個(gè)可執(zhí)行操作,也根據(jù)觸發(fā)該操作的標(biāo)識(shí)所在的界面的不同而分組;一般的,將同一界面中,所有可以觸發(fā)的可執(zhí)行操作分為操作組,為了方便管理可對(duì)各個(gè)可執(zhí)行操作以及操作組進(jìn)行編號(hào)或者采用其他標(biāo)識(shí)方法進(jìn)行表示區(qū)分;進(jìn)一步的,視圖模塊中存儲(chǔ)有各個(gè)界面的可跳轉(zhuǎn)關(guān)系;而相應(yīng)的,在操作模塊中,由于各個(gè)可執(zhí)行操作按照觸發(fā)標(biāo)識(shí)的歸屬也進(jìn)行了對(duì)應(yīng)分組,因此,操作模塊中也可以存儲(chǔ)有各個(gè)操作組的跳轉(zhuǎn)關(guān)系,理所當(dāng)然的,操作組的跳轉(zhuǎn)關(guān)系和各個(gè)操作組對(duì)應(yīng)的界面的跳轉(zhuǎn)關(guān)系完全相同;可以將界面之間的跳轉(zhuǎn)關(guān)系定位為第一跳轉(zhuǎn)關(guān)系,而將操作組之間的跳轉(zhuǎn)關(guān)系定義為第二跳轉(zhuǎn)關(guān)系;則第一跳轉(zhuǎn)關(guān)系和第二跳轉(zhuǎn)關(guān)系之間為對(duì)應(yīng)的。
綜上,本系統(tǒng)采用兩層關(guān)系模型來(lái)描述待分析軟件(待操作軟件、待操作對(duì)象)的具有視窗風(fēng)格的軟件圖形界面,兩層模型具體指是視圖模塊構(gòu)成的視圖層以及操作模塊構(gòu)成的操作層;通過(guò)建立該兩層模型全面的描述了整個(gè)待分析軟件的框架結(jié)構(gòu),形成待處理軟件界面圖像的一個(gè)語(yǔ)義網(wǎng)絡(luò)圖;其中,視圖層(視圖模塊)描述了待處理軟件各頁(yè)面(窗口界面)之間的跳轉(zhuǎn)關(guān)系,操作層則描述了待處理軟件各頁(yè)面(窗口界面)種包含的各種操作標(biāo)識(shí)(如圖標(biāo)、圖畫、按鈕、滑條、文本框)的屬性以及他們所觸發(fā)的操作,該操作比如可以是,不同窗口界面或者頁(yè)面的跳轉(zhuǎn),跳出、界面或者頁(yè)面的放大、縮小、關(guān)閉、移動(dòng);當(dāng)然操作也包括對(duì)受控機(jī)械設(shè)備發(fā)出指令;簡(jiǎn)而言之,視圖層和操作層通過(guò)按按鈕集合和頁(yè)面間的從屬關(guān)系產(chǎn)生聯(lián)系,這是生成路徑的數(shù)據(jù)基礎(chǔ)。
在上述內(nèi)容的基礎(chǔ)上,本發(fā)明同時(shí)提供一種應(yīng)用上述圖形界面語(yǔ)義描述系統(tǒng)自動(dòng)產(chǎn)生對(duì)軟件的操作路徑的生成方法,包括,
接收目標(biāo)控制指令,根據(jù)目標(biāo)控制指令確定目標(biāo)界面;如該目標(biāo)控制指令可以是向受軟件系統(tǒng)控制的機(jī)械設(shè)備發(fā)出某一特定指令;當(dāng)目標(biāo)控制指令確定后,可自圖形界面語(yǔ)義描述系統(tǒng)中的操作模塊中尋找該特定指令,進(jìn)而尋找到視圖模塊中觸發(fā)該特定指令的界面;該界面即為目標(biāo)界面。
基于圖像識(shí)別當(dāng)前界面;當(dāng)前界面可能是一個(gè)也可能是多個(gè);通過(guò)圖像采集,并將采集到的圖像和視圖模塊中預(yù)存的各個(gè)界面的信息進(jìn)行對(duì)比,獲取當(dāng)前界面信息;
根據(jù)當(dāng)前存在的各個(gè)界面的制約屬性選擇起始界面,理所當(dāng)然的,如果當(dāng)前界面中存在制約屬性為真的界面,其一定是起始界面,因?yàn)橹萍s屬性為真意味著,該界面的存在會(huì)阻止其他界面被操作;而若當(dāng)前界面中不存在制約屬性為真的界面時(shí),根據(jù)預(yù)定規(guī)則或者隨機(jī)選擇起始界面;該預(yù)訂規(guī)則比如可以是,比較各個(gè)界面展現(xiàn)的完整度,完整度最高的界面定位起始界面;該預(yù)訂規(guī)則比如還可以是,比較各個(gè)當(dāng)前界面的展現(xiàn)面積,將面積較大的界面定位起始界面等等;
根據(jù)路徑算法生成自起始界面跳轉(zhuǎn)至目標(biāo)界面的路徑,路徑算法如可以是dijkstra算法、遺傳算法、蟻群算法、郭濤算法、sk算法,可以根據(jù)上述算法中的一個(gè)或多個(gè)結(jié)合各個(gè)界面之間的跳轉(zhuǎn)關(guān)系計(jì)算路徑。
根據(jù)各個(gè)界面中的標(biāo)識(shí)和可執(zhí)行操作的對(duì)應(yīng)關(guān)系生成操作路徑。
一些實(shí)施例中,在識(shí)別界面的步驟中,基于tf‐idf進(jìn)行識(shí)別,具體包括,
對(duì)樣本中圖標(biāo)、文字tf‐idf值權(quán)值進(jìn)行設(shè)定;
采集待識(shí)別界面圖像;
提取界面中圖標(biāo)、文字tf‐idf值;
根據(jù)特征對(duì)界面進(jìn)行劃分。這是由于,通常軟件運(yùn)行的結(jié)果或者狀態(tài)主要在視窗界面或者頁(yè)面顯示,視窗頁(yè)面內(nèi)的指示符號(hào)信息不是固定不變的,但是視圖頁(yè)面的基本框架、組成結(jié)構(gòu)、標(biāo)識(shí)卻是不變或者可預(yù)測(cè)的,通過(guò)上述的頁(yè)面識(shí)別分類方式,不但能識(shí)別視圖頁(yè)面窗口的分類,還能確定頁(yè)面內(nèi)的變化內(nèi)容。因此對(duì)圖形界面的軟件測(cè)試結(jié)果和分析是完備的,不會(huì)導(dǎo)致界面顯示的信息丟失。
進(jìn)一步的,當(dāng)從起始界面到目標(biāo)界面的路徑有多條時(shí),根據(jù)路徑計(jì)算算法選擇最優(yōu)路徑。
進(jìn)一步的,一些情況下,在路徑生成后,如果僅僅根據(jù)產(chǎn)生的路徑進(jìn)行操作,在操作路徑不固定或存在多步操作時(shí),由于同時(shí)存在多個(gè)當(dāng)前界面,且當(dāng)前界面有時(shí)會(huì)有大小的變化或者意外遮擋的情況,造成原有規(guī)劃路徑無(wú)法順利執(zhí)行,此時(shí),需要每進(jìn)行一步操作后對(duì)頁(yè)面重新分析規(guī)劃下一步路徑;即,在從起始界面到目標(biāo)界面進(jìn)行跳轉(zhuǎn)的過(guò)程中,每執(zhí)行一步操作,均檢測(cè)當(dāng)前界面是否與生成的規(guī)劃中路徑界面符合,如果不符合則重新規(guī)劃路徑。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果:本發(fā)明提供的圖形界面語(yǔ)義描述系統(tǒng)及其建立方法和操作路徑生成方法,給出了一種采用兩層關(guān)系模型描述軟件架構(gòu)的系統(tǒng),其采用了更適合視窗風(fēng)格的軟件圖形界面的場(chǎng)景語(yǔ)義對(duì)軟件系統(tǒng)進(jìn)行描述,相較于常規(guī)的單層語(yǔ)義網(wǎng)絡(luò)模型在同一層中用不同關(guān)系詞(如包含關(guān)系、屬于關(guān)系等)來(lái)描述場(chǎng)景中實(shí)體元素之間聯(lián)系的方式,本發(fā)明提供的雙層架構(gòu)便于劃分和推斷場(chǎng)景中包含實(shí)體種類和實(shí)體之間的關(guān)系。
同時(shí),本發(fā)明提供的兩層關(guān)系模型也優(yōu)于具有圖形化界面的軟件自動(dòng)化測(cè)試中常規(guī)采用的有限狀態(tài)機(jī)和事件流方法,這是因?yàn)榛趦蓪雨P(guān)系模型的語(yǔ)義圖是以視圖頁(yè)面為主要節(jié)點(diǎn),而視圖頁(yè)面的數(shù)量和表現(xiàn)形式通常是不變的。這樣就大大簡(jiǎn)化了語(yǔ)義圖中節(jié)點(diǎn)的數(shù)量,可有效避免狀態(tài)爆炸。
由于對(duì)視窗風(fēng)格軟件的圖形界面進(jìn)行語(yǔ)義描述的最終目的是實(shí)現(xiàn)自動(dòng)規(guī)劃操作路徑,從而實(shí)現(xiàn)自動(dòng)化的對(duì)被描述軟件系統(tǒng)進(jìn)行操作(測(cè)試),而本發(fā)明提供的兩層模型可以很方便地將頁(yè)面(相當(dāng)于實(shí)體)之間的關(guān)系、操作按鈕(實(shí)體的成份)和頁(yè)面之間的關(guān)系表達(dá)出來(lái),進(jìn)而產(chǎn)生適應(yīng)于兩層模型的軟件操作路徑的生成方法;即,依靠本發(fā)明提供的兩層架構(gòu),可以非常容易的根據(jù)操作目標(biāo)在視圖層生成頁(yè)面路徑,再通過(guò)頁(yè)路徑映射生成操作路徑。
附圖說(shuō)明:
圖1為本發(fā)明提供語(yǔ)義描述系統(tǒng)具體應(yīng)用示意圖。
圖2為本發(fā)明提供的圖形界面語(yǔ)義描述系統(tǒng)示例圖。
圖3為視圖模塊結(jié)構(gòu)示例圖。
圖4為操作模塊中可執(zhí)行操作分組示意圖。
圖5為應(yīng)用本發(fā)明提供的系統(tǒng)產(chǎn)生路徑示意圖。
圖6為本發(fā)明中提供的操作路徑生成及按照路徑操作示例圖。
圖7為以平衡機(jī)測(cè)量軟件為例采集的視圖模塊結(jié)構(gòu)圖。
圖8為以平衡機(jī)測(cè)量軟件為例的語(yǔ)義描述系統(tǒng)產(chǎn)生路徑示例。
圖9a至圖9g為圖8產(chǎn)生的路徑涉及到的界面展示。
具體實(shí)施方式
下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)描述。但不應(yīng)將此理解為本發(fā)明上述主題的范圍僅限于以下的實(shí)施例,凡基于本發(fā)明內(nèi)容所實(shí)現(xiàn)的技術(shù)均屬于本發(fā)明的范圍。
實(shí)施例1:本實(shí)施例提供一種圖像界面語(yǔ)義描述系統(tǒng)建立方法,包含如下步驟:
s110:采集所有界面圖像信息。應(yīng)注意的是,本文中提到的所有界面均指待分析軟件的所有窗口界面;在一些實(shí)施例中,待分析軟件系統(tǒng)的窗口界面可能是全部以頁(yè)面的形式或者一部分是窗口界面,一部分是頁(yè)面的方式展現(xiàn),應(yīng)聲明的是,本發(fā)明中提到界面時(shí),界面同時(shí)包含窗口界面、頁(yè)面的含義。
s120:采集各個(gè)界面靜態(tài)屬性信息。所述界面的靜態(tài)屬性信息包括界面的制約屬性,制約屬性為真是,說(shuō)明該界面為模態(tài)界面,反之,則說(shuō)明該界面為非模態(tài)界面;眾所周知的是,所謂模態(tài)界面指,用戶想要操作其他界面時(shí),必須關(guān)閉該界面,常見(jiàn)的視窗操作系統(tǒng)中,大多數(shù)彈出式對(duì)話框均為模態(tài)對(duì)話框,即,當(dāng)其存在時(shí),用戶無(wú)法操作同一軟件系統(tǒng)中的其他界面。同時(shí),靜態(tài)屬性信息還包括界面的id號(hào)、界面的包含的文字以及界面包含的按鈕中的一項(xiàng)或多項(xiàng)。
s130:采集各個(gè)界面中可以觸發(fā)操作的標(biāo)識(shí)的圖像信息;標(biāo)識(shí)包括按鈕標(biāo)識(shí)、文本標(biāo)識(shí)、菜單標(biāo)識(shí)、滾條標(biāo)識(shí)中一種或多種。
s140:采集可執(zhí)行操作。可執(zhí)行操作比如可以是頁(yè)面關(guān)閉、打開、隱藏、擴(kuò)大、縮小、輸入?yún)?shù)、發(fā)出指令、產(chǎn)生事件響應(yīng)等任何軟件常見(jiàn)的操作;應(yīng)注意的是,以上各個(gè)采集步驟可以是自動(dòng)采集也可以是人工手動(dòng)采集,或者自動(dòng)采集和人工采集相結(jié)合,比如,各個(gè)界面的圖像信息完全可以實(shí)現(xiàn)自動(dòng)采集,而各個(gè)界面中出發(fā)操作的標(biāo)識(shí),可以采用自動(dòng)采集加人工校正的方式進(jìn)行采集;而可執(zhí)行操作,既可以是通過(guò)數(shù)據(jù)導(dǎo)入的方式進(jìn)行采集,也可以依靠人工進(jìn)行輸入校正;而將可執(zhí)行操作和標(biāo)識(shí)進(jìn)行對(duì)應(yīng)的步驟,優(yōu)選采用人工操作的方式實(shí)現(xiàn),以提高正確率;但是不排除可以采用相應(yīng)算法自動(dòng)完成對(duì)應(yīng)操作。
s150:將可執(zhí)行操作與觸發(fā)該操作的標(biāo)識(shí)進(jìn)行對(duì)應(yīng)。進(jìn)一步的,在將可執(zhí)行操作與觸發(fā)該操作的標(biāo)識(shí)進(jìn)行對(duì)應(yīng)后,一方面還包括步驟s151:從可執(zhí)行操作中提取界面之間的跳轉(zhuǎn)關(guān)系并記錄;各個(gè)界面之間的跳轉(zhuǎn),當(dāng)然既包含窗口界面之間的跳轉(zhuǎn),也包含頁(yè)面之間的跳轉(zhuǎn),或者窗口界面和頁(yè)面之間的跳轉(zhuǎn);跳轉(zhuǎn)包括通過(guò)鏈接或按鈕打開新的界面,也包括通過(guò)按鈕或者圖標(biāo)標(biāo)識(shí)進(jìn)行相應(yīng)操作關(guān)閉相應(yīng)界面;而相應(yīng)的,還包括步驟s152:將各個(gè)可執(zhí)行操作按照觸發(fā)標(biāo)識(shí)的界面歸屬進(jìn)行分組形成操作組,即每個(gè)界面都對(duì)應(yīng)一個(gè)其可執(zhí)行操作組成的操作組。理所當(dāng)然的,操作組的跳轉(zhuǎn)關(guān)系和各個(gè)操作組對(duì)應(yīng)的界面的跳轉(zhuǎn)關(guān)系完全相同;可以將界面之間的跳轉(zhuǎn)關(guān)系定位為第一跳轉(zhuǎn)關(guān)系,而將操作組之間的跳轉(zhuǎn)關(guān)系定義為第二跳轉(zhuǎn)關(guān)系;則第一跳轉(zhuǎn)關(guān)系和第二跳轉(zhuǎn)關(guān)系之間為對(duì)應(yīng)的。
實(shí)施例2:本實(shí)施例則提供一種圖形界面語(yǔ)義描述系統(tǒng),其包括視圖模塊(視圖層)及操作模塊(操作層);其中,
所述視圖模塊包括待操作對(duì)象(待分析軟件)中所有界面的圖像信息以及各個(gè)界面中可以觸發(fā)操作的標(biāo)識(shí)信息,一些實(shí)施例中,視圖模塊也可以包括各個(gè)界面中不會(huì)觸發(fā)操作的其他信息,比如僅僅起到展示或者其他作用的圖片信息、文本信息、色彩信息等;而操作模塊包括待操作對(duì)象中所有的可執(zhí)行操作的信息;所述可執(zhí)行操作信息與觸發(fā)該操作的標(biāo)識(shí)一一對(duì)應(yīng),相應(yīng)的,各個(gè)可執(zhí)行操作,也根據(jù)觸發(fā)該操作的標(biāo)識(shí)所在的界面的不同而分組;一般的,將同一界面中,所有可以觸發(fā)的可執(zhí)行操作分為操作組,為了方便管理可對(duì)各個(gè)可執(zhí)行操作以及操作組進(jìn)行編號(hào)或者采用其他標(biāo)識(shí)方法進(jìn)行表示區(qū)分;進(jìn)一步的,視圖模塊中存儲(chǔ)有各個(gè)界面的可跳轉(zhuǎn)關(guān)系;而相應(yīng)的,在操作模塊中,由于各個(gè)可執(zhí)行操作按照觸發(fā)標(biāo)識(shí)的歸屬也進(jìn)行了對(duì)應(yīng)分組,因此,操作模塊中也可以存儲(chǔ)有各個(gè)操作組的跳轉(zhuǎn)關(guān)系,理所當(dāng)然的,操作組的跳轉(zhuǎn)關(guān)系和各個(gè)操作組對(duì)應(yīng)的界面的跳轉(zhuǎn)關(guān)系完全相同;可以將界面之間的跳轉(zhuǎn)關(guān)系定位為第一跳轉(zhuǎn)關(guān)系,而將操作組之間的跳轉(zhuǎn)關(guān)系定義為第二跳轉(zhuǎn)關(guān)系;則第一跳轉(zhuǎn)關(guān)系和第二跳轉(zhuǎn)關(guān)系之間為對(duì)應(yīng)的。
具體的,如圖3所示,視層模塊(視圖層)主要描述軟件界面圖像的靜態(tài)信息,將每個(gè)界面視為一個(gè)pagenode,具體示例中,每個(gè)pagenode包含的信息比如可以如表1所示:
表1
本示例中,pagenode描述子包含頁(yè)面信息和關(guān)聯(lián)信息兩類信息。頁(yè)面信息包含了頁(yè)面的基本屬性和圖文元素。每個(gè)頁(yè)面有唯一的id編號(hào)供區(qū)分。比如,在windows系統(tǒng)下,軟件視窗界面都是以文檔窗口、對(duì)話框等為基礎(chǔ)。就對(duì)話框而言,有模態(tài)和非模態(tài)之分,而模態(tài)對(duì)話框往往會(huì)制約其他所有的頁(yè)面,若需操作其他頁(yè)面,必須先關(guān)閉模態(tài)對(duì)話框。用isrestrained來(lái)描述頁(yè)面的制約屬性。image表示該界面包含的圖標(biāo)集合,這些圖標(biāo)既可以是可操作項(xiàng),也可以是非操作項(xiàng)。一個(gè)頁(yè)面中包含了多條文本信息text。每條文本信息text包含character,color,isboder屬性。character用來(lái)描述頁(yè)面上的靜態(tài)文本內(nèi)容,color描述文本的顏色、isboder表示文字外圍是否含有邊框。在對(duì)一幅圖像進(jìn)行分析并檢測(cè)該圖像包含哪些頁(yè)面時(shí),需要通過(guò)概率的方法利用這些信息決策。關(guān)聯(lián)信息是與操作層關(guān)聯(lián)元素的頁(yè)內(nèi)相關(guān)信息belongbuttons。操作路徑的生成需要從視圖層映射到操作層,則視圖層與操作層的關(guān)系需要有所體現(xiàn)。因此belongbuttons用于描述一個(gè)頁(yè)面中存在的所有可操作按鈕的集合,建立視圖層和操作層之間的聯(lián)系。
與之對(duì)應(yīng)的,如圖4所示,操作模塊(操作層)內(nèi)的每一個(gè)元素記為optionnode,同一個(gè)頁(yè)面內(nèi)所有可操作按鈕組成一個(gè)按鈕集合optionset,操作層主要描述軟件的可操作性信息,optionnode和optionset的描述子如表2和表3所示。
表2optionnode描述子
表3optionset的描述子
如表2所示,optionnode包含兩類信息,可操作的按鈕信息(data)以及與下級(jí)菜單中按鈕的關(guān)聯(lián)信息(nextbuttons)??刹僮黜?xiàng)分為兩種圖標(biāo)按鈕和文本按鈕。對(duì)于一個(gè)可操作項(xiàng)而言,需要知道它的操作方式operatestyle,按鈕屬性ishidden。對(duì)于文本按鈕這類可操作項(xiàng)而言,除操作方式和按鈕屬性之外還需要知道它的組成文字character、文本顏色color和文字的邊框信息isborder。操作方式一般有很多種,具體根據(jù)軟件的設(shè)計(jì)方式確定。以windows操作系統(tǒng)為例,軟件界面中的一個(gè)菜單項(xiàng)可能會(huì)有子菜單,而子項(xiàng)是不會(huì)直接顯示在當(dāng)前軟件界面圖像中的,稱這種特點(diǎn)為隱藏屬性。ishidden就用來(lái)描述該屬性。操作按鈕會(huì)出現(xiàn)兩種情況,如果含有子菜單,還停留在當(dāng)前頁(yè)面,否則會(huì)跳轉(zhuǎn)到其他頁(yè)面。linkpage就是用來(lái)記錄操作按鈕后的跳轉(zhuǎn)頁(yè)面。與下級(jí)菜單中按鈕的關(guān)聯(lián)信息nextbuttons。由于按鈕存在隱藏屬性,生成路徑的過(guò)程需要知道具有該屬性的按鈕的上一級(jí)是哪個(gè)按鈕,因此不具有隱藏屬性的按鈕的optionset中需要記錄與之相關(guān)聯(lián)的有隱藏屬性的按鈕集合信息。如表3所示,optionset包含兩類信息,所屬頁(yè)面編號(hào)(pageid)和按鈕集合相關(guān)信息(pnodes)。pageid描述這一按鈕集合位于視圖層的哪一個(gè)頁(yè)面上。pnodes描述這一按鈕集合的所有信息,通過(guò)pnodes可以知道該頁(yè)面所有具有隱藏屬性的按鈕及每一個(gè)按鈕的data和nextbuttons信息。
圖2給出了本發(fā)明提供的語(yǔ)義描述系統(tǒng)的視圖模塊示例圖,如圖所示,視圖模塊包含了待分析軟件的所有界面的基于圖形的信息page1、page2、page3;而操作模塊中則包含了各個(gè)界面中可以觸發(fā)的可執(zhí)行操作,如界面page1中可觸發(fā)的可執(zhí)行操作包括op11、op12、......、op1n;界面page2中可觸發(fā)的可執(zhí)行操作包括op21、op22、......、op2m;界面page3中可觸發(fā)的可執(zhí)行操作包括op31、op32;而界面page2和界面page3為可互相跳轉(zhuǎn)的關(guān)系,將這種可互相跳轉(zhuǎn)的關(guān)系定義為da(p2,p3),而與之對(duì)應(yīng)的是,界面page2只能單向跳轉(zhuǎn)至界面page1,將這種跳轉(zhuǎn)關(guān)系記為sa(p2,p1),其中p1表示page1,p2表示page2,p3表示page3;而可執(zhí)行操作和對(duì)應(yīng)的界面之間的聯(lián)系用in(p1,b1)來(lái)定義,其中,b1表示可執(zhí)行操作op11;與此同時(shí),圖4則給出了將操作層中各個(gè)可執(zhí)行操作按照所屬界面進(jìn)行分組示例。
綜上,本系統(tǒng)采用兩層關(guān)系模型來(lái)描述待分析軟件(待操作軟件、待操作對(duì)象)的具有視窗風(fēng)格的軟件圖形界面,兩層模型具體指是視圖模塊構(gòu)成的視圖層以及操作模塊構(gòu)成的操作層;通過(guò)建立該兩層模型全面的描述了整個(gè)待分析軟件的框架結(jié)構(gòu),形成待處理軟件界面圖像的一個(gè)語(yǔ)義網(wǎng)絡(luò)圖;其中,視圖層(視圖模塊)描述了待處理軟件各頁(yè)面(窗口界面)之間的跳轉(zhuǎn)關(guān)系,操作層則描述了待處理軟件各頁(yè)面(窗口界面)種包含的各種操作標(biāo)識(shí)(如圖標(biāo)、圖畫、按鈕、滑條、文本框)的屬性以及他們所觸發(fā)的操作,該操作比如可以是,不同窗口界面或者頁(yè)面的跳轉(zhuǎn),跳出、界面或者頁(yè)面的放大、縮小、關(guān)閉、移動(dòng);當(dāng)然操作也包括對(duì)受控機(jī)械設(shè)備發(fā)出指令;簡(jiǎn)而言之,視圖層和操作層通過(guò)按按鈕集合和頁(yè)面間的從屬關(guān)系產(chǎn)生聯(lián)系,這是生成路徑的數(shù)據(jù)基礎(chǔ)。
實(shí)施例3:本實(shí)施例則提供一種應(yīng)用實(shí)施例2提供的系統(tǒng)產(chǎn)生自動(dòng)操作路徑的方法,其步驟包括,
s210:接收目標(biāo)控制指令,根據(jù)目標(biāo)控制指令確定目標(biāo)界面;如該目標(biāo)控制指令可以是向受軟件系統(tǒng)控制的機(jī)械設(shè)備發(fā)出某一特定指令;當(dāng)目標(biāo)控制指令確定后,可自圖形界面語(yǔ)義描述系統(tǒng)中的操作模塊中尋找該特定指令,進(jìn)而尋找到視圖模塊中觸發(fā)該特定指令的界面;該界面即為目標(biāo)界面。
s220:基于圖像識(shí)別當(dāng)前界面;當(dāng)前界面可能是一個(gè)也可能是多個(gè);通過(guò)圖像采集,并將采集到的圖像和視圖模塊中預(yù)存的各個(gè)界面的信息進(jìn)行對(duì)比,獲取當(dāng)前界面信息;
s230:根據(jù)當(dāng)前存在的各個(gè)界面的制約屬性選擇起始界面,理所當(dāng)然的,如果當(dāng)前界面中存在制約屬性為真的界面,其一定是起始界面,因?yàn)橹萍s屬性為真意味著,該界面的存在會(huì)阻止其他界面被操作;而若當(dāng)前界面中不存在制約屬性為真的界面時(shí),根據(jù)預(yù)定規(guī)則或者隨機(jī)選擇起始界面;該預(yù)訂規(guī)則比如可以是,比較各個(gè)界面展現(xiàn)的完整度,完整度最高的界面定位起始界面;該預(yù)訂規(guī)則比如還可以是,比較各個(gè)當(dāng)前界面的展現(xiàn)面積,將面積較大的界面定位起始界面等等;
s240:根據(jù)路徑算法生成自起始界面跳轉(zhuǎn)至目標(biāo)界面的路徑,路徑算法如可以是dijkstra算法、遺傳算法、蟻群算法、郭濤算法、sk算法,可以根據(jù)上述算法中的一個(gè)或多個(gè)結(jié)合各個(gè)界面之間的跳轉(zhuǎn)關(guān)系計(jì)算路徑。
s250:結(jié)合各個(gè)界面中的標(biāo)識(shí)和可執(zhí)行操作的對(duì)應(yīng)關(guān)系生成操作路徑。
圖5給出了生成的路徑的具體示例,首先確定目標(biāo)界面是pn8,而當(dāng)前界面是pn9,根據(jù)各個(gè)界面之間的跳轉(zhuǎn)關(guān)系,尋找pn8跳轉(zhuǎn)至pn9的路徑為pn8→pn1→pn2→pn4→pn8;繼而根據(jù)界面中可執(zhí)行操作的歸屬關(guān)系以及跳轉(zhuǎn)執(zhí)行方式,確定操作層的操作路徑為op91→op13→op22→op45→op81。
根據(jù)特征對(duì)界面進(jìn)行劃分。這是由于,通常軟件運(yùn)行的結(jié)果或者狀態(tài)主要在視窗界面或者頁(yè)面顯示,視窗頁(yè)面內(nèi)的指示符號(hào)信息不是固定不變的,但是視圖頁(yè)面的基本框架、組成結(jié)構(gòu)、標(biāo)識(shí)卻是不變或者可預(yù)測(cè)的,通過(guò)上述的頁(yè)面識(shí)別分類方式,不但能識(shí)別視圖頁(yè)面窗口的分類,還能確定頁(yè)面內(nèi)的變化內(nèi)容。因此對(duì)圖形界面的軟件測(cè)試結(jié)果和分析是完備的,不會(huì)導(dǎo)致界面顯示的信息丟失。
而在具體應(yīng)用上述規(guī)劃的路徑執(zhí)行自動(dòng)測(cè)試時(shí),其應(yīng)用原理如圖1、圖6所示,將目標(biāo)控制指令(操作目的)輸入至圖形界面語(yǔ)義描述系統(tǒng),系統(tǒng)按照上述步驟,利用圖像識(shí)別系統(tǒng)自動(dòng)識(shí)別屏幕上界面圖文信息,并進(jìn)一步的自動(dòng)生成操作路徑,系統(tǒng)按照該步驟控制待測(cè)試軟件(實(shí)施例中的待分析軟件系統(tǒng))。待測(cè)試軟件根據(jù)指令控制自動(dòng)化機(jī)械裝置或者其他后臺(tái)程序。
當(dāng)從起始界面到目標(biāo)界面的路徑有多條時(shí),根據(jù)路徑計(jì)算算法選擇最優(yōu)路徑。而一些情況下,在路徑生成后,如果僅僅根據(jù)產(chǎn)生的路徑進(jìn)行操作,在操作路徑不固定或存在多步操作時(shí),由于同時(shí)存在多個(gè)當(dāng)前界面,且當(dāng)前界面有時(shí)會(huì)有大小的變化或者意外遮擋的情況,造成原有規(guī)劃路徑無(wú)法順利執(zhí)行,此時(shí),需要每進(jìn)行一步操作后對(duì)頁(yè)面重新分析規(guī)劃下一步路徑;即,在從起始界面到目標(biāo)界面進(jìn)行跳轉(zhuǎn)的過(guò)程中,每執(zhí)行一步操作,均檢測(cè)當(dāng)前界面是否與生成的規(guī)劃中路徑界面符合,如果不符合則重新規(guī)劃路徑。
實(shí)施例4:具體實(shí)施例中,在識(shí)別界面的步驟中,采用基于tf‐idf的方式對(duì)界面進(jìn)行識(shí)別劃分,具體包括,
對(duì)樣本中圖標(biāo)、文字tf‐idf值權(quán)值進(jìn)行設(shè)定;
采集待識(shí)別界面圖像;
提取界面中圖標(biāo)、文字tf‐idf值;tf是詞頻,表示特征詞在單個(gè)樣本中出現(xiàn)的頻率。idf是逆向文本頻率,指該特征詞出現(xiàn)在樣本庫(kù)樣本中的頻率。設(shè)樣本庫(kù)為s={s1,s2,s3,…,sn},n是樣本庫(kù)中樣本的數(shù)量。特征詞集合為f={f1,f2,f3,…,fm},m是特征詞的個(gè)數(shù),則特征詞fi在某一樣本中的tf-idf權(quán)值由式計(jì)算獲得。
tf-idf(fi)=tf(fi)×idf(fi)(1)
式中num(fi|st)表示fi在樣本st中出現(xiàn)的次數(shù),num(st)表示樣本st中所有的文本總數(shù)。式中d(fi)表示樣本中含有特征詞fi的樣本個(gè)數(shù),分母加1是為了避免分母為0的情況。
借助tf-idf的思想,給定圖標(biāo)tf-idf值的含義及計(jì)算方法。tf解釋為圖標(biāo)的區(qū)域頻率,表示某一圖標(biāo)在頁(yè)面上的所有圖標(biāo)中出現(xiàn)的頻率。idf解釋為逆圖標(biāo)區(qū)域頻率,表示頁(yè)面圖像集合中含有某一圖標(biāo)的不同頁(yè)面的個(gè)數(shù)。圖標(biāo)的tf-idf值由式獲得。
tf-idf(ik,j)=tf(ik,j)×idf(ik)=tf(ik,j)×log(n/df(ik))(4)
式中tf(ik,j)表示第k個(gè)圖標(biāo)在界面j中出現(xiàn)的頻率,n表示界面總個(gè)數(shù),df(ik)表示包含第k個(gè)圖標(biāo)的頁(yè)面?zhèn)€數(shù)。由于特征圖標(biāo)一定在某界面中,因此df(ik)一定大于0;應(yīng)注意的是,公式(1)、公式(4)中“tf-idf”為一個(gè)整體,其中的連字符“-”不是減號(hào),同理,本文中出現(xiàn)的“tf-idf”均為表示一個(gè)整體,而非tf減去idf。
樣本中圖標(biāo)和文字的tf-idf值設(shè)定。根據(jù)雙層模型中視圖層記錄的靜態(tài)信息,分別設(shè)定每個(gè)頁(yè)面節(jié)點(diǎn)中圖標(biāo)和文字的tf-idf值,可由式(1)和式(4)計(jì)算獲得;在待分類頁(yè)面的圖標(biāo)和文字被識(shí)別之后,該待分類頁(yè)面中文字和圖標(biāo)的tf-idf值同樣由式(1)和式(4)計(jì)算獲得。
根據(jù)特征進(jìn)行頁(yè)面分類。在獲得樣本和待分類頁(yè)面的圖標(biāo)和文字的tf-idf特征之后,分別計(jì)算樣本和待分類頁(yè)面之間的歐式距離,距離越小,待分類頁(yè)面屬于該類樣本的可能性就越大。根據(jù)實(shí)驗(yàn)設(shè)定相應(yīng)的閾值,如果距離小于這個(gè)值,則認(rèn)為圖像中存在這些類別的頁(yè)面。
實(shí)施例5:如圖7、圖8、圖9a至圖9g所示,本實(shí)施例以平衡機(jī)測(cè)量軟件為例展示了應(yīng)用本發(fā)明提供的語(yǔ)義描述系統(tǒng)的具體應(yīng)用;其中圖7展示了應(yīng)用實(shí)施例1的方法采集的視圖模塊結(jié)構(gòu)圖,圖中展示了平衡機(jī)測(cè)量軟件部分界面的跳轉(zhuǎn)關(guān)系。而圖8則給出了起始頁(yè)面為“添加自定義頁(yè)面尺寸”,目標(biāo)界面為“轉(zhuǎn)子參數(shù)設(shè)置”的操作路徑圖,以及具體操作路徑。圖9a至圖9g為圖8產(chǎn)生的路徑涉及到的界面展示,其中,圖9a為起始界面“添加自定義頁(yè)面尺寸”,圖9b為“添加編輯自定義頁(yè)面尺寸”界面,圖9c為“自定義頁(yè)面大小”界面,圖9d為“打印布局”界面,圖9e為“打印”界面,圖9f為“平衡機(jī)測(cè)量主界面”,圖9g為目標(biāo)界面“轉(zhuǎn)子參數(shù)設(shè)置”。