本申請涉及界面測試技術,尤其涉及界面測試的方法、界面繪制方法及界面測試裝置、界面繪制裝置。
背景技術:
用戶界面(userinterface,ui)用于實現(xiàn)軟件與用戶交互。針對ui效果的自動化測試,一般需要配備高清攝像頭在多個設定的測試時間點拍攝照片,并需要大容量的磁盤空間來存儲所拍攝的照片,再與預期的ui效果圖進行對比。這種ui測試的方法不僅需要高性能的攝像頭,還需要足夠大的磁盤空間,測試成本比較大,且對比ui效果圖的復雜度也較高,容易出現(xiàn)圖片對比偏差,導致準確性不能保障。
技術實現(xiàn)要素:
基于現(xiàn)有技術的問題,本申請?zhí)峁┮环N界面測試的方法及裝置。
根據本申請實施例的第一方面,提供一種界面測試的方法,該方法包括步驟:
將第一繪圖指令序列與基準繪圖指令序列對比;所述第一繪圖指令序列用于繪制當前界面;所述基準繪圖指令序列用于繪制預期效果的界面;
根據對比結果確定當前界面的顯示結果。
根據本申請實施例的第二方面,提供一種界面繪制方法,包括步驟:
根據繪圖指令序列繪制相應的界面;
當接收到請求輸出所述繪圖指令序列的通知后,將所述繪圖指令序列輸出。
根據本申請實施例的第三方面,提供一種界面測試裝置,包括:
處理模塊,用于將第一繪圖指令序列與基準繪圖指令序列對比;所述第一繪圖指令序列用于繪制當前界面,所述基準繪圖指令序列用于繪制預期效果的界面;
確定模塊,用于根據對比結果確定當前界面的顯示結果。
根據本申請實施例的第四方面,提供一種界面繪制裝置,包括:
繪圖模塊,用于根據繪圖指令序列繪制相應的界面;
輸出模塊,用于當接收到請求輸出所述繪圖指令序列的通知后,將所述繪圖指令序列輸出。
本申請利用繪圖指令序列判斷當前顯示的界面的顯示效果是否達到預期效果,對比難度低,且準確率高。
附圖說明
圖1為本申請實施例中界面測試的方法的流程圖;
圖2為本申請實施例中界面繪制的方法的流程圖;
圖3為本申請應用實例的流程示意圖;
圖4為本申請實施例中界面測試裝置/界面繪制裝置的硬件架構示意圖;
圖5為本申請實施例中界面測試裝置的邏輯框圖;
圖6為本申請實施例中界面繪制裝置的邏輯框圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所 有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權利要求書中所使用的單數形式的“一種”、“所述”和“該”也旨在包括多數形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指并包含一個或多個相關聯(lián)的列出項目的任何或所有可能組合。
應當理解,盡管在本申請可能采用術語第一、第二、第三等來描述各種信息,但這些信息不應限于這些術語。這些術語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應于確定”。
本申請?zhí)峁┝藆i測試的解決方案,利用本申請所提供的方案無需使用高清攝像頭對界面效果進行拍攝,且無需依賴圖片處理工具。此方案適用于任何具備ui的產品。
ui可以是應用程序客戶端的用戶界面,或瀏覽器、操作系統(tǒng)應用的用戶界面等。用戶界面可以通過設備的顯示裝置呈現(xiàn)給用戶,設備可以是任何可以呈現(xiàn)用戶界面的設備,例如個人電腦、平板電腦、移動終端、智能家居設備、車載設備等等。
作為例子,應用開發(fā)者可以通過應用層設計ui界面,并通過調用繪圖接口驅動硬件繪圖層完成界面繪圖。最終呈現(xiàn)在設備上的界面是繪制后呈現(xiàn)的效果。
在一些例子中,硬件繪圖層可以通過中央處理器(centralprocessingunit,cpu)來實現(xiàn)對界面的繪制;在另一些例子中,可以通過圖形處理器(graphicprocessingunit,gpu)來實現(xiàn)對界面的繪制;當然,也可能通過cpu和gpu協(xié)同實現(xiàn)對界面的繪制。因此cpu、gpu等均可以作為繪圖硬件的示例。
繪圖接口可以是opengl(opengraphicslibrary,開放的圖形庫)接口、hal(hardwareabstractionlayer,硬件抽象層)接口等,選用的接口可以根據硬件繪圖層的不同硬件而定。以opengl接口為例,由于gpu支持opengl的接口標準,因此可以通過調用opengl接口中的drawtext,drawrectangle等接口方法實現(xiàn)gpu的繪圖功能。
繪圖硬件可以根據當前幀的繪圖指令序列繪制界面。繪圖指令序列包含一條或多條繪圖指令及繪圖指令的參數。繪圖指令可以包括線性漸變、圖片漸變,對應的參數可以包括區(qū)域大小、坐標、漸變顏色等;繪圖指令還可以包括繪制方形或圓形或直線或曲線,對應的參數可以包括繪制的起始坐標和結束坐標、線條類型、線條粗細、線條顏色等。本領域技術人員應當理解,以上僅是舉例,本申請實施例所述的繪圖指令還可以包括任意一種計算機系統(tǒng)中會使用的任意一種繪圖指令,其對應的參數也可以根據實際的參數需求來靈活確定,本申請實施例對此并不作限定。
本申請實施例的界面測試方法可參考圖1。
s101,將第一繪圖指令序列與基準繪圖指令序列對比;
s102,根據對比結果確定當前界面的顯示結果。
第一繪圖指令序列用來繪制當前所顯示的界面,本申請通過獲取每個界面的繪圖指令序列來測試該界面的顯示效果是否符合預期。為方便描述,本申請將能夠繪制出預期效果的界面的繪圖指令序列稱為基準繪圖指令序列。
作為例子,可以通過人工檢驗某次運行測試用例的各個界面效果是否符合預期,如果符合預期,則將這次測試中各個界面的繪圖指令序列作為基準繪圖指令序列?;鶞世L圖指令序列可以保存在文件中,以備后續(xù)測試時作為比對對象。存儲的方式可以是將手工運行測試用例時所輸出的每個界面所對應的繪圖指令序列分別單獨存儲成一個文件,也可以是將多個界面所對應的繪圖指令序列按照一定的規(guī)則存儲在一個文件中。
在下文中除非特別指出,繪圖指令序列可以是指第一繪圖指令序列,也可以是指基準繪圖指令序列。繪圖指令序列可以由負責繪圖的繪圖硬件生成, 例如gpu等。為了獲取到各個界面的繪圖指令序列,可以在每次運行測試用例時,判斷是否需要通過該繪圖接口通知繪圖硬件輸出繪圖指令序列,如果需要,則通過繪圖接口向繪圖硬件發(fā)送請求輸出繪圖指令序列的通知。
作為例子,第一繪圖指令序列和基準繪圖指令序列均可以是在運行測試用例時由繪圖硬件的緩存數據輸出接口(dump接口)輸出,當然并不排除其他的實現(xiàn)方式,例如,還可以通過查看繪制圖形核心硬件相關的數據手冊獲得。值得指出,運行測試用例時通過dump接口輸出繪圖指令序列的方式更為直觀和方便。
保存第一繪圖指令序列的文件(稱為第一文件)和保存基準繪圖指令序列的文件(稱為第二文件)創(chuàng)建方式可以存在多種方式。例如,以第一文件為例,在運行測試用例時,應用層通過繪圖接口向繪圖硬件層發(fā)送請求輸出第一繪圖指令序列的通知,繪圖硬件可以基于commandbuffer(命令行緩存)方式從內存中取出該界面相關的第一繪圖指令序列并通知dump接口輸出,在收到繪圖硬件輸出的第一繪圖指令序列后可以創(chuàng)建第一文件進行保存。第一文件和第二文件的創(chuàng)建方式可以相同或不同。
第二文件可以與第一文件存儲在同一臺物理設備上,也可以存儲在不同的物理設備上,可以在需要時向存儲第二文件的設備獲取第二文件。
如果第一繪圖指令序列和基準繪圖指令序列在兩個文件中存儲的規(guī)則一致,則在對比第一繪圖指令序列和基準繪圖指令序列時,可以按照存儲的次序依次取出兩個文件中的對應項進行對比。如果第一文件和第二文件中均包含與每個界面的繪圖指令序列所對應的關鍵字,則在對比待測試界面的繪圖指令序列和基準繪圖指令序列時,可以根據兩個文件中的關鍵字來查找相應的繪圖指令序列進行對比。
作為例子,圖1中s101和s102可以通過文件對比工具來實現(xiàn);而運行測試用例時通過繪圖接口通知繪圖硬件輸出繪圖指令序列、以及創(chuàng)建文件保存繪圖指令序列的過程可以通過在測試用例中增加相應功能的代碼實現(xiàn)。另 外,也可以在測試代碼中增加相應代碼來實現(xiàn)從運行測試用例到文件對比的完整功能。
根據對比結果確定當前界面的顯示結果的過程可以參考以下示例,但并不排除用其他方式響應對比結果的實施例。例如:如果第一繪圖指令序列與基準繪圖指令序列符合匹配條件,則確定當前界面的顯示結果正常;再例如,如果第一繪圖指令序列與基準繪圖指令序列不符合匹配條件,則確定當前界面的顯示結果異常;匹配條件可以是指對比對象相同或相似,可以預先設定一個代表相似程度的閾值,來判定對比對象是否滿足匹配條件。
本申請中實施例中擴展了繪圖硬件層的功能,使負責繪圖的繪圖硬件能夠輸出繪圖指令序列,過程可參照圖2。
s201,根據繪圖指令序列繪制相應的界面;
s202,當接收到請求輸出繪圖指令序列的通知后,將繪圖指令序列輸出。
作為實施例,繪圖硬件可以是gpu,當然也可以是其他硬件。繪圖硬件負責根據繪圖指令序列繪制相應的界面。
根據硬件類型的差異,s202中接收通知的接口可以是不同的繪圖接口,例如,對于支持opengl的接口標準的硬件,繪圖接口可以是opengl接口。
繪圖硬件層可以基于commandbuffer(命令行緩存)方式從內存中取出該界面相關的繪圖指令序列并通過dump接口輸出,測試代碼將繪圖指令序列寫入到一個文件(第一文件/第二文件)。
圖3為一個應用場景下的實例。應用層在運行測試用例時,通過opengl接口通知gpu輸出繪圖指令序列。
在ui界面被設計完成后,開發(fā)者會針對所設計的ui界面設計測試用例。圖3中的流程分為兩個分支,分支1代表手工執(zhí)行測試用例的過程,分支2代表設備自動運行測試用例的過程;每個分支分為兩個階段,階段1為運行測試用例階段;階段2為測試界面階段。
分支1的過程如下:首次測試時,根據測試用例通過人工操作對每個界面進行測試,并人為判斷界面的顯示效果是否符合預期,當手工測試開始時, 通知opengl接口通知gpu輸出每個界面的繪圖指令序列。gpu在收到通知后,將每個可顯示預期效果的界面的繪圖指令序列輸出;輸出后的繪圖指令序列按照界面不同,每個界面的繪圖指令序列保存到一個文件(以下稱第二文件)中,保存在本地指定路徑(階段1)??梢詫⑷斯y試的過程錄制,以備后續(xù)自動化測試使用。
當ui界面的代碼被修改后,需要對修改后的ui界面重新進行測試,根據人工測試時所錄制的信息,在觸發(fā)測試用例后,進行自動化測試流程。當自動化測試流程開始時,判斷是否需要通知opengl接口通知gpu輸出繪圖指令序列,如果需要,則通過opengl接口向gpu發(fā)出通知,gpu在收到通知后,將每個待測試界面的繪圖指令序列輸出,輸出后的繪圖指令序列按照界面不同,每個界面的繪圖指令序列保存到一個文件(以下稱第一文件)中,并保存在本地指定路徑(階段1)。
階段2:當需要測試界面效果時,依次從本地所存儲的第一文件和第二文件中按照相同的順序取出繪圖指令序列進行比對,如果相同,則說明所對比的界面可以達到預期顯示效果,否則,說明所對比的界面顯示異常,根據對比結果,輸出測試結果。
與前述界面測試的方法的實施例相對應,本申請還提供了界面測試的裝置的實施例。
本申請界面測試裝置/界面繪制裝置的實施例可以應用在可計算機上。裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在計算機的處理器將非易失性存儲器中對應的計算機程序指令讀取到內存中運行形成的。從硬件層面而言,如圖4所示,為本申請界面測試裝置/界面繪制裝置所在計算機的一種硬件結構圖,除了圖4所示的處理器、內存、網絡接口、以及非易失性存儲器之外,實施例中裝置所在的計算機通常根據該計算機的實際功能,還可以包括其他硬件,對此不再贅述。
請參照圖5,界面測試裝置500,包括:
處理模塊501,用于將第一繪圖指令序列與基準繪圖指令序列對比;所述第一繪圖指令序列用于繪制當前界面,所述基準繪圖指令序列用于繪制預期效果的界面;
確定模塊502,用于根據對比結果確定所述當前界面的顯示結果。
所述待測試界面的繪圖指令序列或所述基準繪圖指令序列可以由繪圖硬件輸出。
作為例子,界面測試裝置500還可以包括:
通知模塊(圖中未示出),用于在運行測試用例時,通知繪圖接口向所述繪圖硬件發(fā)送通知,所述通知用于請求所述繪圖硬件將所述待測試界面的繪圖指令序列或所述基準繪圖指令序列輸出。文件創(chuàng)建模塊(圖中未示出),用于將接收到的待測試界面的繪圖指令序列或所述基準繪圖指令序列保存。
繪圖硬件可以是gpu。
繪圖接口可以是opengl接口。
確定模塊502根據對比結果確定當前界面的顯示結果可以包括:
如果第一繪圖指令序列與基準繪圖指令序列符合匹配條件,則確定當前界面的顯示結果正常;和/或
如果第一繪圖指令序列與基準繪圖指令序列不符合匹配條件,則確定當前界面的顯示結果異常;匹配條件可以包括對比對象相同或相似等情況。
圖6中,界面繪制裝置600包括:
繪圖模塊601,用于根據繪圖指令序列繪制相應的界面;
輸出模塊602,用于當接收到請求輸出所述繪圖指令序列的通知后,將所述繪圖指令序列輸出。
接收請求輸出所述繪圖指令序列的通知的接口可以是opengl接口。
界面繪制裝置600可以位于圖像處理單元gpu。
上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應步驟的實現(xiàn)過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應于方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內。