本發(fā)明涉及應用測試領域,尤其涉及一種用戶界面自動化測試方法及系統(tǒng)。
背景技術:
用戶界面(User Interface,簡稱UI)測試一般包括布局測試、內(nèi)容測試(包括文字和圖片)、風格測試、控件測試等內(nèi)容。對于布局、內(nèi)容風格、字體等測試對象,通常采用靜態(tài)方式進行測試,例如使用點檢表結(jié)合人工觀察的方式獲得測試結(jié)果。而對于用戶界面中的空間來說,由于其具有人機交互的特性,能夠向用戶提供諸如界面跳轉(zhuǎn)、開關控制、文字輸入等交互性功能,需要采用動態(tài)方式對UI進行測試。
現(xiàn)有針對UI的動態(tài)測試通常需要測試人員編寫測試用例,對被測對象、測試方式、預期結(jié)果等內(nèi)容進行界定,然后由測試終端執(zhí)行該測試用例完成對UI測試。編寫測試用例通常十分耗時,測試人員往往需要花費大量時間對測試用例進行編程和修改,實際應用中過于耗費人力成本。
錄制和回放(Record and Replay)是一種簡單易操作的UI自動測試方法。但是通過錄制和回放的方式進行UI自動測試存在弊端:
第一,錄制的測試腳本“廢話”多。例如移動鼠標,本來最終目的是移動到A點,但是錄制過程中,會把鼠標經(jīng)過的地方都錄制了,導致很多“沒用”的冗余代碼。
第二,錄制的腳本效率不高。由于中途很多“廢話”,并且是以回放人的操作的形式進行循環(huán)測試的;人的手動操作的效率肯定不夠快,所以效率不高。
第三,錄制的腳本不具備通用性。通常只能在一臺電腦上使用,因為在不同的電腦其參考的坐標系不同。導致回放的時候無法準確的找到要操作的對象。
UI自動化測試最為重要的一件事情就是得到要操作的控件對象,比如一個textbox、button等等。必須先能夠得到對象,才能夠操作對象。這其實就是記錄測試腳本的唯一用途,準確的得到錄制對象是自動化測試的關鍵。
目前,很多自動化測試工具在錄制測試腳本時,是通過記錄點擊鼠標等輸入動作的屏幕坐標以及該區(qū)域控件的信息來實現(xiàn)錄制的功能,并以此作為回放時獲得對象的關鍵條件。這種錄制方式所采集的信息相對孤立,并以一種無關聯(lián)的方式在記錄數(shù)據(jù)。一旦坐標發(fā)生變化,很容易出現(xiàn)找不到對象的情況。
技術實現(xiàn)要素:
針對現(xiàn)有技術存在的上述問題,本發(fā)明提出了一種用戶界面自動化測試方法。
本發(fā)明采取如下技術方案:
一種用戶界面自動化測試方法,其包括:
步驟一,獲得測試腳本的錄制過程;
步驟二,根據(jù)所述測試腳本執(zhí)行測試操作的回放過程;
其中,所述測試腳本包括按發(fā)生的時間先后順序記錄的輸入動作的序列,所述錄制過程記錄所述輸入動作序列,所述回放過程按照時間先后順序執(zhí)行所述測試腳本中記錄的輸入動作序列;所述輸入動作包括動作類型信息和操作對象信息;所述操作對象信息包括坐標信息和控件路徑信息,所述回放過程根據(jù)所述輸入動作的動作類型確定需要實施的操作動作,所述回放過程根據(jù)所述輸入動作的操作對象信息確定所述操作動作的實施對象。
作為優(yōu)選,所述操作對象信息還包括坐標權重值、控件路徑權重值。
作為優(yōu)選,所述操作對象信息還包括表示所述操作動作的實施對象是否為標準控件的控件類型信息。
作為優(yōu)選,所述錄制過程根據(jù)所述控件類型信息確定所述坐標權重值和所述控件路徑權重值;當所述控件類型信息表示所述操作動作的實施對象為標準控件時,所述坐標權重值小于所述控件路徑權重值;當所述控件類型信息表示所述操作動作的實施對象為非標準控件時,所述坐標權重值大于所述控件路徑權重值;所述回放過程,在所述坐標權重值大于所述控件路徑權重值時,根據(jù)所述坐標信息確定所述操作動作的實施對象,在所述坐標權重值小于所述控件路徑權重值時,根據(jù)所述控件路徑信息確定所述操作動作的實施對象。
作為優(yōu)選,所述操作對象信息還包括匹配閾值;所述回放過程將其顯示參數(shù)與錄制過程的顯示參數(shù)比較,當所述回放過程的顯示參數(shù)與所述錄制過程的顯示參數(shù)的匹配度越高,則所述匹配閾值的值越大;所述回放過程,當所述匹配閾值大于50%時,可以根據(jù)所述坐標信息確定所述操作動作的實施對象。
本發(fā)明還提供了一種用戶界面自動化測試系統(tǒng),其特征在于:包括用于獲得測試腳本的錄制模塊和用于根據(jù)所述測試腳本執(zhí)行測試操作的回放模塊;所述測試腳本包括按發(fā)生的先后順序記錄的輸入動作的序列,所述錄制模塊記錄所述輸入動作序列,所述回放模塊按照時間先后順序執(zhí)行所述測試腳本中記錄的輸入動作序列;其中,所述輸入動作包括動作類型信息和操作對象信息;所述操作對象信息包括坐標信息和控件路徑信息,所述回放模塊包括根據(jù)所述輸入動作的動作類型確定需要實施的操作動作的操作動作實施單元,所述回放模塊包括根據(jù)所述輸入動作的操作對象信息確定所述操作動作的實施對象的實施對象確定單元。
作為優(yōu)選,所述操作對象信息還包括坐標權重值、控件路徑權重值。
作為優(yōu)選,所述操作對象信息還包括表示所述操作動作的實施對象是否為標準控件的控件類型信息。
作為優(yōu)選,所述錄制模塊包括權重值確定單元,所述權重值確定單元根據(jù)所述控件類型信息確定所述坐標權重值和所述控件路徑權重值;當所述控件類型信息表示所述操作動作的實施對象為標準控件時,所述坐標權重值小于所述控件路徑權重值;當所述控件類型信息表示所述操作動作的實施對象為非標準控件時,所述坐標權重值大于所述控件路徑權重值;所述回放模塊,在所述坐標權重值大于所述控件路徑權重值時,根據(jù)所述坐標信息確定所述操作動作的實施對象,在所述坐標權重值小于所述控件路徑權重值時,根據(jù)所述控件路徑信息確定所述操作動作的實施對象。
作為優(yōu)選,所述操作對象信息還包括匹配閾值;所述回放模塊還包括匹配閾值確定單元,所述匹配閾值確定單元將所述回放模塊的顯示參數(shù)與所述錄制模塊的顯示參數(shù)比較,當所述回放過程的顯示參數(shù)與所述錄制過程的顯示參數(shù)的匹配度越高,則所述匹配閾值的值越大;所述回放模塊,當所述匹配閾值大于50%時,可以根據(jù)所述坐標信息確定所述操作動作的實施對象。
本發(fā)明從錄制信息的完整性以及引入權重的方式出發(fā),以較為靈活的方式適應各種場合下測試腳本的錄制,并且提高了測試腳本回放的成功率。
附圖說明
附圖1本發(fā)明實施例的用戶界面自動化測試系統(tǒng)示意圖。
附圖2本發(fā)明實施例的用戶界面自動化測試方法流程圖。
具體實施方式
以下具體實施例僅僅是對本發(fā)明的解釋,其并不是對本發(fā)明的限制,本領域技術人員在閱讀完本說明書后可以根據(jù)需要對本實施例做出沒有創(chuàng)造性貢獻的修改,但只要在本發(fā)明的權利要求范圍內(nèi)都受到專利法的保護。雖然附圖中顯示了本公開的示例性實施例,然而當然可以理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開并且能夠?qū)⒈竟_的范圍完整的傳達給本領域的技術人員。
實施例一
一種用戶界面自動化測試系統(tǒng),在實際應用中用于錄制、存儲、回放測試人員制定的測試用例。本實施例中的用戶界面自動化測試系統(tǒng)能夠通過客戶端頁面或Web頁面向測試人員提供制定測試方案的人機交互接口。測試人員可以將手機或電腦等操作終端連接到測試系統(tǒng),在操作終端上運行被測應用并執(zhí)行制定的測試方案。本實施例中的測試系統(tǒng)具體包括顯示模塊、錄制模塊、回放模塊和存儲模塊。其中:
(一)顯示模塊
顯示被測應用的界面窗口,并接收針對界面窗口中的控件對象實施的操作動作。實際應用中,顯示模塊可以為手機或電腦等操作終端,被測試的應用在手機或電腦等操作終端上運行并顯示。測試人員可以在手機等具備觸摸屏的操作終端上使用手指直接觸發(fā)點擊等操作動作,也可以在電腦等非觸摸設備上通過鼠標點選觸發(fā)點擊等操作動作,或者還可以通過鍵盤或遙控器上的方向鍵/導航鍵控制操作焦點(例如高亮的選擇框)的移動,并觸發(fā)點擊等操作動作。測試人員觸發(fā)點擊等操作動作的具體形式由操作終端所支持的操作類型據(jù)決定,自動化測試系統(tǒng)僅以電信號的形式接收操作終端發(fā)送的操作執(zhí)行。
(二)錄制模塊
用于獲得測試腳本。按照時間的先后順序記錄通過顯示模塊顯示輸出的界面窗口中,針對界面窗口中的控件對象實施的輸入動作。經(jīng)錄制模塊記錄獲得的輸入動作序列作為測試腳本存放在存儲模塊中。
其中,輸入動作包括動作類型信息和操作對象信息。動作類型信息用于標記測試人員在顯示模塊顯示輸出的界面窗口中實施的操作動作(例如長按操作、短按操作、點擊操作、滑動操作、單點觸控、多點觸控等)。操作對象信息包括控件類型信息、坐標信息、控件路徑信息、坐標權重值、控件路徑權重值和匹配閾值。坐標信息用于標記測試人員在顯示模塊顯示輸出的界面窗口中實施的操作動作在界面窗口中的發(fā)生位置??丶窂叫畔⒂糜跇擞洔y試人員在顯示模塊顯示輸出的界面窗口中實施的操作動作所實施的控件的路徑??丶愋托畔⒂糜诒硎静僮鲃幼鞯膶嵤ο鬄闃藴士丶€是用戶自定義的非標準控件。
測試人員在觸發(fā)點擊等操作動作后,操作終端上產(chǎn)生相應的操作動作事件,并且該操作動作事件會逐層傳遞到系統(tǒng)底層的窗口對象控件上。例如,如果測試人員通過觸控屏觸發(fā)點擊事件,則產(chǎn)生touch事件;如果測試人員通過鼠標觸發(fā)點擊事件,則產(chǎn)生click事件。在系統(tǒng)底層,點擊事件會觸發(fā)相應的函數(shù)調(diào)用,該函數(shù)調(diào)用中包含系統(tǒng)獲得的該點擊事件的相關參數(shù),包括點擊的坐標參數(shù)及事件類型(例如長按操作、短按操作、點擊操作、滑動操作、單點觸控、多點觸控等)。顯示模塊在系統(tǒng)底層獲取該點擊的坐標參數(shù)作為該操作動作的坐標信息,獲取該點擊對應的事件類型作為該操作動作的動作類型信息。
不同的操作終端的屏幕尺寸可能存在差異,同一窗口對象控件在不同的操作終端上顯示的坐標位置可能不同。如果測試終端直接使用操作終端上獲取的坐標參數(shù),那么有可能會定位到其他窗口對象控件上去。此外,同一應用在不同終端上的客戶端(例如手機客戶端和電腦客戶端),其界面布局通常也會有差異,窗口對象控件的大小、位置可能會相互不同,直接使用操作對象信息中的坐標信息確定窗口對象控件時,有可能會找不到或者找到錯誤的窗口對象控件。而界面窗口中發(fā)生的操作動作所實施的控件本質(zhì)上是整個桌面控件樹形結(jié)構(gòu)中的一個節(jié)點元素,是完全可以用完整的路徑來標識的,有了這個詳盡的路徑描述,可以準確的去定位并獲得這個控件對象。
本實施例中的錄制模塊在針對UI自動化測試腳本的錄制過程中所采集的操作對象信息主要有:分別是控件路徑信息和坐標信息。通過增加控件路徑信息,大多數(shù)情況下可以準確的定位到控件。不過也會有些特殊情況,如:出現(xiàn)自定義控件不能被正確識別的情況。此時,坐標信息可以通過權重的設定被引入,可以靈活的提高錄制腳本的可用性。
本實施例中,通過設定坐標權重值和控件路徑權重值以及匹配閾值,引入一種可靈活配置的閾值匹配方法。測試人員會對不同層級窗口中的多個窗口對象控件進行連續(xù)點擊,獲得一條點擊路徑。對于此種情況,錄制模塊需要分別獲取各點擊操作對應的動作類型信息以及該點擊操作所實施的窗口對象控件的操作對象信息,并按點擊的先后順序?qū)⑺胁僮鲃幼骱喜橐粋€操作動作序列,寫入到測試腳本中。
操作對象信息的匹配閾值需要測試人員在錄制過程之前對系統(tǒng)進行配置或者采用系統(tǒng)的默認值??丶窂綑嘀刂岛涂丶鴺藱嘀刂悼梢杂蓽y試人員預先設置,或者由該系統(tǒng)專門的配置模塊預先輸入配置,再或者由錄制模塊的權重值確定單元,在錄制模塊的錄制過程中根據(jù)控件類型動態(tài)確定。權重值確定單元對權重值的動態(tài)確定方法為:
獲取該操作對象的控件類型信息,以判斷該操作對象所實施的窗口對象控件是標準控件還是非標準控件。如果該窗口對象控件是標準控件,則權重值確定單元確定該操作對象的控件路徑權重值大于坐標權重值,并且大于匹配閾值。如果該窗口對象空間是非標準控件,則權重值確定單元確定該操作對象的控件路徑權重值小于坐標權重值。同時,坐標權重值大于匹配閾值。
(三)存儲模塊
存儲模塊用于存儲錄制模塊記錄的輸入動作序列。本實施例中,可以采用先進先出的存儲堆棧。測試人員每在顯示模塊顯示輸出的界面窗口中實施一個操作動作,錄制模塊就獲取該操作動作的動作類型信息和操作對象信息放入該存儲堆棧中存儲起來。
(四)回放模塊
用于根據(jù)所述測試腳本執(zhí)行測試操作的回放模塊?;胤拍K讀取存儲在存儲模塊中的操作動作序列。并按照發(fā)生的先后順序生成測試實例,以執(zhí)行該操作動作序列。需要說明的是,在生成測試用實例時回放模塊需要根據(jù)測試終端的語言環(huán)境生成測試實例代碼,以保證測試終端能夠順利解讀并實施該測試實例代碼。例如,對于執(zhí)行JAVA測試用例的測試終端,回放模塊需要將動作類型信息所標記的操作動作和操作對象信息所標記的窗口對象控件轉(zhuǎn)換為JAVA語句,而對于執(zhí)行LUA測試用例的測試終端,則回放模塊需要將動作類型信息所標記的操作動作和操作對象信息所標記的窗口對象控件轉(zhuǎn)換為LUA語句。該過程完全由回放模塊自動執(zhí)行,無效測試人員介入,由此簡化了測試用例的編寫復雜度。
回放模塊還包括匹配閾值確定單元。匹配閾值確定單元比較回放模塊和錄制模塊的顯示參數(shù)(包括分辨率、顯示區(qū)域大小等),并根據(jù)比較結(jié)果確定匹配閾值(范圍0~1)。顯示參數(shù)中一致的項目越多,匹配閾值的值越大,表示回放模塊和錄制模塊的顯示匹配度越高。例如,如果回放模塊和錄制模塊的顯示參數(shù)完全一致,則匹配閾值為1,表示它們高度匹配。如果回放模塊和錄制模塊的顯示參數(shù)完全不同,則匹配閾值為0。
回放過程根據(jù)所述操作對象信息來確定操作動作的實施對象,在所述坐標權重值大于所述控件路徑權重值時,根據(jù)所述坐標信息確定所述操作動作的實施對象,在所述坐標權重值小于所述控件路徑權重值時,根據(jù)所述控件路徑信息確定所述操作動作的實施對象。而如果坐標權重值匹配閾值大于50%時,也可以根據(jù)所述坐標信息確定所述操作動作的實施對象。以下表為例:
回放模塊在確定操作對象1的實施對象時,可以根據(jù)所述控件路徑信息直接查找該路徑對應的窗口對象控件。并且匹配閾值為0.9,因此也可以根據(jù)所述坐標信息確定需要操作的窗口對象控件在窗口中的位置,來確定窗口對象控件。
回放模塊在確定操作對象2的實施對象時,可以根據(jù)所述控件路徑信息直接查找該路徑對應的窗口對象控件。并且匹配閾值為0.8,此也可以根據(jù)所述坐標信息確定需要操作的窗口對象控件在窗口中的位置,來確定窗口對象控件。
回放模塊在確定操作對象3的實施對象時,只能根據(jù)所述控件路徑信息直接查找該路徑對應的窗口對象控件。因為,其匹配閾值為0.1,表示回放模塊和錄制模塊的顯示參數(shù)不匹配,不能根據(jù)坐標信息確定需要操作的窗口對象控件。
回放模塊在確定操作對象4的實施對象時,只能根據(jù)所述坐標信息直接查找該路徑對應的窗口對象控件。
基于本實施例的自動化測試系統(tǒng)的測試方法,包括用于獲得測試腳本的錄制過程和用于根據(jù)測試腳本執(zhí)行測試操作的回放過程。
(一)錄制過程
由顯示模塊顯示輸出需要測試的應用窗口界面,測試人員在被測應用的界面窗口中對窗口對象控件進行操作。錄制模塊根據(jù)各操作動作發(fā)生的先后順序,獲取各個操作動作的動作類型信息和操作對象信息。并按照它們發(fā)生的先后順序存儲在存儲模塊中。
(二)回放過程
由顯示模塊讀取存儲在存儲模塊中的測試腳本。按照先后順序解讀存儲在測試腳本中的操作動作序列。根據(jù)操作動作類型確定需要執(zhí)行的操作動作(例如長按操作、短按操作、點擊操作、滑動操作、單點觸控、多點觸控等)。顯示模塊根據(jù)所述操作動作的操作對象信息確定該操作動作的實施對象。獲得操作動作和實施對象以后,顯示模塊便可依照測試環(huán)境語言生成并運行相應的測試用例。
本發(fā)明提出了一種優(yōu)化UI自動化測試腳本錄制的方法,從錄制信息的完整性以及引入權重的方式,以較為靈活的方式適應各種場合下腳本錄制,提升回放的成功率。