用于檢測影響的方法和計算機的制作方法
【技術領域】
[0001] 本發(fā)明關于用于檢測由改變應用的源代碼而引起的影響的技術,文檔對象模型 ("Document Object Model",下文中也將其稱為DOM)樹和層疊樣式表("Cascading Style Sheets",下文中也將其稱為CSS)可以從該應用提取。
【背景技術】
[0002] 通過網絡應用(web application)顯示的屏幕可以通過改變該網絡應用的源代碼 而改變(例如,通過糾正缺陷、或通過改變規(guī)范)。所以,當網絡應用的源代碼被改變時,必 須檢查回歸或退化是否已經發(fā)生。正常地,對此檢查,每次源代碼被改變時測試者在操作網 絡瀏覽器時執(zhí)行視覺回歸測試。
[0003] 但是,通過回歸測試手工地執(zhí)行每一個測試是代價極其高的。于是,正常地,回歸 測試只對一部分執(zhí)行,該部分被假定受到網絡應用的源代碼中的改變的影響。但是用這樣 的回歸測試,歸因于尋找可能受影響的所有部分的失敗,回歸或退化經常發(fā)生。
[0004] 而且,例如在可以影響整個網絡應用的公共JavaScript (注冊商標)框架被改變 的情況中,必須對所有的屏幕執(zhí)行回歸測試。但是,如果網絡頁面是通過使用上文提到的 JavaScript (注冊商標)框架層次化的并且是動態(tài)地被創(chuàng)建的,對由改變源代碼而引起的 網絡頁面上的影響的范圍的調查是極其困難的。而且,因為在網絡應用上的回歸測試是一 次又一次地重復相似的操作的工作,所以對于測試者來說這是極其枯燥的工作。
[0005] 于是,用于自動化在網絡應用上的回歸測試的多個軟件被提供。例如,這些軟件 是開源軟件Selenium(見下文提到的非專利文獻1和非專利文獻2至4)和以下商業(yè)產 品、IBM? Rational? Functional Tester (國際商業(yè)機器公司)(見下文提到的非專利 文獻5和6)、SmartBear TestComplete (見下文提到的非專利文獻7)和HP? QuickTest Professional (見下文提到的非專利文獻8)。上文提到的Selenium、IBM? Rational? Functional Tester、SmartBear TestComplete 和HP? QuickTest Professional 所有都 采用用于在清楚地指示對比部分時執(zhí)行回歸測試的白名單方法。
[0006] 使用Selenium,通過創(chuàng)建用于網絡應用的測試用例,回歸測試幾乎可以完全地自 動執(zhí)行。而且,因為Selenium使得在多個網絡瀏覽器上能夠容易地執(zhí)行回歸測試,所以可 以增加在網絡應用上的回歸測試的效率。
[0007] 下文提到的專利文獻1描述了用于應用程序的測試程序,并且此測試程序引起安 裝應用程序的計算機起到記錄控制部件、執(zhí)行部件和錯誤輸出控制部件的功能,該記錄控 制部件用于在記錄裝置中累積地記錄在測試用例于該應用程序上執(zhí)行時由該應用程序生 成的用戶事件和屏幕事件,該執(zhí)行部件用于讀取累積地記錄在記錄裝置中的用戶事件和屏 幕事件并且通過作為測試目標的應用程序連續(xù)地執(zhí)行用戶事件,該錯誤輸出控制部件用于 將從由作為測試目標的應用程序進行的一個用戶事件的執(zhí)行到下一個用戶事件的執(zhí)行而 生成的屏幕事件,與從自存儲裝置中讀取出的一個用戶事件的執(zhí)行到下一個用戶事件的執(zhí) 行而生成的屏幕事件相比較,以及用于輸出不相符的屏幕事件作為錯誤(權利要求1)。進 一步地,專利文獻1描述通過記錄控制部件被累積地記錄在記錄裝置中的屏幕事件是屏幕 改變的差異,并且是要通過文檔對象模型(DOM)獲取的信息(權利要求4),以及通過記錄控 制部件被累積地記錄在記錄裝置中的屏幕事件是由通過Xpath和DOM子樹表達的改變部分 所指示的信息(權利要求5)。
[0008] 下文提到的專利文獻2描述回歸測試支持程序,并且該回歸測試支持程序引起計 算機執(zhí)行以下過程:檢測一個或多個被顯示在顯示器上的瀏覽器屏幕中的一個的顯示內容 的更新,當每次檢測到更新時在第一存儲單元中記錄數據(該數據包含指示所有被顯示的 瀏覽器屏幕的顯示內容的信息和關于該更新的瀏覽器屏幕的識別信息),根據對數據的編 輯指令引用第一存儲單元,以及顯示圖像的清單,這些圖像指示與識別信息關聯(lián)的瀏覽器 屏幕的顯示內容(權利要求1)。
[0009] 【引用文獻列表】
[0010] 【專利文獻】
[0011] 【專利文獻 1】JP2009-140155A
[0012] 【專利文獻 2】JP2013-54693A
[0013] 【非專利文獻】
[0014] 【非專利文獻1】"Selenium HQ",(在網絡上),(于2013年9月26日檢索到), 互聯(lián)網〈URL:http://docs, seleniumhq. org/>
[0015] 【非專利文獻 2】Takashi 0ΚΑΜ0Τ0, "Selenium for automating Web test regardless of browser (1/3) ",(在網絡上),(于2013年9月27日檢索到),互聯(lián)網
[0016] <http://www. atmarkit. co. jp/ait/articles/0908/19/newsl09. html>
[0017] 【非專利文獻 3】Takashi 0ΚΑΜ0Τ0, "Selenium for automating Web test regardless of browser (2/3) ",(在網絡上),(于2013年9月27日檢索到),互聯(lián)網
[0018] <http://www. atmarkit. co. jp/ait/articles/0908/19/newsl09_2. html>
[0019] 【非專利文獻 4】Takashi 0ΚΑΜ0Τ0, "Selenium for automating Web test regardless of browser (3/3) ",(在網絡上),(于2013年9月27日檢索到),互聯(lián)網
[0020] <http://www. atmarkit. co. jp/ait/articles/0908/19/newsl09_3. html>
[0021] 【非專利文獻 5】"Rational Functional Tester (Functional Test/Regression Test)",(在網絡上),(于2013年9月27日檢索到),互聯(lián)網〈URL:
[0022] http://www_06.ibm.com/software/jp/rational/products/test/rft/>
[0023] 【非專利文獻6】Kazunari H0HSH0H等,"Effective System Development Practice Using Tools-Aiming at Smarter System Development-",IBM Japan, PROVISION Spring No. 69, 2011,從互聯(lián)網可以得到〈URL:
[0024] http://www-〇6. ibm. com/ibm/jp/provision/no69/pdf/69_article3. pdf>
[0025] 【非專利文獻 7】"SMARTBEAR TestComplete, Reducing Cost by Automation of ⑶I Testing",(在網絡上),(于2013年9月27日檢索到),互聯(lián)網〈URL:
[0026] http://www.xlsoft.com/jp/products/smartbear/testcomplete.html? tab = 0>
[0027] 【非專利文獻 8】"HP QuickTest Professional 10. 0 software",(在網絡上), (于2013年9月27日檢索到),互聯(lián)網〈URL:
[0028] http://h50146.www5.hp.com/products/software/hpsoftware/solutions/ lineup/qtp/new. html>
【發(fā)明內容】
[0029] 【技術問題】
[0030] 對于用于應用的回歸測試、用于應用的單元測試、或用于構建應用的代碼研宄,對 影響的檢測是重要的,該影響由改變任意應用的源代碼而引起,從該應用可以提取DOM樹 和CSS。于是,本發(fā)明具有使得由改變應用的源代碼而引起的影響能夠被自動檢測的目標。
[0031] 而且,要檢查應用與多種網絡瀏覽器或同一網絡瀏覽器的不同版本兼容,必須執(zhí) 行"瀏覽器數量X版本數量"次數的測試,并且這是成本極其高的。進一步地,即使網絡瀏 覽器是相同的,如果對例如Windows?、Mae OS? x、Liiutx?、And_n)id?和i〇s的 操作系統(tǒng)的每一個以及對每一個支持的版本要檢查應用的行為(包含屏幕顯示和除了屏 幕顯示以外的不可見區(qū)域的行為),代價將會進一步增加。于是,要減少代價,本發(fā)明具有它 的目標,是要使得能夠自動地檢測由改變應用的源代碼而引起的影響。
[0032] 進一步地,對用于在網絡應用上自動化回歸測試的常規(guī)軟件是采用白名單方法的 情況,本發(fā)明具有它的目標,是要消除單獨地寫被白名單方法期待的定義(例如"項目X的 值應該是ABC"的定義)、測試用例或統(tǒng)一建模語言(UML,"unified modeling language") 的需要。
[0033] 更進一步地,本發(fā)明具有它的目標,是要使得能夠檢測關于設計的問題(例如行 偏移量、畫圖失敗、或重疊的項目)。具體地,以使得能夠檢測沒有在屏幕顯示上示出的差異 (例如,在不可見的區(qū)域中的差異或者歸因于顯示大小的差異)為目標。
[0034] 更進一步地,本發(fā)明具有它的目標,是要使得關于這樣的部分能夠進行自動的確 定,其中關于該部分的被白名單方法期待的定義是困難的,并且關于該部分依賴于用戶的 眼睛。
[0035] 更進一步地,本發(fā)明具有它的目標,是要使得在盡可能地減少用戶的參與的同時 能夠檢測由改變應用的源代碼而引起的影響。
[0036] 【解決技術問題的技術方案】
[0037] 本發(fā)明提供用于檢測由改變從中可以提取DOM樹和CSS的應用的源代碼而引起的 影響的技術。此技術可以包含用于檢測由改變應用的源代碼而引起的影響的方法、用于檢 測該影響的計算機、計算機程序以及計算機程序產品。
[0038] 根據本發(fā)明的第一方面,用于檢測由改變從中可以提取DOM樹和CSS的任意應用 的源代碼而引起的影響的方法引起計算機執(zhí)行以下步驟:
[0039] 保存用戶在應用上的輸入操作、和用于當期待檢查屏幕狀態(tài)時的至少一個定時中 的每一個定時的DOM樹和CSS ;
[0040] 源代碼被改變以后,按照操作的順序仿真該輸入操作,并且獲取用于與當期待檢 查屏幕狀態(tài)時的至少一個定時中的每一個定時相同的定時的DOM樹和CSS ;
[0041] 針對該相同的定時中的每一個,將在保存步驟中被保存的DOM樹和CSS與在仿真 步驟中被獲取的DOM樹和CSS比較;以及
[0042] 輸出比較的結果。
[0043] 根據本發(fā)明的第二方面,用于檢測由改變從可以提取DOM樹和CSS的任意應用的 源代碼而引起的影響的方法引起計算機執(zhí)行以下步驟,其中該計算機能夠訪問存儲介質, 在該存儲介質中保存用戶在應用上的輸入操作歷史以及保存當期待檢查屏幕狀態(tài)時的至 少一個定時時的DOM樹和CSS :
[0044] 源代碼被改變以后,按照操作的順序仿真該輸入操作,并且獲取用于與當期待檢 查屏幕狀態(tài)時的至少一個定時中的每一個定時相同的定時的DOM樹和CSS ;
[0045] 針對該相同的定時中的每一個,將被保存在該存儲介質中的DOM樹和CSS與在仿 真步驟中被獲取的DOM樹和CSS比較;以及
[0046] 輸出比較的結果。
[0047] 根據本發(fā)明的實施例,根據上文所描述的第一或第二方面的方法可以進一步引起 計算機執(zhí)行以下步驟:
[0048] 源代碼被進一步改變以后,按照操作的順序仿真該輸入操作,并且獲取用于與當 期待檢查屏幕狀態(tài)時的至少一個定時中的每一個定時相同的定時的DOM樹和CSS ;
[0049] 針對該相同的定時中的每一個,將源代碼被改變以后被保存的DOM樹和CSS與源 代碼被進一步改變以后被保存的DOM樹和CSS比較;以及
[0050] 針對該相同的定時,輸出將源代碼被改變以后被保存的DOM樹和CSS與源代碼被 進一步改變以后被保存的DOM樹和CSS比較的結果。
[0051] 根據本發(fā)明的第三方面,用于檢測由改變從中可以提取DOM樹和CSS的任意應用 的源代碼而引起的影響的計算機包括以下部件,其中:
[0052] 保存部件,其用于保存用戶在該應用上的輸入操作、和用于當期待檢查屏幕狀態(tài) 時的至少一個定時中的每一個定時的DOM樹和CSS ;
[0053] 獲取部件,其用于在源代碼被改變以后,按照操作的順序仿真該輸入操作,并且獲 取用于與當期待檢查屏幕狀態(tài)時的至少一個定時中的每一個定時相同的定時的DOM樹和 CSS ;
[0054] 比較部件,其用于針對該相同的定時中的每一個,將通過該保存部件被保存的DOM 樹和CSS與通過該仿真部件被獲取的DOM樹和CSS比較;以及
[0055] 輸出部件,其用于輸出比較的結果。
[0056] 根據本發(fā)明的實施例,在根據上文描述的第三方面的計算機中,針對已經被保存 的DOM樹中的每一個DOM元素,該保存部件可以保存將應用到DOM元素上的CSS特性以及 該CSS特性的定義位置。
[0057] 根據本發(fā)明的實施例,在根據上文描述的第三方面的計算機中,對已經被獲取的 DOM樹中的每一個DOM元素,該獲取部件可以獲取將應用到DOM元素上的CSS特性以及該 CSS特性的定義位置。而且,在將應用到DOM元素上的CSS特性未定義的情況中,針對已經 被獲取的DOM樹中的每一個DOM元素,該獲取部件可以獲取被當作初始值而使用的值。
[0058] 根據本發(fā)明的實施例,在根據上文描述的第三方面的計算機中,
[0059] 該保存部件可以針對當期待檢查屏幕狀態(tài)時的至少一個定時中的每一個,捕捉應 用上的屏幕快照,
[0060] 該仿真部件可以在與當期待檢查屏幕狀態(tài)時的至少一個定時中的每一個定時相 同的定時時,捕捉應用上的屏幕快照,以及
[0061] 該輸出部件可以響應于根據比較的結果的差異,顯示通過該保存部件被捕捉的屏 幕快照和通過該仿真部件被獲取的屏幕快照中的每一個。
[0062] 根據本發(fā)明的實施例,在根據上文描述的第三方面的計算機中,該輸出部件可以 響應于根據比較的結果的差異,用突出的方式顯示該差異,該差異是在通過該保存部件被 捕捉的屏幕快照和通過該仿真部件被獲取的屏幕快照之間的差異。
[0063] 根據本發(fā)明的第四方面,用于檢測由改變從中可以提取DOM樹和CSS的任意應用 的源代碼而引起的影響的計算機包括以下部件,其中該計算機能夠訪問存儲介質,在該存 儲介質中保存用戶在應用上的輸入操作歷史以及保存當期待檢查屏幕狀態(tài)時的至少一個 定時時的DOM樹和CSS :
[0064] 獲取部件,其用于在源代碼被改變以后,按照操作的順序仿真該輸入操作,并且獲 取用于與當期待檢查屏幕狀態(tài)時的至少一個定時中的每一個定時相同的定時的DOM樹和 CSS ;
[0065] 比較部件,其用于針對該相同的定時中的每一個,將被保存在該存儲介質中的DOM 樹和CSS與通過該仿真部件被獲取的DOM樹和CSS比較;以及
[0066] 輸出部件,其用于輸出比較的結果。
[0067] 根據本發(fā)明的實施例,根據上文描述的第四方面的計算機能夠訪問的該存儲介質 中進一步保存,針對已經被保存的DOM樹中的每一個DOM元素,將應用到DOM元素上的CSS 特性以及該CSS特性的定義位置,以及
[0068] 該獲取部件可以針對已經被獲取的DOM樹中的每一個DOM元素,從該存儲介質獲 取將應用到DOM元素上的CSS特性以及該CSS特性的定義位置,或者在應用到DOM元素上 的CSS特性未定義的情況中,針對已經被獲取的DOM樹中的每一個DOM元素,獲取被當作初 始值而使用的值。
[0069] 根據本發(fā)明的實施例,根據上文描述的第四方面的計算機能夠訪問的該存儲介質 其中進一步保存,針對當期待檢查屏幕狀態(tài)時的至少一個定時中的每一個,被捕捉的應用 上的屏幕快照,其中
[0070] 在與當期待檢查屏幕狀態(tài)時的至少一個定時中的每一個定時相同的定時時,該獲 取部件可以捕捉應用上的屏幕快照,以及
[0071] 該輸出部件可以響