本發(fā)明涉及計算機(jī)軟件測試技術(shù)領(lǐng)域,尤其涉及一種軟件界面的自動化測試方法及裝置。
背景技術(shù):
當(dāng)前,軟件測試是為了發(fā)現(xiàn)軟件程序中的錯誤而執(zhí)行軟件程序的過程,軟件測試的主要工作內(nèi)容是驗證(verification)和確認(rèn)(validation)。其中,驗證是保證軟件正確地實現(xiàn)既定功能的一系列活動,即保證軟件做了所期望的事情。而確認(rèn)是一系列的活動和過程,目的是想證實在一個給定的外部環(huán)境中軟件的邏輯正確性,即保證軟件以正確的方式來做了既定的事件。
隨著軟件開發(fā)技術(shù)的發(fā)展,敏捷開發(fā)成為主流的開發(fā)模式。敏捷開發(fā)的目的是提高開發(fā)效率,其擁抱變化和可持續(xù)性強(qiáng)的不斷循環(huán)迭代開發(fā),給軟件測試帶來新的挑戰(zhàn)。當(dāng)前的軟件測試要求測試周期短,相對當(dāng)期版修改的內(nèi)容,有大量存量功能需要例行化質(zhì)量守護(hù),需要更多的投入來保證系統(tǒng)的整體可靠性。這就需要使用自動化測試技術(shù)來代替人工測試,提高效率。
當(dāng)前,在測試軟件的自動化界面時,傳統(tǒng)的自動化界面測試通常采用解析式回放,分析被測原件代碼,解析代碼中的界面元素,再進(jìn)行模擬測試。該方法存在對被測試對象源碼的依賴。在實際操作過程中很多時候通過解析回放無法正確識別到界面元素,或者解析識別界面元素非常困難,使得自動化界面測試使用成本很高。由于需要解析源碼,需要測試人員能夠讀懂源碼,實現(xiàn)自動化界面測試的門檻比較高。目前流行的編程語言眾多,不同編程語言有不同的語法規(guī)則,進(jìn)一步加劇了解析源碼并回放的難度。
技術(shù)實現(xiàn)要素:
本發(fā)明的實施例提供一種軟件界面的自動化測試方法及裝置,以解決當(dāng)前解析式回放的測試方法對被測試對象源碼過于依賴,難以正確識別到界面元素,并且流行的編程語言眾多,解析源碼并回放的難度較大的問題。
為達(dá)到上述目的,本發(fā)明采用如下技術(shù)方案:
一種軟件界面的自動化測試方法,包括:
錄制待測試軟件的運行過程,截取人為操作待測試軟件的關(guān)鍵操作畫面,并記錄人為的操作信息和人為操作使用的測試數(shù)據(jù);
從所述關(guān)鍵操作畫面中識別操作焦點所在控件的圖像,從所述操作焦點所在控件的圖像中確定能唯一確認(rèn)被操作對象的局部畫面,并對所述局部畫面進(jìn)行截圖;
從人為的操作信息和人為操作使用的測試數(shù)據(jù)中確定所述被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù);
自動運行待測試軟件,根據(jù)所述局部畫面中被操作對象識別出所述待測試軟件的界面中的目標(biāo)操作對象;
根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù),并根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行操作,生成測試結(jié)果;
根據(jù)所述測試結(jié)果判斷對所述目標(biāo)操作對象的測試是否成功。
具體的,所述關(guān)鍵操作畫面為對被操作對象進(jìn)行操作時的畫面;所述操作信息包括但不局限于對所述被操作對象進(jìn)行的鼠標(biāo)單擊、鼠標(biāo)右鍵點擊、鼠標(biāo)拖拽以及文本框輸入操作。
具體的,從所述關(guān)鍵操作畫面中識別操作焦點所在控件的圖像,從所述操作焦點所在控件的圖像中確定能唯一確認(rèn)被操作對象的局部畫面,并對所述局部畫面進(jìn)行截圖,包括:
根據(jù)預(yù)先設(shè)置的操作焦點圖像,在所述關(guān)鍵操作畫面中識別出所述操作焦點;
通過識別所述操作焦點所操作的被操作對象,并以所述被操作對象為中心,截取被操作對象的局部畫面;
判斷所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中是否唯一;
若所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中不唯一,在關(guān)鍵操作畫面中將所述局部畫面的截取范圍擴(kuò)大m%,并重新截取被操作對象的局部畫面,直至所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中唯一;
其中,m%為以被操作對象為核心的局部畫面擴(kuò)展步長參數(shù),m為大于0且小于100的整數(shù)。
具體的,從人為的操作信息和人為操作使用的測試數(shù)據(jù)中確定所述被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù),包括:
若所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中唯一,從人為的操作信息和人為操作使用的測試數(shù)據(jù)中分別確定所述局部畫面中被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù);所述目標(biāo)操作信息包括測試動作類型和測試動作發(fā)生位置;
將所述目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù)進(jìn)行變量化操作,形成目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù)的變量數(shù)據(jù);
確定局部畫面與所述變量數(shù)據(jù)的對應(yīng)關(guān)系,并存儲目標(biāo)操作信息、目標(biāo)測試數(shù)據(jù)和局部畫面與所述變量數(shù)據(jù)的對應(yīng)關(guān)系。
具體的,自動運行待測試軟件,根據(jù)所述局部畫面中被操作對象識別出所述待測試軟件的界面中的目標(biāo)操作對象,包括:
自動運行待測試軟件,根據(jù)圖像識別技術(shù)以預(yù)先設(shè)置的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面;
若未識別到待測試軟件的界面中存在與所述被操作對象對應(yīng)的目標(biāo)操作對象,判斷當(dāng)前識別所述目標(biāo)操作對象的識別次數(shù)是否大于一預(yù)設(shè)識別次數(shù)閾值;
若當(dāng)前識別所述目標(biāo)操作對象的識別次數(shù)不大于所述預(yù)設(shè)識別次數(shù)閾值,繼續(xù)根據(jù)當(dāng)前的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面;
若當(dāng)前識別所述目標(biāo)操作對象的識別次數(shù)大于所述預(yù)設(shè)識別次數(shù)閾值時,對所述匹配相似度進(jìn)行調(diào)整,并確定調(diào)整后的匹配相似度是否處于預(yù)先設(shè)置的匹配相似度閾值區(qū)間內(nèi);
若調(diào)整后的匹配相似度處于預(yù)先設(shè)置的匹配相似度閾值區(qū)間外,確定所述識別所述目標(biāo)操作對象失敗,生成識別失敗日志,并保存當(dāng)前的待測試軟件的界面圖像;
若調(diào)整后的匹配相似度處于預(yù)先設(shè)置的匹配相似度閾值區(qū)間內(nèi),根據(jù)調(diào)整后的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面。
此外,所述對所述匹配相似度進(jìn)行調(diào)整,包括:
確定當(dāng)前已經(jīng)識別出的待測試軟件的界面中與所述被操作對象對應(yīng)的目標(biāo)操作對象的個數(shù);
若當(dāng)前已經(jīng)識別出的待測試軟件的界面中與所述被操作對象對應(yīng)的目標(biāo)操作對象的個數(shù)大于等于1,則調(diào)整所述匹配相似度為當(dāng)前匹配相似度的(100+n)%;
當(dāng)前已經(jīng)識別出的待測試軟件的界面中與所述被操作對象對應(yīng)的目標(biāo)操作對象的個數(shù)等于0,則調(diào)整所述匹配相似度為當(dāng)前匹配相似度的(100-n)%;其中,n為大于0且小于5的整數(shù)。
具體的,根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù),并根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行操作,生成測試結(jié)果,包括:
若識別到待測試軟件的界面中存在與所述被操作對象對應(yīng)的目標(biāo)操作對象,根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù);
根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行單個操作,并根據(jù)所述目標(biāo)操作信息確定對所述目標(biāo)操作對象的操作是否完成;
若對所述目標(biāo)操作對象的操作未完成,繼續(xù)根據(jù)圖像識別技術(shù)以預(yù)先設(shè)置的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面;
若對所述目標(biāo)操作對象的操作完成,生成測試結(jié)果。
具體的,根據(jù)所述測試結(jié)果判斷對所述目標(biāo)操作對象的測試是否成功,包括:
判斷所述測試結(jié)果與預(yù)先設(shè)置的結(jié)果樣本是否相同;
若所述測試結(jié)果與預(yù)先設(shè)置的結(jié)果樣本相同,確定對所述目標(biāo)操作對象的測試成功。
一種軟件界面的自動化測試裝置,包括:
信息記錄單元,用于錄制待測試軟件的運行過程,截取人為操作待測試軟件的關(guān)鍵操作畫面,并記錄人為的操作信息和人為操作使用的測試數(shù)據(jù);
局部畫面確定單元,用于從所述關(guān)鍵操作畫面中識別操作焦點所在控件的圖像,從所述操作焦點所在控件的圖像中確定能唯一確認(rèn)被操作對象的局部畫面,并對所述局部畫面進(jìn)行截圖;
目標(biāo)信息確定單元,用于從人為的操作信息和人為操作使用的測試數(shù)據(jù)中確定所述被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù);
識別單元,用于自動運行待測試軟件,根據(jù)所述局部畫面中被操作對象識別出所述待測試軟件的界面中的目標(biāo)操作對象;
測試結(jié)果生成單元,用于根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù),并根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行操作,生成測試結(jié)果;
測試結(jié)果判斷單元,用于根據(jù)所述測試結(jié)果判斷對所述目標(biāo)操作對象的測試是否成功。
具體的,所述信息記錄單元中的關(guān)鍵操作畫面為對被操作對象進(jìn)行操作時的畫面;所述操作信息包括但不局限于對所述被操作對象進(jìn)行的鼠標(biāo)單擊、鼠標(biāo)右鍵點擊、鼠標(biāo)拖拽以及文本框輸入操作。
具體的,所述局部畫面確定單元,包括:
操作焦點識別模塊,用于根據(jù)預(yù)先設(shè)置的操作焦點圖像,在所述關(guān)鍵操作畫面中識別出所述操作焦點;
局部畫面截取模塊,用于通過識別所述操作焦點所操作的被操作對象,并以所述被操作對象為中心,截取被操作對象的局部畫面;
唯一性判斷模塊,用于判斷所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中是否唯一;
截取范圍調(diào)整模塊,用于在所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中不唯一時,在關(guān)鍵操作畫面中將所述局部畫面的截取范圍擴(kuò)大m%;
所述局部畫面截取模塊,還用于重新截取被操作對象的局部畫面,直至所述唯一性判斷模塊確定局部畫面在當(dāng)前的關(guān)鍵操作畫面中唯一;
其中,m%為以被操作對象為核心的局部畫面擴(kuò)展步長參數(shù),m為大于0且小于100的整數(shù)。
具體的,所述目標(biāo)信息確定單元,包括:
目標(biāo)信息確定模塊,用于在所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中唯一時,從人為的操作信息和人為操作使用的測試數(shù)據(jù)中分別確定所述局部畫面中被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù);所述目標(biāo)操作信息包括測試動作類型和測試動作發(fā)生位置;
變量化操作模塊,用于將所述目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù)進(jìn)行變量化操作,形成目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù)的變量數(shù)據(jù);
對應(yīng)關(guān)系確定模塊,用于確定局部畫面與所述變量數(shù)據(jù)的對應(yīng)關(guān)系,并存儲目標(biāo)操作信息、目標(biāo)測試數(shù)據(jù)和局部畫面與所述變量數(shù)據(jù)的對應(yīng)關(guān)系。
具體的,所述識別單元,包括:
識別模塊,用于自動運行待測試軟件,根據(jù)圖像識別技術(shù)以預(yù)先設(shè)置的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面;
識別次數(shù)判斷模塊,用于在未識別到待測試軟件的界面中存在與所述被操作對象對應(yīng)的目標(biāo)操作對象時,判斷當(dāng)前識別所述目標(biāo)操作對象的識別次數(shù)是否大于一預(yù)設(shè)識別次數(shù)閾值;
所述識別模塊,還用于在當(dāng)前識別所述目標(biāo)操作對象的識別次數(shù)不大于所述預(yù)設(shè)識別次數(shù)閾值時,繼續(xù)根據(jù)當(dāng)前的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面;
匹配相似度調(diào)整模塊,用于在當(dāng)前識別所述目標(biāo)操作對象的識別次數(shù)大于所述預(yù)設(shè)識別次數(shù)閾值時,對所述匹配相似度進(jìn)行調(diào)整,并確定調(diào)整后的匹配相似度是否處于預(yù)先設(shè)置的匹配相似度閾值區(qū)間內(nèi);
識別失敗確認(rèn)模塊,用于在調(diào)整后的匹配相似度處于預(yù)先設(shè)置的匹配相似度閾值區(qū)間外時,確定所述識別所述目標(biāo)操作對象失敗,生成識別失敗日志,并保存當(dāng)前的待測試軟件的界面圖像;
所述識別模塊,還用于在調(diào)整后的匹配相似度處于預(yù)先設(shè)置的匹配相似度閾值區(qū)間內(nèi)時,根據(jù)調(diào)整后的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面。
此外,所述匹配相似度調(diào)整模塊,具體用于:
確定當(dāng)前已經(jīng)識別出的待測試軟件的界面中與所述被操作對象對應(yīng)的目標(biāo)操作對象的個數(shù);
若當(dāng)前已經(jīng)識別出的待測試軟件的界面中與所述被操作對象對應(yīng)的目標(biāo)操作對象的個數(shù)大于等于1,則調(diào)整所述匹配相似度為當(dāng)前匹配相似度的(100+n)%;
當(dāng)前已經(jīng)識別出的待測試軟件的界面中與所述被操作對象對應(yīng)的目標(biāo)操作對象的個數(shù)等于0,則調(diào)整所述匹配相似度為當(dāng)前匹配相似度的(100-n)%;其中,n為大于0且小于5的整數(shù)。
此外,所述測試結(jié)果生成單元,具體用于:
在識別到待測試軟件的界面中存在與所述被操作對象對應(yīng)的目標(biāo)操作對象時,根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù);
根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行單個操作,并根據(jù)所述目標(biāo)操作信息確定對所述目標(biāo)操作對象的操作是否完成;
在對所述目標(biāo)操作對象的操作完成時,生成測試結(jié)果;
所述識別模塊,還用于在對所述目標(biāo)操作對象的操作未完成時,繼續(xù)根據(jù)圖像識別技術(shù)以預(yù)先設(shè)置的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面。
此外,所述測試結(jié)果判斷單元,具體用于:
判斷所述測試結(jié)果與預(yù)先設(shè)置的結(jié)果樣本是否相同;
在所述測試結(jié)果與預(yù)先設(shè)置的結(jié)果樣本相同時,確定對所述目標(biāo)操作對象的測試成功。
本發(fā)明實施例提供的一種軟件界面的自動化測試方法及裝置,首先錄制待測試軟件的運行過程,截取人為操作待測試軟件的關(guān)鍵操作畫面,并記錄人為的操作信息和人為操作使用的測試數(shù)據(jù);之后,從所述關(guān)鍵操作畫面中識別操作焦點所在控件的圖像,從所述操作焦點所在控件的圖像中確定能唯一確認(rèn)被操作對象的局部畫面,并對所述局部畫面進(jìn)行截圖;之后,從人為的操作信息和人為操作使用的測試數(shù)據(jù)中確定所述被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù);然后,自動運行待測試軟件,根據(jù)所述局部畫面中被操作對象識別出所述待測試軟件的界面中的目標(biāo)操作對象;根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù),并根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行操作,生成測試結(jié)果;從而根據(jù)所述測試結(jié)果判斷對所述目標(biāo)操作對象的測試是否成功??梢?,本發(fā)明實施例可以在快速、簡單、不依賴于被測軟件源碼的情況下實施界面自動化測試,去除了自動化測試對源碼的依賴,使自動化界面測試的適用范圍極大延伸,可以做到依靠軟件界面,無論該軟件使用什么樣的編程語言編寫的,也無論該軟件使用的是何種程序框架和結(jié)構(gòu)模式,都可以通過本發(fā)明完成自動化測試。可見,本發(fā)明實施例可以解決當(dāng)前解析式回放的測試方法對被測試對象源碼過于依賴,難以正確識別到界面元素,并且流行的編程語言眾多,解析源碼并回放的難度較大的問題。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種軟件界面的自動化測試方法的流程圖一;
圖2為本發(fā)明實施例提供的一種軟件界面的自動化測試方法的流程圖二;
圖3為本發(fā)明實施例中的軟件系統(tǒng)登錄界面的被操作對象的實例示意圖;
圖4為本發(fā)明實施例中的被操作對象的局部畫面示意圖;
圖5為本發(fā)明實施例提供的一種軟件界面的自動化測試裝置的結(jié)構(gòu)示意圖一;
圖6為本發(fā)明實施例提供的一種軟件界面的自動化測試裝置的結(jié)構(gòu)示意圖二。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1所示,本發(fā)明實施例提供一種軟件界面的自動化測試方法,包括:
步驟101、錄制待測試軟件的運行過程,截取人為操作待測試軟件的關(guān)鍵操作畫面,并記錄人為的操作信息和人為操作使用的測試數(shù)據(jù)。
步驟102、從所述關(guān)鍵操作畫面中識別操作焦點所在控件的圖像,從所述操作焦點所在控件的圖像中確定能唯一確認(rèn)被操作對象的局部畫面,并對所述局部畫面進(jìn)行截圖。
步驟103、從人為的操作信息和人為操作使用的測試數(shù)據(jù)中確定所述被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù)。
步驟104、自動運行待測試軟件,根據(jù)所述局部畫面中被操作對象識別出所述待測試軟件的界面中的目標(biāo)操作對象。
步驟105、根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù),并根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行操作,生成測試結(jié)果。
步驟106、根據(jù)所述測試結(jié)果判斷對所述目標(biāo)操作對象的測試是否成功。
本發(fā)明實施例提供的一種軟件界面的自動化測試方法,首先錄制待測試軟件的運行過程,截取人為操作待測試軟件的關(guān)鍵操作畫面,并記錄人為的操作信息和人為操作使用的測試數(shù)據(jù);之后,從所述關(guān)鍵操作畫面中識別操作焦點所在控件的圖像,從所述操作焦點所在控件的圖像中確定能唯一確認(rèn)被操作對象的局部畫面,并對所述局部畫面進(jìn)行截圖;之后,從人為的操作信息和人為操作使用的測試數(shù)據(jù)中確定所述被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù);然后,自動運行待測試軟件,根據(jù)所述局部畫面中被操作對象識別出所述待測試軟件的界面中的目標(biāo)操作對象;根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù),并根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行操作,生成測試結(jié)果;從而根據(jù)所述測試結(jié)果判斷對所述目標(biāo)操作對象的測試是否成功。可見,本發(fā)明實施例可以在快速、簡單、不依賴于被測軟件源碼的情況下實施界面自動化測試,去除了自動化測試對源碼的依賴,使自動化界面測試的適用范圍極大延伸,可以做到依靠軟件界面,無論該軟件使用什么樣的編程語言編寫的,也無論該軟件使用的是何種程序框架和結(jié)構(gòu)模式,都可以通過本發(fā)明完成自動化測試。可見,本發(fā)明實施例可以解決當(dāng)前解析式回放的測試方法對被測試對象源碼過于依賴,難以正確識別到界面元素,并且流行的編程語言眾多,解析源碼并回放的難度較大的問題。
為了使本領(lǐng)域的技術(shù)人員更好的了解本發(fā)明,下面列舉一個更為詳細(xì)的實施例,如圖2所示,本發(fā)明實施例提供一種軟件界面的自動化測試方法,包括:
步驟201、錄制待測試軟件的運行過程,截取人為操作待測試軟件的關(guān)鍵操作畫面,并記錄人為的操作信息和人為操作使用的測試數(shù)據(jù)。
此處,所述關(guān)鍵操作畫面為對被操作對象進(jìn)行操作時的畫面;所述操作信息包括但不局限于對所述被操作對象進(jìn)行的鼠標(biāo)單擊、鼠標(biāo)右鍵點擊、鼠標(biāo)拖拽以及文本框輸入操作。
此處,結(jié)合具體的界面附圖來進(jìn)行說明,如圖3所示,一軟件系統(tǒng)登錄界面,其包含三個被操作對象,分別為用戶名輸入場301、密碼輸入場302以及登錄按鈕303。在錄制人為操作該軟件系統(tǒng)登錄界面時,具體可以是錄制在用戶名輸入場輸入用戶名100101,在密碼輸入場輸入密碼111111,然后點擊登錄按鈕。
步驟202、根據(jù)預(yù)先設(shè)置的操作焦點圖像,在所述關(guān)鍵操作畫面中識別出所述操作焦點。
此處該操作焦點可以是鼠標(biāo)指針、計算機(jī)光標(biāo)等。
步驟203、通過識別所述操作焦點所操作的被操作對象,并以所述被操作對象為中心,截取被操作對象的局部畫面。
例如,如圖4所示,所截取的被操作對象的局部畫面可以分別包括用戶名輸入場301、密碼輸入場302以及登錄按鈕303。
步驟204、判斷所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中是否唯一。
若所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中不唯一,則執(zhí)行步驟205。否則,若所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中唯一,則執(zhí)行步驟206。
步驟205、在關(guān)鍵操作畫面中將所述局部畫面的截取范圍擴(kuò)大m%。
其中,m%為以被操作對象為核心的局部畫面擴(kuò)展步長參數(shù),m為大于0且小于100的整數(shù)。例如,m可以為系統(tǒng)默認(rèn)的5。
在步驟205之后,返回執(zhí)行步驟203。
步驟206、從人為的操作信息和人為操作使用的測試數(shù)據(jù)中分別確定所述局部畫面中被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù)。
其中,所述目標(biāo)操作信息包括測試動作類型和測試動作發(fā)生位置。該測試動作類型可以為鼠標(biāo)單擊、鼠標(biāo)右鍵點擊、鼠標(biāo)拖拽以及文本框輸入操作等。
步驟207、將所述目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù)進(jìn)行變量化操作,形成目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù)的變量數(shù)據(jù)。
步驟208、確定局部畫面與所述變量數(shù)據(jù)的對應(yīng)關(guān)系,并存儲目標(biāo)操作信息、目標(biāo)測試數(shù)據(jù)和局部畫面與所述變量數(shù)據(jù)的對應(yīng)關(guān)系。
如圖3和圖4所示,即為分析截取出的用戶名輸入場301、密碼輸入場302以及登錄按鈕303的局部畫面,并逐一確定對他們的目標(biāo)操作,和所使用的目標(biāo)測試數(shù)據(jù),例如可將用戶名輸入場301、密碼輸入場302所使用的目標(biāo)測試數(shù)據(jù)變量化為用戶名(userid)和密碼(password)。并且建立局部畫面、標(biāo)操作信息、目標(biāo)測試數(shù)據(jù)以及變量數(shù)據(jù)的對應(yīng)關(guān)系,以便于后續(xù)自動識別時進(jìn)行應(yīng)用。
步驟209、自動運行待測試軟件,根據(jù)圖像識別技術(shù)以預(yù)先設(shè)置的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面。
此處,該匹配相似度的初始值可以為70%。
在步驟209之后,執(zhí)行步驟210或者步驟213。
步驟210、若未識別到待測試軟件的界面中存在與所述被操作對象對應(yīng)的目標(biāo)操作對象,判斷當(dāng)前識別所述目標(biāo)操作對象的識別次數(shù)是否大于預(yù)設(shè)識別次數(shù)閾值。
若當(dāng)前識別所述目標(biāo)操作對象的識別次數(shù)不大于所述預(yù)設(shè)識別次數(shù)閾值,在延時0.5秒后,返回執(zhí)行步驟209,以當(dāng)前的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面。此處,預(yù)設(shè)識別次數(shù)閾值可以為3。
若當(dāng)前識別所述目標(biāo)操作對象的識別次數(shù)大于所述預(yù)設(shè)識別次數(shù)閾值,執(zhí)行步驟211。
步驟211、對所述匹配相似度進(jìn)行調(diào)整,并確定調(diào)整后的匹配相似度是否處于預(yù)先設(shè)置的匹配相似度閾值區(qū)間內(nèi)。
此外,對所述匹配相似度進(jìn)行調(diào)整,可以是確定當(dāng)前已經(jīng)識別出的待測試軟件的界面中與所述被操作對象對應(yīng)的目標(biāo)操作對象的個數(shù);若當(dāng)前已經(jīng)識別出的待測試軟件的界面中與所述被操作對象對應(yīng)的目標(biāo)操作對象的個數(shù)大于等于1,則調(diào)整所述匹配相似度為當(dāng)前匹配相似度的(100+n)%;當(dāng)前已經(jīng)識別出的待測試軟件的界面中與所述被操作對象對應(yīng)的目標(biāo)操作對象的個數(shù)等于0,則調(diào)整所述匹配相似度為當(dāng)前匹配相似度的(100-n)%;其中,n為大于0且小于5的整數(shù),例如n=3。對于該匹配相似度閾值區(qū)間,可以為匹配相似度閾值最大值100%,最小值45%,但不僅局限于此。
若調(diào)整后的匹配相似度處于預(yù)先設(shè)置的匹配相似度閾值區(qū)間外,執(zhí)行步驟212。若調(diào)整后的匹配相似度處于預(yù)先設(shè)置的匹配相似度閾值區(qū)間內(nèi),返回執(zhí)行步驟209,根據(jù)調(diào)整后的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面。
步驟212、確定所述識別所述目標(biāo)操作對象失敗,生成識別失敗日志,并保存當(dāng)前的待測試軟件的界面圖像。
步驟213、若識別到待測試軟件的界面中存在與所述被操作對象對應(yīng)的目標(biāo)操作對象,根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù)。
步驟214、根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行單個操作,并根據(jù)所述目標(biāo)操作信息確定對所述目標(biāo)操作對象的操作是否完成。
若對所述目標(biāo)操作對象的操作未完成,返回執(zhí)行步驟209,繼續(xù)根據(jù)圖像識別技術(shù)以預(yù)先設(shè)置的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面。
若對所述目標(biāo)操作對象的操作完成,則執(zhí)行步驟215。
步驟215、生成測試結(jié)果。
此處步驟209至步驟215可以是,首先獲取到目標(biāo)測試數(shù)據(jù)對應(yīng)的變量,例如在圖3和圖4所示的實例中,將100101賦值給userid,將111111賦值給password。然后通過用戶名輸入場圖像在測試軟件畫面識別找到被測試對象的位置,通過測試動作發(fā)生位置信息和測試動作類型模擬人工操作:即首先在用戶名輸入場輸入100101,直到完成點擊登錄按鈕操作。整個回放環(huán)境可以為變量賦予不同的登錄名和密碼,循環(huán)進(jìn)行多次測試,從而復(fù)用已有的測試腳本,提高測試效率。
步驟216、判斷所述測試結(jié)果與預(yù)先設(shè)置的結(jié)果樣本是否相同。
例如,預(yù)先設(shè)置的結(jié)果樣本為用戶登錄成功,顯示登錄成功后的界面。則所述測試結(jié)果可以與該登錄成功后的界面進(jìn)行匹配,以確定測試結(jié)果是否正確。
步驟217、若所述測試結(jié)果與預(yù)先設(shè)置的結(jié)果樣本相同,確定對所述目標(biāo)操作對象的測試成功。
本發(fā)明實施例提供的一種軟件界面的自動化測試方法,首先錄制待測試軟件的運行過程,截取人為操作待測試軟件的關(guān)鍵操作畫面,并記錄人為的操作信息和人為操作使用的測試數(shù)據(jù);之后,從所述關(guān)鍵操作畫面中識別操作焦點所在控件的圖像,從所述操作焦點所在控件的圖像中確定能唯一確認(rèn)被操作對象的局部畫面,并對所述局部畫面進(jìn)行截圖;之后,從人為的操作信息和人為操作使用的測試數(shù)據(jù)中確定所述被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù);然后,自動運行待測試軟件,根據(jù)所述局部畫面中被操作對象識別出所述待測試軟件的界面中的目標(biāo)操作對象;根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù),并根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行操作,生成測試結(jié)果;從而根據(jù)所述測試結(jié)果判斷對所述目標(biāo)操作對象的測試是否成功。可見,本發(fā)明實施例可以在快速、簡單、不依賴于被測軟件源碼的情況下實施界面自動化測試,去除了自動化測試對源碼的依賴,使自動化界面測試的適用范圍極大延伸,可以做到依靠軟件界面,無論該軟件使用什么樣的編程語言編寫的,也無論該軟件使用的是何種程序框架和結(jié)構(gòu)模式,都可以通過本發(fā)明完成自動化測試??梢姡景l(fā)明實施例可以解決當(dāng)前解析式回放的測試方法對被測試對象源碼過于依賴,難以正確識別到界面元素,并且流行的編程語言眾多,解析源碼并回放的難度較大的問題。
如圖5所示,本發(fā)明實施例提供一種軟件界面的自動化測試裝置,包括:
信息記錄單元41,用于錄制待測試軟件的運行過程,截取人為操作待測試軟件的關(guān)鍵操作畫面,并記錄人為的操作信息和人為操作使用的測試數(shù)據(jù)。
局部畫面確定單元42,用于從所述關(guān)鍵操作畫面中識別操作焦點所在控件的圖像,從所述操作焦點所在控件的圖像中確定能唯一確認(rèn)被操作對象的局部畫面,并對所述局部畫面進(jìn)行截圖。
目標(biāo)信息確定單元43,用于從人為的操作信息和人為操作使用的測試數(shù)據(jù)中確定所述被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù)。
識別單元44,用于自動運行待測試軟件,根據(jù)所述局部畫面中被操作對象識別出所述待測試軟件的界面中的目標(biāo)操作對象。
測試結(jié)果生成單元45,用于根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù),并根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行操作,生成測試結(jié)果。
測試結(jié)果判斷單元46,用于根據(jù)所述測試結(jié)果判斷對所述目標(biāo)操作對象的測試是否成功。
具體的,所述信息記錄單元41中的關(guān)鍵操作畫面為對被操作對象進(jìn)行操作時的畫面;所述操作信息包括但不局限于對所述被操作對象進(jìn)行的鼠標(biāo)單擊、鼠標(biāo)右鍵點擊、鼠標(biāo)拖拽以及文本框輸入操作。
具體的,如圖6所示,所述局部畫面確定單元42,包括:
操作焦點識別模塊421,用于根據(jù)預(yù)先設(shè)置的操作焦點圖像,在所述關(guān)鍵操作畫面中識別出所述操作焦點。
局部畫面截取模塊422,用于通過識別所述操作焦點所操作的被操作對象,并以所述被操作對象為中心,截取被操作對象的局部畫面。
唯一性判斷模塊423,用于判斷所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中是否唯一。
截取范圍調(diào)整模塊424,用于在所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中不唯一時,在關(guān)鍵操作畫面中將所述局部畫面的截取范圍擴(kuò)大m%。
所述局部畫面截取模塊422,還用于重新截取被操作對象的局部畫面,直至所述唯一性判斷模塊確定局部畫面在當(dāng)前的關(guān)鍵操作畫面中唯一。
其中,m%為以被操作對象為核心的局部畫面擴(kuò)展步長參數(shù),m為大于0且小于100的整數(shù)。
具體的,如圖6所示,所述目標(biāo)信息確定單元43,包括:
目標(biāo)信息確定模塊431,用于在所述局部畫面在當(dāng)前的關(guān)鍵操作畫面中唯一時,從人為的操作信息和人為操作使用的測試數(shù)據(jù)中分別確定所述局部畫面中被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù);所述目標(biāo)操作信息包括測試動作類型和測試動作發(fā)生位置。
變量化操作模塊432,用于將所述目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù)進(jìn)行變量化操作,形成目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù)的變量數(shù)據(jù)。
對應(yīng)關(guān)系確定模塊433,用于確定局部畫面與所述變量數(shù)據(jù)的對應(yīng)關(guān)系,并存儲目標(biāo)操作信息、目標(biāo)測試數(shù)據(jù)和局部畫面與所述變量數(shù)據(jù)的對應(yīng)關(guān)系。
具體的,如圖6所示,所述識別單元44,包括:
識別模塊441,用于自動運行待測試軟件,根據(jù)圖像識別技術(shù)以預(yù)先設(shè)置的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面。
識別次數(shù)判斷模塊442,用于在未識別到待測試軟件的界面中存在與所述被操作對象對應(yīng)的目標(biāo)操作對象時,判斷當(dāng)前識別所述目標(biāo)操作對象的識別次數(shù)是否大于一預(yù)設(shè)識別次數(shù)閾值。
所述識別模塊441,還用于在當(dāng)前識別所述目標(biāo)操作對象的識別次數(shù)不大于所述預(yù)設(shè)識別次數(shù)閾值時,繼續(xù)根據(jù)當(dāng)前的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面。
匹配相似度調(diào)整模塊443,用于在當(dāng)前識別所述目標(biāo)操作對象的識別次數(shù)大于所述預(yù)設(shè)識別次數(shù)閾值時,對所述匹配相似度進(jìn)行調(diào)整,并確定調(diào)整后的匹配相似度是否處于預(yù)先設(shè)置的匹配相似度閾值區(qū)間內(nèi)。
識別失敗確認(rèn)模塊444,用于在調(diào)整后的匹配相似度處于預(yù)先設(shè)置的匹配相似度閾值區(qū)間外時,確定所述識別所述目標(biāo)操作對象失敗,生成識別失敗日志,并保存當(dāng)前的待測試軟件的界面圖像。
所述識別模塊441,還用于在調(diào)整后的匹配相似度處于預(yù)先設(shè)置的匹配相似度閾值區(qū)間內(nèi)時,根據(jù)調(diào)整后的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面。
此外,所述匹配相似度調(diào)整模塊443,具體用于:
確定當(dāng)前已經(jīng)識別出的待測試軟件的界面中與所述被操作對象對應(yīng)的目標(biāo)操作對象的個數(shù)。
若當(dāng)前已經(jīng)識別出的待測試軟件的界面中與所述被操作對象對應(yīng)的目標(biāo)操作對象的個數(shù)大于等于1,則調(diào)整所述匹配相似度為當(dāng)前匹配相似度的(100+n)%。
當(dāng)前已經(jīng)識別出的待測試軟件的界面中與所述被操作對象對應(yīng)的目標(biāo)操作對象的個數(shù)等于0,則調(diào)整所述匹配相似度為當(dāng)前匹配相似度的(100-n)%;其中,n為大于0且小于5的整數(shù)。
此外,所述測試結(jié)果生成單元45,具體用于:
在識別到待測試軟件的界面中存在與所述被操作對象對應(yīng)的目標(biāo)操作對象時,根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù)。
根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行單個操作,并根據(jù)所述目標(biāo)操作信息確定對所述目標(biāo)操作對象的操作是否完成。
在對所述目標(biāo)操作對象的操作完成時,生成測試結(jié)果。
所述識別模塊441,還用于在對所述目標(biāo)操作對象的操作未完成時,繼續(xù)根據(jù)圖像識別技術(shù)以預(yù)先設(shè)置的匹配相似度和所述局部畫面中被操作對象,識別待測試軟件的界面。
此外,所述測試結(jié)果判斷單元46,具體用于:判斷所述測試結(jié)果與預(yù)先設(shè)置的結(jié)果樣本是否相同;在所述測試結(jié)果與預(yù)先設(shè)置的結(jié)果樣本相同時,確定對所述目標(biāo)操作對象的測試成功。
值得說明的是,本發(fā)明實施例提供的一種軟件界面的自動化測試裝置的具體實現(xiàn)方式可以參見上述圖1和圖2對應(yīng)的方法實施例,此處不再贅述。
本發(fā)明實施例提供的一種軟件界面的自動化測試裝置,首先錄制待測試軟件的運行過程,截取人為操作待測試軟件的關(guān)鍵操作畫面,并記錄人為的操作信息和人為操作使用的測試數(shù)據(jù);之后,從所述關(guān)鍵操作畫面中識別操作焦點所在控件的圖像,從所述操作焦點所在控件的圖像中確定能唯一確認(rèn)被操作對象的局部畫面,并對所述局部畫面進(jìn)行截圖;之后,從人為的操作信息和人為操作使用的測試數(shù)據(jù)中確定所述被操作對象對應(yīng)的目標(biāo)操作信息和目標(biāo)測試數(shù)據(jù);然后,自動運行待測試軟件,根據(jù)所述局部畫面中被操作對象識別出所述待測試軟件的界面中的目標(biāo)操作對象;根據(jù)所述目標(biāo)測試數(shù)據(jù)向所述目標(biāo)操作對象填充數(shù)據(jù),并根據(jù)所述目標(biāo)操作信息對所述目標(biāo)操作對象進(jìn)行操作,生成測試結(jié)果;從而根據(jù)所述測試結(jié)果判斷對所述目標(biāo)操作對象的測試是否成功??梢姡景l(fā)明實施例可以在快速、簡單、不依賴于被測軟件源碼的情況下實施界面自動化測試,去除了自動化測試對源碼的依賴,使自動化界面測試的適用范圍極大延伸,可以做到依靠軟件界面,無論該軟件使用什么樣的編程語言編寫的,也無論該軟件使用的是何種程序框架和結(jié)構(gòu)模式,都可以通過本發(fā)明完成自動化測試??梢?,本發(fā)明實施例可以解決當(dāng)前解析式回放的測試方法對被測試對象源碼過于依賴,難以正確識別到界面元素,并且流行的編程語言眾多,解析源碼并回放的難度較大的問題。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
本發(fā)明中應(yīng)用了具體實施例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。