一種前端javascript代碼的測試方法和裝置制造方法
【專利摘要】本發(fā)明提供了一種前端javascript代碼的測試方法和裝置,其中方法包括:預(yù)先確定并記錄被測javascript代碼中需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息;在所述被測javascript代碼中每個接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù),所述回調(diào)注入函數(shù)在所述需檢測的接口被調(diào)用時,依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取參數(shù)信息;將所述參數(shù)信息與預(yù)期值對比以得到測試結(jié)果。本發(fā)明使得對前端javascript代碼的測試更加深入,并有效改善了測試的可觀測性,同時,能夠更方便地對出現(xiàn)的問題定位。
【專利說明】—種前端javascr ipt代碼的測試方法和裝置
【【技術(shù)領(lǐng)域】】
[0001]本發(fā)明涉及代碼測試技術(shù),尤其涉及一種前端javascript代碼的測試方法和裝置。
【【背景技術(shù)】】
[0002]互聯(lián)網(wǎng)公司在對某一個前端進行改版或升級,或者開發(fā)了一個新的前端后,都需要對該前端進行測試以保證其質(zhì)量。然而,對web前端的代碼進行測試通常都需要消耗大量的資源和人力成本,其中的一個重要原因是:《eb前端調(diào)用代碼時,代碼執(zhí)行的很多操作結(jié)果并不能直接觀測到,例如dom (Document Object Model)元素的事件綁定?,F(xiàn)有的測試方法中,通常都是直接由人工觀察web頁面的實際展示效果來判斷測試結(jié)果是否符合預(yù)期,這樣的方法效率低下,并且在出現(xiàn)問題時,難以對問題定位,同時,由于無法直接檢驗代碼所執(zhí)行的不可觀測的操作結(jié)果,容易將潛在的問題遺漏。
【
【發(fā)明內(nèi)容】
】
[0003]有鑒于此,本發(fā)明提供了一種前端javascript代碼的測試方法和裝置,能夠使得對前端javascript代碼的測試更加深入,測試結(jié)果更加準確。
[0004]具體技術(shù)方案如下:
[0005]—種前端javascript代碼的測試方法,預(yù)先確定并記錄被測javascript代碼中需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息,該方法包括:
[0006]S1、在所述被測j avascript代碼中每個接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù),所述回調(diào)注入函數(shù)在所述需檢測的接口被調(diào)用時,依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取參數(shù)信息;
[0007]S2、將所述參數(shù)信息與預(yù)期值對比以得到測試結(jié)果。
[0008]根據(jù)本發(fā)明一優(yōu)選實施例,所述回調(diào)注入函數(shù)在所述需檢測接口被調(diào)用時,依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取所述參數(shù)信息,具體包括:
[0009]所述回調(diào)注入函數(shù)在某一接口被調(diào)用時,將該接口的接口格式與所述需檢測的接口的接口格式進行匹配,若匹配成功,則依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取所述參數(shù)信息;否則,忽略本次接口調(diào)用。
[0010]根據(jù)本發(fā)明一優(yōu)選實施例,所述需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息保存在特定文件中;
[0011]所述回調(diào)注入函數(shù)從所述特定文件中獲取所述需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息。
[0012]根據(jù)本發(fā)明一優(yōu)選實施例,所述步驟SI中在所述被測javascript代碼中每個接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù),具體包括:
[0013]對被測javascript代碼進行詞法分析,將代碼序列轉(zhuǎn)換為單詞Token序列;[0014]對轉(zhuǎn)換得到的Token序列進行語法分析,并從Token序列組合得到的語法短語中識別出接口調(diào)用的代碼位置;
[0015]在所述接口調(diào)用的代碼位置處載入所述回調(diào)注入函數(shù)。
[0016]根據(jù)本發(fā)明一優(yōu)選實施例,所述步驟S2中將所述參數(shù)信息與預(yù)期值對比以檢驗測試結(jié)果之前,還包括:將所述參數(shù)信息按照預(yù)先設(shè)定的格式輸出,之后再與預(yù)期值對比以檢驗測試結(jié)果。
[0017]—種前端javascript代碼的測試裝置,預(yù)先確定并記錄被測javascript代碼中需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息,該裝置包括:
[0018]輸入記錄單元,用于獲取并記錄預(yù)先確定的被測javascript代碼中需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息;
[0019]回調(diào)注入單元,用于在所述被測javascript代碼中每個接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù),所述回調(diào)注入函數(shù)在所述需檢測的接口被調(diào)用時,依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取參數(shù)信息;
[0020]輸出對比單元,用于將所述參數(shù)信息與預(yù)期值對比以檢驗測試結(jié)果。
[0021]根據(jù)本發(fā)明一優(yōu)選實施例,所述回調(diào)注入函數(shù)在所述需檢測接口被調(diào)用時,依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取所述參數(shù)信息時,具體執(zhí)行:
[0022]所述回調(diào)注入函數(shù)在某一接口被調(diào)用時,將該接口的接口格式與所述需檢測的接口的接口格式進行匹配,若匹配成功,則依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取所述參數(shù)信息;否則,忽略本次接口調(diào)用。
[0023]根據(jù)本發(fā)明一優(yōu)選實施例,所述輸入記錄單元將需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息保存在特定文件中;
[0024]所述回調(diào)注入函數(shù)從所述特定文件中獲取所述需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息。
[0025]根據(jù)本發(fā)明一優(yōu)選實施例,所述回調(diào)注入單元在所述被測javascript代碼中每個接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù),具體執(zhí)行:
[0026]對被測javascript代碼進行詞法分析,將代碼序列轉(zhuǎn)換為單詞Token序列;
[0027]對轉(zhuǎn)換得到的Token序列進行語法分析,并從Token序列組合得到的語法短語中識別出接口調(diào)用的代碼位置;
[0028]在所述接口調(diào)用的代碼位置處載入所述回調(diào)注入函數(shù)。
[0029]根據(jù)本發(fā)明一優(yōu)選實施例,所述輸出對比單元將所述參數(shù)信息與預(yù)期值對比以檢驗測試結(jié)果之前,還執(zhí)行:將所述參數(shù)信息按照預(yù)先設(shè)定的格式輸出,之后再與預(yù)期值對比以檢驗測試結(jié)果。
[0030]由以上技術(shù)方案可以看出,本發(fā)明通過檢測前端對被測javascript代碼中接口的調(diào)用,獲取被測javascript代碼通過接口輸出的相關(guān)的參數(shù)信息,并將該些參數(shù)信息與預(yù)期值對比來驗證測試結(jié)果,使得對前端javascript代碼的測試更加深入,并有效改善了對前端javascript代碼測試的可觀測性,同時,能夠更方便地對出現(xiàn)的問題定位,不再依賴人工觀察,測試結(jié)果更加準確?!尽緦@綀D】
【附圖說明】】
[0031]圖1為本發(fā)明實施例一提供的前端javascript代碼的測試方法流程圖;
[0032]圖2為本發(fā)明實施例一提供的載入回調(diào)注入函數(shù)方法流程圖;
[0033]圖3為本發(fā)明實施例二提供的前端javascript代碼的測試裝置示意圖。
【【具體實施方式】】
[0034]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖和具體實施例對本發(fā)明進行詳細描述。
[0035]在實際應(yīng)用中,web前端通常需要調(diào)用javascript代碼來執(zhí)行相應(yīng)操作,以實現(xiàn)用戶所需的功能,web前端對javascript代碼的調(diào)用是通過調(diào)用javascript代碼向外公開的接口來完成的。當web前端所需的操作不同時,其調(diào)用的接口也不一樣,本發(fā)明正是通過截獲web前端對javascript代碼接口的調(diào)用來將javascript代碼的輸出結(jié)果變?yōu)楣潭ǜ袷降娜罩据敵?,從而使得前端javascript代碼測試結(jié)果變得可觀測。
[0036]實施例一
[0037]圖1為本發(fā)明實施例一提供的前端javascript代碼的測試方法流程圖,如圖1所示,該方法包括:
[0038]S101、預(yù)先確定并記錄被測javascript代碼中需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息。
[0039]為了能夠檢測到被測javascript代碼中被前端調(diào)用的接口,同時獲取所需要的參數(shù)信息,需要在本步驟中,預(yù)先確定并記錄被測javascript代碼中需要檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息,以便在后續(xù)步驟中能從該些字段中獲取所需參數(shù)信息。
[0040]通常,不同的接口對應(yīng)前端調(diào)用javascript代碼來執(zhí)行的不同操作,在確定需要檢測的接口的接口格式的同時,可以根據(jù)不同的操作類型的特點來設(shè)置與接口對應(yīng)的所需檢測的字段信息。下面根據(jù)常用的操作類型,對這一步驟進行進一步描述:
[0041]1、對某一個dom元素屬性的修改:該操作類型的特點為,會將某一個dom元素的屬性進行修改,例如,修改該dom元素的長和高等,可根據(jù)該特點設(shè)置所需檢測的字段為:接口函數(shù)名、操作類型、dom_id、修改的屬性名list。
[0042]2、對某一個dom元素的增刪:該操作類型的特點為,會增加某一個dom元素,或直接刪除某一個dom元素,可根據(jù)該特點設(shè)置所需檢測的字段為:接口函數(shù)名、操作類型、dom—id。
[0043]3、事件綁定:該操作類型的特點為,當觸發(fā)某一特定事件時執(zhí)行所綁定的javascript代碼,可根據(jù)該特點設(shè)置所需檢測的字段為:接口函數(shù)名、操作類型、綁定事件類型。
[0044]4、發(fā)送Ajax請求:該操作類型的特點為,會向后端發(fā)送Ajax請求,可根據(jù)該特點設(shè)置所需檢測的字段為:接口函數(shù)名、操作類型、請求的url、請求中發(fā)送的數(shù)據(jù)。
[0045]可以理解的是,上述四類操作僅出于示例的目的,本發(fā)明的實施例不限于此。在實際測試中,可以確定被測javascript代碼中每個接口的接口格式,以及與該些接口對應(yīng)的所需檢測的字段信息來對所有的接口調(diào)用進行檢測,也可以只確定被測javascript代碼中某些接口的接口格式以及對應(yīng)的所需檢測的字段信息來有針對性的對該些接口的調(diào)用進行檢測。
[0046]在確定了被測javascript代碼中需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息后,將該些接口格式以及對應(yīng)的所需要檢測的字段信息保存在特定文件中。
[0047]S102、在所述被測javascript代碼中每個向外公開的接口的接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù)。
[0048]為了能截獲每次web前端對被測javascript代碼的調(diào)用,并獲取所需的參數(shù)信息,需要在被測javascript代碼中所有接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù),以保證在每次web前端調(diào)用被測javascript代碼的接口后,該回調(diào)注入函數(shù)都會被執(zhí)行。
[0049]如圖2所示,載入回調(diào)注入函數(shù)的可以通過下述步驟S1021-S1023來實現(xiàn):
[0050]S1021、詞法分析,對被測javascript代碼進行詞法分析,將其代碼序列轉(zhuǎn)換為單詞(Token)序列,以便于后續(xù)的語法分析識別出代碼中的接口調(diào)用。這一過程可以利用第三方工具Lex (詞法分析器)來完成。
[0051]S1022、語法分析,對步驟S1021中詞法分析得到的單詞序列進行語法分析,將單詞序列組合成為語法短語,并從中識別出每一個接口調(diào)用的代碼位置。語法分析可以利用第三方工具Yacc (語法分析器)來完成。
[0052]S1023、載入回調(diào)注入函數(shù),在步驟S 1022中所識別出的每一個接口調(diào)用的代碼位置載入回調(diào)注入函數(shù),以保證每次接口調(diào)用時,回調(diào)注入函數(shù)都會被執(zhí)行。
[0053]需要說明的是,對于使用tangram庫或jquery庫作為基礎(chǔ)庫的符合規(guī)范的代碼,可以直接統(tǒng)一在該代碼的tangram庫或jquery庫中載入回調(diào)注入函數(shù)。
[0054]繼續(xù)參看圖1。
[0055]S103、所述回調(diào)注入函數(shù)在所述需檢測的接口被調(diào)用時,依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取參數(shù)信息。
[0056]在步驟S102中,在被測javascript代碼中所有接口調(diào)用的代碼位置處載入了回調(diào)注入函數(shù)后,每次web前端調(diào)用被測javascript代碼的接口時,該回調(diào)注入函數(shù)都會被執(zhí)行,回調(diào)注入函數(shù)首先獲取本次調(diào)用的接口的接口格式,并將之與步驟SlOl中特定文件中所保存的預(yù)先確定的需要檢測的接口格式進行匹配,若不匹配,則忽略本次接口調(diào)用;若匹配,則說明需要檢測本次調(diào)用的接口,根據(jù)接口格式以及接口函數(shù)名來確定該接口,之后根據(jù)步驟SlOl中特定文件中所保存的預(yù)先設(shè)置的該接口對應(yīng)的所需要檢測的字段信息,到相應(yīng)的字段中獲取對應(yīng)的參數(shù)信息。
[0057]S104、將所述參數(shù)信息與預(yù)期值對比以檢驗測試結(jié)果。
[0058]在回調(diào)注入函數(shù)獲取得到所需要的參數(shù)信息后,將該些參數(shù)信息輸出,并與預(yù)先設(shè)定的預(yù)期值對比以查看該些參數(shù)信息的值是否符合預(yù)期,從而進一步判斷測試結(jié)果,若所輸出的參數(shù)信息與預(yù)期值相同,則認為測試通過,否則,認為測試未通過。
[0059]為了便于觀察參數(shù)信息以及將其與預(yù)期值對比,可以將回調(diào)注入函數(shù)所獲取得到的參數(shù)信息按預(yù)先設(shè)定格式輸出,例如,可將該些參數(shù)信息按照json格式形成日志后輸出,之后,將所輸出的日志內(nèi)容與預(yù)期值進行對比以驗證測試結(jié)果。
[0060]將參數(shù)信息與預(yù)期值對比可以通過正則匹配來完成,即預(yù)先設(shè)定預(yù)期值的日志信息,之后在該日志信息中利用正則表達式來匹配查看是否有對應(yīng)的信息,若有,則認為測試通過;否則,認為測試未通過。
[0061 ] 通過對上述本發(fā)明實施例提供的方法描述可以看出,本發(fā)明通過檢測前端對被測javascript代碼中接口的調(diào)用,來獲取被測javascript代碼通過接口輸出的相關(guān)的參數(shù)信息,并將該些參數(shù)信息與預(yù)期值對比來驗證測試結(jié)果。與傳統(tǒng)的人工觀察web頁面的實際展示效果來判斷測試結(jié)果的方法相比,本發(fā)明所提供的方法使得測試更加深入,顯著改善了測試的可觀測性。
[0062]實施例二
[0063]圖3為本發(fā)明實施例二提供的前端javascript代碼的測試裝置示意圖,如圖3所示,該裝置包括:輸入記錄單元10,回調(diào)注入單元20,輸出對比單元30。
[0064]輸入記錄單元10,用于獲取并記錄預(yù)先確定的被測javascript代碼中需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息。
[0065]為了能夠檢測到被測javascript代碼中被前端調(diào)用的接口,同時獲取所需要的參數(shù)信息,需要預(yù)先確定并記錄被測javascript代碼中需要檢測的接口的接口格式以及與該些接口對應(yīng)的所需要檢測的字段信息。
[0066]通常,不同的接口對應(yīng)前端調(diào)用javascript代碼來執(zhí)行的不同操作,在確定需要檢測的接口的接口格式的同時,可以根據(jù)不同的操作類型的特點來設(shè)置與接口對應(yīng)的所需檢測的字段信息。下面根據(jù)常用的操作類型,對這一步驟進行進一步描述:
[0067]1、對某一個dom元素屬性的修改:該操作類型的特點為,會將某一個dom元素的屬性進行修改,例如,修改該dom元素的長和高等,可根據(jù)該特點設(shè)置所需檢測的字段為:接口函數(shù)名、操作類型、dom_id、修改的屬性名list。
[0068]2、對某一個dom元素的增刪:該操作類型的特點為,會增加某一個dom元素,或直接刪除某一個dom元素,可根據(jù)該特點設(shè)置所需檢測的字段為:接口函數(shù)名、操作類型、dom—id。
[0069]3、事件綁定:該操作類型的特點為,會將某一函數(shù)與特定事件綁定,可根據(jù)該特點設(shè)置所需檢測的字段為:接口函數(shù)名、操作類型、綁定事件類型。
[0070]4、發(fā)送Ajax請求:該操作類型的特點為,會向后端發(fā)送Ajax請求,可根據(jù)該特點設(shè)置所需檢測的字段為:接口函數(shù)名、操作類型、請求的url、請求中發(fā)送的數(shù)據(jù)。
[0071]可以理解的是,上述四類操作僅出于示例的目的,本發(fā)明的實施例不限于此。在實際測試中,可以確定被測javascript代碼中每個接口的接口格式,以及與該些接口對應(yīng)的所需檢測的字段信息來對所有的接口調(diào)用進行檢測,也可以只確定被測javascript代碼中某些接口的接口格式以及對應(yīng)的所需檢測的字段信息來有針對性的對該些接口的調(diào)用進行檢測。
[0072]在確定了被測javascript代碼中需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息后,輸入記錄單元10將該些接口格式以及對應(yīng)的所需要檢測的字段信息保存在特定文件中。
[0073]回調(diào)注入單元20,用于在所述被測javascript代碼中每個接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù),所述回調(diào)注入函數(shù)在所述需檢測的接口被調(diào)用時,依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取參數(shù)信息。[0074]為了能截獲每次web前端對被測javascript代碼的調(diào)用,并獲取所需的參數(shù)信息,需要在被測javascript代碼中所有接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù),以保證在每次web前端調(diào)用被測javascript代碼的接口后,該回調(diào)注入函數(shù)都會被執(zhí)行。
[0075]回調(diào)注入單元20可以執(zhí)行下述操作來在被測javascript代碼的接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù):
[0076]詞法分析,對被測javascript代碼進行詞法分析,將其代碼序列轉(zhuǎn)換為單詞(Token)序列,以便于后續(xù)的語法分析識別出代碼中的接口調(diào)用,這一過程可以利用第三方工具Lex (詞法分析器)來完成;
[0077]語法分析,對詞法分析得到的單詞序列進行語法分析,將單詞序列組合成為語法短語,并從中識別出每一個接口調(diào)用的代碼位置,語法分析可以利用第三方工具Yacc(語法分析器)來完成;
[0078]載入回調(diào)注入函數(shù),在語法分析后所識別出的每一個接口調(diào)用的代碼位置載入回調(diào)注入函數(shù),以保證每次接口調(diào)用時,回調(diào)注入函數(shù)都會被執(zhí)行。
[0079]需要說明的是,對于使用tangram庫或jquery庫作為基礎(chǔ)庫的符合規(guī)范的代碼,回調(diào)注入單元20可以直接統(tǒng)一在該代碼的tangram庫或jquery庫中載入回調(diào)注入函數(shù)。
[0080]在被測javascript代碼中所有接口調(diào)用的代碼位置處載入了回調(diào)注入函數(shù)后,每次web前端調(diào)用被測javascript代碼的接口時,該回調(diào)注入函數(shù)都會被執(zhí)行,回調(diào)注入函數(shù)首先獲取本次調(diào)用的接口的接口格式,并將之與特定文件中所保存的預(yù)先確定的需要檢測的接口格式進行匹配,若不匹配,則忽略本次接口調(diào)用;若匹配,則說明需要檢測本次調(diào)用的接口,根據(jù)接口格式以及接口函數(shù)名來確定該接口,之后根據(jù)特定文件中所保存的預(yù)先設(shè)置的該接口對應(yīng)的所需要檢測的字段信息,到相應(yīng)的字段中獲取對應(yīng)的參數(shù)信息,并將該些參數(shù)信息傳遞給輸出對比單元30。
[0081]輸出對比單元30,用于將所述參數(shù)信息與預(yù)期值對比以檢驗測試結(jié)果。
[0082]輸出對比單元30獲取得到所需要的參數(shù)信息后,將該些參數(shù)信息輸出,并與預(yù)先設(shè)定的預(yù)期值對比以查看該些參數(shù)信息的值是否符合預(yù)期,從而進一步判斷測試結(jié)果,若所輸出的參數(shù)信息與預(yù)期值相同,則認為測試通過,否則,認為測試未通過。
[0083]為了便于觀察參數(shù)信息以及將其與預(yù)期值對比,可以將回調(diào)注入函數(shù)所獲取得到的參數(shù)信息按預(yù)先設(shè)定格式輸出,例如,可將該些參數(shù)信息按照json格式形成日志后輸出,之后,將所輸出的日志內(nèi)容與預(yù)期值進行對比以驗證測試結(jié)果。
[0084]將參數(shù)信息與預(yù)期值對比可以通過正則匹配來完成,即預(yù)先設(shè)定預(yù)期值的日志信息,之后在該日志信息中利用正則表達式來匹配查看是否有對應(yīng)的信息,若有,則認為測試通過;否則,認為測試未通過。
[0085]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明保護的范圍之內(nèi)。
【權(quán)利要求】
1.一種前端javascript代碼的測試方法,其特征在于,預(yù)先確定并記錄被測javascript代碼中需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息,該方法包括: 51、在所述被測javascript代碼中每個接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù),所述回調(diào)注入函數(shù)在所述需檢測的接口被調(diào)用時,依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取參數(shù)信息; 52、將所述參數(shù)信息與預(yù)期值對比以得到測試結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述回調(diào)注入函數(shù)在所述需檢測接口被調(diào)用時,依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取所述參數(shù)信息,具體包括: 所述回調(diào)注入函數(shù)在某一接口被調(diào)用時,將該接口的接口格式與所述需檢測的接口的接口格式進行匹配,若匹配成功,則依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取所述參數(shù)信息;否則,忽略本次接口調(diào)用。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息保存在特定文件中; 所述回調(diào)注入函數(shù)從所述特定文件中獲取所述需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟SI中在所述被測javascript代碼中每個接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù),具體包括: 對被測javascript代碼進行詞法分析,將代碼序列轉(zhuǎn)換為單詞Token序列;` 對轉(zhuǎn)換得到的Token序列進行語法分析,并從Token序列組合得到的語法短語中識別出接口調(diào)用的代碼位置; 在所述接口調(diào)用的代碼位置處載入所述回調(diào)注入函數(shù)。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟S2中將所述參數(shù)信息與預(yù)期值對比以檢驗測試結(jié)果之前,還包括:將所述參數(shù)信息按照預(yù)先設(shè)定的格式輸出,之后再與預(yù)期值對比以檢驗測試結(jié)果。
6.一種前端javascript代碼的測試裝置,其特征在于,預(yù)先確定并記錄被測javascript代碼中需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息,該裝置包括: 輸入記錄單元,用于獲取并記錄預(yù)先確定的被測javascript代碼中需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息; 回調(diào)注入單元,用于在所述被測javascript代碼中每個接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù),所述回調(diào)注入函數(shù)在所述需檢測的接口被調(diào)用時,依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取參數(shù)信息; 輸出對比單元,用于將所述參數(shù)信息與預(yù)期值對比以檢驗測試結(jié)果。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述回調(diào)注入函數(shù)在所述需檢測接口被調(diào)用時,依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取所述參數(shù)信息時,具體執(zhí)行: 所述回調(diào)注入函數(shù)在某一接口被調(diào)用時,將該接口的接口格式與所述需檢測的接口的接口格式進行匹配,若匹配成功,則依據(jù)所述與該接口對應(yīng)的所需要檢測的字段信息,在相應(yīng)的字段中獲取所述參數(shù)信息;否則,忽略本次接口調(diào)用。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述輸入記錄單元將需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息保存在特定文件中; 所述回調(diào)注入函數(shù)從所述特定文件中獲取所述需檢測的接口的接口格式以及與該接口對應(yīng)的所需要檢測的字段信息。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述回調(diào)注入單元在所述被測javascript代碼中每個接口調(diào)用的代碼位置處載入回調(diào)注入函數(shù),具體執(zhí)行: 對被測javascript代碼進行詞法分析,將代碼序列轉(zhuǎn)換為單詞Token序列; 對轉(zhuǎn)換得到的Token序列進行語法分析,并從Token序列組合得到的語法短語中識別出接口調(diào)用的代碼位置; 在所述接口調(diào)用的代碼位置處載入所述回調(diào)注入函數(shù)。
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述輸出對比單元將所述參數(shù)信息與預(yù)期值對比以檢驗測試結(jié)果之前,還執(zhí)行:將所述參數(shù)信息按照預(yù)先設(shè)定的格式輸出,之后再與預(yù)期值對比以檢驗測試結(jié)果。
【文檔編號】G06F11/36GK103778052SQ201210393902
【公開日】2014年5月7日 申請日期:2012年10月17日 優(yōu)先權(quán)日:2012年10月17日
【發(fā)明者】劉英杰 申請人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司