一種基於爬蟲的自動化差異檢測方法及裝置與流程
2023-09-10 17:11:45 3
本發明涉及一種自動化差異檢測方法及裝置,更具體地說,涉及一種基於爬蟲的自動化差異檢測方法及裝置。
背景技術:
網際網路上的Web系統經常會升級,有些升級僅影響了少數的頁面,由於頁面實現底層可能有耦合關係,為了保證整個Web系統的質量,測試人員往往需要回歸所有的頁面,人力消耗很大。差異(Diff)檢測,是通過找出新舊系統的不同來進行回歸檢測的方法。現有的Web檢測技術一般是通過瀏覽器驅動器操作頁面,通過對HTML頁面進行分析,定義一些斷言的方式進行web自動化檢測。例如,selenium、watir框架可提供這種web自動化檢測方法。上述方案需要人工開發測試用例,但頁面變化時,經常導致用例不可用,需要更新維護,人力成本較大;上述方案一般對頁面的代碼進行分析,如果不符合預期即認為是bug,而Web服務最終展現給用戶的是可視化的頁面,上述方案無法對頁面的可視化效果進行驗證;上述方案只能對指定的點進行驗證。因此,為了減少人力成本,需要一種自動找出變化和不變的頁面,同時保證回歸檢測的效率和質量的差異檢測方法。
技術實現要素:
本發明提供了一種自動化差異檢測方法及裝置。該方法可以對新舊兩套Web系統進行自動化測試,快速產生差異測試報告,幫助用戶直觀準確地定位有差異的部分。根據本發明示例性實施例的一方面,提供了一種基於爬蟲的自動化差異檢測方法,所述方法包括:獲取第一Web系統的第一初始統一資源定位符(URL)以及第二Web系統的第二初始URL;基於爬蟲分別對第一初始URL和第二初始URL進行遍歷,以不斷抓取第一web系統下的第一頁面和第二web系統下的第二頁面,其中,在遍歷過程中,執行以下處理:對抓取的第一頁面和相應的第二頁面進行渲染,分別產生第一網頁圖像和第二網頁圖像,對第一網頁圖像和第二網頁圖像進行相似性比較,當第一網頁圖像和第二網頁圖像不同時,產生差異頁面信息,並且將所述差異頁面信息存儲在差異頁面信息資料庫中。所述差異頁面信息可包括指示所述第一網頁圖像與所述第二網頁圖像不同的圖像。所述差異頁面信息還可包括與所述第一網頁圖像對應的第一網頁的URL和與所述第二網頁圖像對應的第二網頁的URL,和/或與所述第一網頁圖像對應的第一網頁和與所述第二網頁圖像對應的第二網頁。進行相似性比較的步驟可包括:將第一網頁圖像與相應的第二網頁圖像分別轉換為第一灰度圖像和第二灰度圖像;逐個比較第一灰度圖像和第二灰度圖像中的每個像素;如果第一灰度圖像和第二灰度圖像的不同像素數量超過預定閾值,則確定第一網頁圖像與相應的第二網頁圖像不同。可使用第一灰度圖像中的與第二灰度圖像不同的像素來產生所述差異頁面信息。在所述遍歷過程中,可跳過第一Web系統下的非本地URL和第二Web系統下的非本地URL。如果第一Web系統下的本地URL的後綴與第二Web系統下的相應的本地URL的後綴相同,則可確定所述第一Web系統下的本地URL與所述第二Web系統下的相應的本地URL相同。在所述遍歷過程中,如果從第一頁面中提取的URL與從第二頁面中提取的相應的URL不相同,則可跳過所述從第一頁面中提取的URL和所述從第二頁面中提取的相應的URL,並可產生差異頁面信息,將差異頁面信息存儲在差異頁面信息資料庫中。所述差異頁面信息可包括所述第一頁面的URL和所述第二頁面的URL,和/或所述第一頁面和所述第二頁面。所述方法還可包括:從差異頁面信息資料庫讀取差異頁面信息,根據所述差異頁面信息產生相應的報告。根據本發明示例性實施例的一方面,提供了一種基於爬蟲的自動化差異檢測裝置,所述裝置包括:URL獲取單元,獲取第一Web系統的第一初始統一資源定位符(URL)以及第二Web系統的第二初始URL;遍歷比較單元,基於爬蟲分別對第一初始URL和第二初始URL進行遍歷,以不斷抓取第一頁面和第二頁面,其中,在遍歷過程中,執行以下處理:對抓取的第一頁面和相應的第二頁面進行渲染,分別產生第一網頁圖像和第二網頁圖像,對第一網頁圖像和第二網頁圖像進行相似性比較,當第一網頁圖像和第二網頁圖像不同時,產生差異頁面信息,並且將所述差異頁面信息存儲在差異頁面信息資料庫中。所述裝置還可包括報告產生單元,從差異頁面信息資料庫讀取差異頁面信息,根據所述差異頁面信息產生相應的報告。附圖說明通過下面結合附圖進行的描述,本發明的上述和其他目的和特點將會變得更加清楚,其中:圖1示出根據本發明示例性實施例的基於爬蟲的自動化差異檢測方法的流程圖;圖2示出根據本發明另一示例性實施例的基於爬蟲的自動化差異檢測方法的流程圖;圖3示出根據本發明示例性實施例的基於爬蟲的自動化差異檢測裝置的框圖。具體實施方式提供以下參照附圖的描述以幫助對由權利要求及其等同物限定的本發明的示例性實施例的全面理解。描述包括用於幫助理解的各種特定細節,但是這些細節應僅被視為示例性的。因此,本領域的普通技術人員將認識到,在不脫離本發明的範圍和精神的情況下,可以對這裡描述的實施例進行各種改變和修改。此外,為了清楚和簡明,可省略對公知功能和結構的描述。圖1示出根據本發明示例性實施例的基於爬蟲的自動化差異檢測方法的流程圖。參照圖1,在步驟S101,初始化新舊Web系統的統一資源定位符(URL)對並寫入「待提取新舊URL對隊列」。例如,記被測Web系統URL前綴為http://test-envi/,基準Web系統URL前綴為http://online-envi,待測項目URL與基準Web系統的後綴為test_project。因此,初始化完成的新URL是被測Web系統的URL,為http://test-envi/test_project,舊URL是基準Web系統的URL,為http://online-envi/test-project。在步驟S102,從「待提取新舊URL對隊列」中提取URL對。例如,如果隊列中存在未提取的URL對,則提取所述URL對並在隊列中刪除所述URL對,然後執行步驟S103;如果隊列為空,則執行步驟S111。在步驟S103,抓取新舊URL對應的頁面。例如,通過抓取頁面的原始碼來抓取頁面,同時抓取頁面依賴的代碼,諸如CSS、JavaScript腳本等。在步驟S104,渲染頁面。例如,使用瀏覽器渲染組件,分別對新舊頁面進行渲染,得到用戶可視化的頁面。然後調用步驟S105及其後的步驟提取其它URL;調用步驟S108及其後的步驟針對本次抓取、渲染的頁面產生圖像並對產生的新舊圖像進行相似性比較。在步驟S105,提取頁面中的新URL。例如,分別對渲染後的新舊頁面進行分析,從中提取新的URL。具體頁面分析、提取URL的方法可以使用與搜尋引擎相同的方法。在步驟S106,判斷從新舊頁面提取的URL是否相同。例如,將新頁面中提取出的URL集合劃分為本地URL和非本地URL,如果提取出的URL的前綴是「http://test-envi/」,或者提取出的URL是所述新Web系統下的子路徑,則所述URL是新Web系統下的本地URL,除本地URL以外的其它URL是新Web系統下的非本地URL。類似的,將舊頁面中提取出的URL集合也劃分為本地URL和非本地URL,如果提取出的URL的前綴是「http://online-envi/」,或者提取出的URL是所述舊Web系統下的子路徑,則所述URL是舊Web系統下的本地URL,除本地URL以外的其它URL是舊Web系統下的非本地URL。這裡,如果從新頁面中提取的本地URL的後綴與從舊頁面中提取的相應的本地URL的後綴相同,則認為從新頁面中提取的本地URL與從舊頁面中提取的相應的本地URL相同。然而,對於從新頁面中提取的非本地URL與從舊頁面中提取的相應的非本地URL,僅在其URL全部相同時,才認為所述兩個非本地URL相同。對從新頁面中提取的URL與從舊頁面中提取的相應的URL進行比較,如果所述兩個URL相同,則處理進行到步驟S107;如果所述兩個URL不相同,則將當前新舊頁面的URL和/或當前新舊頁面作為差異頁面信息存入差異頁面信息資料庫。在步驟S107,將相同的URL對寫入隊列。例如,將在步驟S106確定的相同的URL對中的本地URL對寫入「待提取新舊URL對隊列」。在將URL對寫入「待提取新舊URL對隊列」前,可以對所述URL進行判斷,移除已經抓取過和/或不希望抓取的URL。S108,使用渲染後的新舊頁面產生新舊兩個圖像。S109,進行圖像相似性對比,如果新舊圖像相同,則返回步驟S102;如果新舊圖像不同,則確定所述新舊頁面存在差異,存儲與新頁面的差異部分相應的圖像,並將所述圖像作為差異頁面信息存入差異頁面信息資料庫。可以使用圖像相似性比較算法來比較圖像的相似性。例如,將新舊圖像分別轉換為新舊灰度圖像,逐個比較新舊灰度圖像中的每個像素,如果不同的像素數量超過給定閾值,則確定新舊圖像不同,使用新灰度圖像中的與舊灰度圖像不同的像素生成與新頁面的差異部分相應的圖像,存儲所述與新頁面的差異部分相應的圖像。然而,本發明的示例性實施例不限於此,可通過任何用於比較圖像相似性的方法來實現本發明的實施例。在步驟S110,將通過步驟S106獲得的新舊Web系統中存在差異的頁面和/或其URL、和/或通過步驟S109獲得的存在差異的新舊頁面的圖像和/或與所述差異的部分相應的圖像,作為差異頁面信息存入差異頁面信息資料庫。在步驟S111,從差異頁面信息資料庫中讀取差異頁面信息,生成差異化測試報告,返回新舊系統中不同的頁面和/或其URL、指示不同的部分的圖像。圖2示出根據本發明另一示例性實施例的基於爬蟲的自動化差異檢測方法的流程圖。參照圖2,在步驟S201,獲取第一Web系統的第一初始統一資源定位符(URL)以及第二Web系統的第二初始URL;在步驟S202,基於爬蟲分別對第一初始URL和第二初始URL進行遍歷,以不斷抓取第一web系統下的第一頁面和第二web系統下的第二頁面。在所述遍歷過程中,執行以下處理:對抓取的第一頁面和相應的第二頁面進行渲染,分別產生第一網頁圖像和第二網頁圖像,對第一網頁圖像和第二網頁圖像進行相似性比較,當第一網頁圖像和第二網頁圖像不同時,產生差異頁面信息,並且將所述差異頁面信息存儲在差異頁面信息資料庫中。所述差異頁面信息可以包括指示所述第一網頁圖像與所述第二網頁圖像不同的圖像。所述差異頁面信息還可以包括與所述第一網頁圖像對應的第一網頁和與所述第二網頁圖像對應的第二網頁,和/或它們的URL。作為示例,將第一網頁圖像與相應的第二網頁圖像分別轉換為第一灰度圖像和第二灰度圖像;逐個比較第一灰度圖像和第二灰度圖像中的每個像素;如果第一灰度圖像和第二灰度圖像的不同像素數量超過預定閾值,則確定第一網頁圖像與相應的第二網頁圖像不同。通過使用第一灰度圖像中的與第二灰度圖像不同的像素來產生所述差異頁面信息。然而,本發明的示例性實施例不限於此,可通過任何用於比較圖像相似性的方法來實現本發明的實施例。在所述遍歷過程中,可以跳過第一Web系統下的非本地URL和第二Web系統下的非本地URL(即,不對所述兩個URL進行抓取和遍歷)。這裡,如果第一Web系統下的本地URL的後綴與第二Web系統下的相應的本地URL的後綴相同,則可確定所述第一Web系統下的本地URL與所述第二Web系統下的相應的本地URL相同。此外,如果從第一頁面中提取的URL與從第二頁面中提取的相應的URL不相同,則還可跳過所述從第一頁面中提取的URL和所述從第二頁面中提取的相應的URL(即,不對所述兩個URL進行抓取和遍歷),並產生差異頁面信息,將差異頁面信息存儲在差異頁面信息資料庫中。所述差異頁面信息可包括所述第一頁面和所述第二頁面,和/或它們的URL。所述方法還可包括步驟S203,從差異頁面信息資料庫讀取差異頁面信息,根據所述差異頁面信息產生相應的報告。所述相應的報告可包括第一Web系統和第二Web系統中的不同頁面和/或其URL、指示不同頁面的不同部分的圖像等。圖3示出根據本發明示例性實施例的基於爬蟲的自動化差異檢測裝置300的框圖。參照圖3,自動化差異檢測裝置300包括URL獲取單元310和遍歷比較單元320。URL獲取單元310可獲取第一Web系統的第一初始統一資源定位符(URL)以及第二Web系統的第二初始URL;遍歷比較單元可基於爬蟲分別對第一初始URL和第二初始URL進行遍歷,以不斷抓取第一web系統下的第一頁面和第二web系統下的第二頁面。在所述遍歷過程中,遍歷比較單元執行以下處理:對抓取的第一頁面和相應的第二頁面進行渲染,分別產生第一網頁圖像和第二網頁圖像,對第一網頁圖像和第二網頁圖像進行相似性比較,當第一網頁圖像和第二網頁圖像不同時,產生差異頁面信息,並且將所述差異頁面信息存儲在差異頁面信息資料庫中。自動化差異檢測裝置300還包括報告產生單元330。報告產生單元330可從差異頁面信息資料庫讀取差異頁面信息,根據所述差異頁面信息產生相應的報告。所述相應的報告可包括第一Web系統和第二Web系統中的不同頁面和/或其URL、指示不同頁面的不同部分的圖像等。根據本發明的示例性實施例,可以對新舊兩套Web系統進行自動化測試,快速產生差異測試報告,幫助用戶直觀準確地定位有差異的部分。因此,根據本發明的示例性實施例可對整個頁面的效果進行驗證,有效保證產品質量,降低系統維護代價,節省測試成本,加快產品開發、測試、發布的周期。雖然已經參照本發明的特定示例性實施例示出並描述了本發明,但是本領域的技術人員應理解,在不脫離由權利要求及其等同物限定的本發明的精神和範圍的情況下,可以在形式和細節上對本發明進行各種改變。