国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      對(duì)象測試方法和裝置與流程

      文檔序號(hào):12464094閱讀:344來源:國知局
      對(duì)象測試方法和裝置與流程

      本發(fā)明涉及到互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及到一種對(duì)象測試方法和裝置。



      背景技術(shù):

      現(xiàn)有技術(shù)在進(jìn)行對(duì)象測試時(shí),往往采用模糊測試的方式,即將所有可能的測試數(shù)據(jù)無差別的生成,以海量的測試數(shù)據(jù)進(jìn)行測試,這樣做的弊端是顯而易見的,海量的測試數(shù)據(jù)會(huì)拉長測試時(shí)間,降低測試效率,特別是在大型系統(tǒng)的測試過程中,占用的時(shí)間將是不可估量的。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明實(shí)施例提供一種對(duì)象測試方法和裝置,旨在解決測試效率較低的技術(shù)問題。

      為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提出一種對(duì)象測試方法,所述對(duì)象測試方法包括步驟:

      獲取待測試對(duì)象,判斷是否預(yù)存有所述待測試對(duì)象的權(quán)重信息;

      在未預(yù)存有所述待測試對(duì)象的權(quán)重信息時(shí),遍歷預(yù)設(shè)的規(guī)則庫中的測試規(guī)則生成檢測數(shù)據(jù)對(duì)所述待檢測對(duì)象,其中,在所述待檢測對(duì)象的檢測過程中代碼覆蓋率發(fā)生變化時(shí),更新所述待測試對(duì)象的所述權(quán)重信息;

      在預(yù)存有所述待測試對(duì)象的權(quán)重信息時(shí),按照預(yù)存的所述權(quán)重信息生成測試數(shù)據(jù)進(jìn)行所述待測試對(duì)象的測試。

      為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例還進(jìn)一步提出對(duì)象測試裝置,所述對(duì)象測試裝置包括:

      獲取模塊,用于獲取待測試對(duì)象;

      判斷模塊,用于判斷是否預(yù)存有所述待測試對(duì)象的權(quán)重信息;

      測試模塊,用于在未預(yù)存有所述待測試對(duì)象的權(quán)重信息時(shí),遍歷預(yù)設(shè)的 規(guī)則庫中的測試規(guī)則生成檢測數(shù)據(jù)對(duì)所述待檢測對(duì)象,其中,在所述待檢測對(duì)象的檢測過程中代碼覆蓋率發(fā)生變化時(shí),更新所述待測試對(duì)象的所述權(quán)重信息;

      所述測試模塊,還用于在預(yù)存有所述待測試對(duì)象的權(quán)重信息時(shí),按照預(yù)存的所述權(quán)重信息生成測試數(shù)據(jù)進(jìn)行所述待測試對(duì)象的測試。

      本發(fā)明提出的對(duì)象測試方法和裝置,在測試過程中不斷調(diào)整各個(gè)測試規(guī)則的權(quán)重以生成不同的測試數(shù)據(jù)對(duì)待測試對(duì)象進(jìn)行測試,并在進(jìn)行測試時(shí)若代碼覆蓋率發(fā)生變化,則將當(dāng)前權(quán)重信息與待測試對(duì)象關(guān)聯(lián)保存,使得下一次再測試該待測試對(duì)象時(shí),直接調(diào)用該保存的權(quán)重信息生成測試數(shù)據(jù),提高測試效率。

      附圖說明

      圖1為對(duì)象檢測裝置所涉及的硬件架構(gòu)示意圖;

      圖2為本發(fā)明對(duì)象測試方法的第一實(shí)施例的流程示意圖;

      圖3為本發(fā)明對(duì)象測試方法對(duì)應(yīng)的系統(tǒng)架構(gòu)圖;

      圖4為本發(fā)明對(duì)象測試裝置的第一實(shí)施例的功能模塊示意圖;

      圖5為本發(fā)明對(duì)象測試裝置的第一實(shí)施例中測試模塊的細(xì)化模塊示意圖;

      圖6為本發(fā)明對(duì)象測試裝置的第二實(shí)施例的功能模塊示意圖。

      本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。

      具體實(shí)施方式

      應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

      本發(fā)明實(shí)施例的主要解決方案是:獲取待測試對(duì)象,判斷是否預(yù)存有所述待測試對(duì)象的權(quán)重信息;在未預(yù)存有所述待測試對(duì)象的權(quán)重信息時(shí),遍歷預(yù)設(shè)的規(guī)則庫中的測試規(guī)則生成檢測數(shù)據(jù)對(duì)所述待檢測對(duì)象,其中,在所述待檢測對(duì)象的檢測過程中代碼覆蓋率發(fā)生變化時(shí),更新所述待測試對(duì)象的所 述權(quán)重信息;在預(yù)存有所述待測試對(duì)象的權(quán)重信息時(shí),按照預(yù)存的所述權(quán)重信息生成測試數(shù)據(jù)進(jìn)行所述待測試對(duì)象的測試。

      由于現(xiàn)有的測試數(shù)據(jù)無差別的生成,以海量的測試數(shù)據(jù)進(jìn)行測試,占用時(shí)間較長,導(dǎo)致測試效率較低。

      具體地,參照?qǐng)D1,圖1為本發(fā)明對(duì)象檢測方法所涉及的硬件架構(gòu)。如對(duì)象檢測方法所涉及的硬件包括:處理器1001,例如CPU,網(wǎng)絡(luò)接口1004,用戶接口1003,存儲(chǔ)器1005,通信總線1002。其中,通信總線1002用于實(shí)現(xiàn)該終端中各組成部件之間的連接通信。用戶接口1003可以包括顯示屏(Display)、鍵盤(Keyboard)、鼠標(biāo)等組件,用于接收用戶輸入的信息,并將接收的信息發(fā)送至處理器1005進(jìn)行處理。顯示屏可以為LCD顯示屏、LED顯示屏,也可以為觸摸屏用于信息需要顯示的數(shù)據(jù)??蛇x用戶接口1003還可以包括標(biāo)準(zhǔn)的有線接口、無線接口。網(wǎng)絡(luò)接口1004可選的可以包括標(biāo)準(zhǔn)的有線接口、無線接口(如WI-FI接口)。存儲(chǔ)器1005可以是高速RAM存儲(chǔ)器,也可以是穩(wěn)定的存儲(chǔ)器(non-volatile memory),例如磁盤存儲(chǔ)器。存儲(chǔ)器1005可選的還可以是獨(dú)立于前述處理器1001的存儲(chǔ)裝置。如圖2所示,作為一種計(jì)算機(jī)存儲(chǔ)介質(zhì)的存儲(chǔ)器1005中可以包括操作系統(tǒng)、網(wǎng)絡(luò)通信模塊、用戶接口模塊以及對(duì)象測試程序。

      在圖1所示的對(duì)象檢測裝置所涉及的硬件架構(gòu)中,網(wǎng)絡(luò)接口1004主要用于向服務(wù)器等網(wǎng)絡(luò)終端傳輸數(shù)據(jù);用戶接口1003主要用于連接客戶端,與客戶端進(jìn)行數(shù)據(jù)通信,接收客戶端輸入的信息和指令;而處理器1001可以用于調(diào)用存儲(chǔ)器1005中存儲(chǔ)的對(duì)象測試程序,并執(zhí)行以下操作:

      獲取待測試對(duì)象,判斷是否預(yù)存有所述待測試對(duì)象的權(quán)重信息;

      在未預(yù)存有所述待測試對(duì)象的權(quán)重信息時(shí),遍歷預(yù)設(shè)的規(guī)則庫中的測試規(guī)則生成檢測數(shù)據(jù)對(duì)所述待檢測對(duì)象,其中,在所述待檢測對(duì)象的檢測過程中代碼覆蓋率發(fā)生變化時(shí),更新所述待測試對(duì)象的所述權(quán)重信息;

      在預(yù)存有所述待測試對(duì)象的權(quán)重信息時(shí),按照預(yù)存的所述權(quán)重信息生成測試數(shù)據(jù)進(jìn)行所述待測試對(duì)象的測試。

      進(jìn)一步地,在一個(gè)實(shí)施例中,處理器1001調(diào)用存儲(chǔ)器1005中存儲(chǔ)的對(duì) 象測試程序可以執(zhí)行以下操作:

      按照預(yù)設(shè)的權(quán)重值對(duì)測試規(guī)則庫中的測試規(guī)則進(jìn)行組合生成測試數(shù)據(jù);

      按照所述測試數(shù)據(jù)對(duì)所述待測試對(duì)象進(jìn)行測試,以獲取所述測試數(shù)據(jù)的代碼覆蓋率;

      在所述代碼覆蓋率變化時(shí),更新所述待測試對(duì)象的所述權(quán)重信息;

      在所述代碼覆蓋率未變化時(shí),調(diào)整所述測試規(guī)則庫中的測試規(guī)則的權(quán)重值,并按照調(diào)整后的所述權(quán)重值對(duì)所述測試規(guī)則庫中的測試規(guī)則進(jìn)行組合生成測試數(shù)據(jù);

      繼續(xù)執(zhí)行按照所述測試數(shù)據(jù)對(duì)所述待測試對(duì)象進(jìn)行測試的步驟,直至遍歷完所有規(guī)則。

      進(jìn)一步地,在一個(gè)實(shí)施例中,處理器1001調(diào)用存儲(chǔ)器1005中存儲(chǔ)的對(duì)象測試程序可以執(zhí)行以下操作:

      在更新過所述待測試對(duì)象的權(quán)重信息,且當(dāng)前權(quán)重值對(duì)應(yīng)的代碼覆蓋率是否大于所述權(quán)重信息中的代碼覆蓋率時(shí),采用當(dāng)前生成的所述權(quán)重信息更新保存的權(quán)重信息;

      在未更新過所述待測試對(duì)象的權(quán)重信息時(shí),關(guān)聯(lián)保存所述待測試對(duì)象和所述權(quán)重信息。

      進(jìn)一步地,在一個(gè)實(shí)施例中,處理器1001調(diào)用存儲(chǔ)器1005中存儲(chǔ)的對(duì)象測試程序可以執(zhí)行以下操作:

      在所述待檢測對(duì)象的檢測過程中代碼覆蓋率發(fā)生變化時(shí),關(guān)聯(lián)保存所述待檢測對(duì)象和所述測試數(shù)據(jù)。

      進(jìn)一步地,在一個(gè)實(shí)施例中,處理器1001調(diào)用存儲(chǔ)器1005中存儲(chǔ)的對(duì)象測試程序可以執(zhí)行以下操作:

      獲取待測試對(duì)象,并判斷是否預(yù)存有所述待測試對(duì)象對(duì)應(yīng)的測試數(shù)據(jù);

      在未預(yù)存有所述待測試對(duì)象對(duì)應(yīng)的測試數(shù)據(jù)時(shí),執(zhí)行所述判斷是否預(yù)存有所述待測試對(duì)象的權(quán)重信息的步驟;

      在預(yù)存有所述待測試對(duì)象對(duì)應(yīng)的測試數(shù)據(jù)時(shí),采用所述測試對(duì)象對(duì)應(yīng)的數(shù)據(jù)對(duì)所述待測試對(duì)象進(jìn)行測試。

      本實(shí)施例根據(jù)上述方案,在測試過程中不斷調(diào)整各個(gè)測試規(guī)則的權(quán)重以 生成不同的測試數(shù)據(jù)對(duì)待測試對(duì)象進(jìn)行測試,并在進(jìn)行測試時(shí)若代碼覆蓋率發(fā)生變化,則將當(dāng)前權(quán)重信息與待測試對(duì)象關(guān)聯(lián)保存,使得下一次再測試該待測試對(duì)象時(shí),直接調(diào)用該保存的權(quán)重信息生成測試數(shù)據(jù),提高測試效率。

      基于上述硬件架構(gòu),提出本發(fā)明對(duì)象測試方法實(shí)施例。

      如圖2所示,提出本發(fā)明一種對(duì)象測試方法的第一實(shí)施例,所述對(duì)象測試方法包括:

      步驟S10,獲取待測試對(duì)象,判斷是否預(yù)存有所述待測試對(duì)象的權(quán)重信息;

      在本實(shí)施例中,該待測試對(duì)象可為接口以及插件等的程序代碼,該權(quán)重信息可包括代碼覆蓋率以及各個(gè)測試規(guī)則的權(quán)重,可將該權(quán)重信息與測試對(duì)象關(guān)聯(lián)保存。

      步驟S20,在未預(yù)存有所述待測試對(duì)象的權(quán)重信息時(shí),遍歷預(yù)設(shè)的規(guī)則庫中的測試規(guī)則生成檢測數(shù)據(jù)對(duì)所述待檢測對(duì)象,其中,在所述待檢測對(duì)象的檢測過程中代碼覆蓋率發(fā)生變化時(shí),更新所述待測試對(duì)象的所述權(quán)重信息;

      規(guī)則庫中的規(guī)則類型可包括:分隔符,各種分隔符的匯總,例如,\r,\n,,=,>,<等;隨機(jī)數(shù),包括各種長度的隨機(jī)數(shù);二進(jìn)制數(shù)據(jù)量,各種二進(jìn)制數(shù)據(jù)流的組合;字符型,包括ascii、unicode在內(nèi)的各種字符型數(shù)據(jù);bit類型;byte類型;float類型;日期類型等等,該測試規(guī)則庫中的測試規(guī)則可不斷更新。

      可以理解的是,在遍歷所述預(yù)設(shè)規(guī)則庫中的測試規(guī)則時(shí),可不斷調(diào)整各個(gè)測試規(guī)則的組合即各個(gè)規(guī)則的權(quán)重生成測試數(shù)據(jù),直至遍歷完所有測試規(guī)則,具體過程如下:

      按照預(yù)設(shè)的權(quán)重值對(duì)測試規(guī)則庫中的測試規(guī)則進(jìn)行組合生成測試數(shù)據(jù);

      按照所述測試數(shù)據(jù)對(duì)所述待測試對(duì)象進(jìn)行測試,以獲取所述測試數(shù)據(jù)的代碼覆蓋率;

      在所述代碼覆蓋率變化時(shí),更新所述待測試對(duì)象的所述權(quán)重信息;

      在所述代碼覆蓋率未變化時(shí),調(diào)整所述測試規(guī)則庫中的測試規(guī)則的權(quán)重值,并按照調(diào)整后的所述權(quán)重值對(duì)所述測試規(guī)則庫中的測試規(guī)則進(jìn)行組合生成測試數(shù)據(jù);

      繼續(xù)執(zhí)行按照所述測試數(shù)據(jù)對(duì)所述待測試對(duì)象進(jìn)行測試的步驟,直至遍歷完所有規(guī)則。

      在代碼覆蓋率變化時(shí),說明該測試數(shù)據(jù)為有效數(shù)據(jù),則對(duì)該權(quán)重值進(jìn)行保存,以使得下針對(duì)同樣的測試對(duì)象時(shí),可直接采用存儲(chǔ)的權(quán)重信息生成測試數(shù)據(jù)以進(jìn)行測試。

      在本方案中,主要以key值對(duì)權(quán)重信息進(jìn)行存儲(chǔ)。例如某被測系統(tǒng)對(duì)應(yīng)的A接口有一個(gè)參數(shù)B,在對(duì)該B參數(shù)進(jìn)行數(shù)據(jù)構(gòu)造的過程中,某個(gè)測試數(shù)據(jù)生成規(guī)則組合C貢獻(xiàn)了N%的代碼覆蓋率。權(quán)重庫以3元組的形式記錄該權(quán)重信息:(B,C,N%),此處可不再保留接口A的信息,僅以參數(shù)B作為key,有助于在別的接口中遇到B參數(shù)的(時(shí)候,可以使用相同的權(quán)重信息,可以理解的時(shí),也可保存接口A的信息即權(quán)重信息為(A,B,C,N%),使得在測試接口A的B參數(shù)時(shí)可調(diào)用該規(guī)則組合C。N%的總和是100%??梢员WC每個(gè)組合的權(quán)重按照百分比分配,對(duì)于權(quán)重N%,在構(gòu)造該key下的測試數(shù)據(jù)的時(shí)候,按照權(quán)重的高低進(jìn)行構(gòu)造,直到被測對(duì)象的覆蓋率不再升高或者達(dá)到100%。可以理解的是,也可在代碼覆蓋率發(fā)生改變時(shí),不再進(jìn)行權(quán)重的調(diào)整,直接獲取其它待測試對(duì)象進(jìn)行測試。

      可以理解的是,不同的規(guī)則組合可能均會(huì)出現(xiàn)代碼覆蓋率變化的情況,則步驟“更新所述待測試對(duì)象的所述權(quán)重信息”包括:

      在更新過所述待測試對(duì)象的權(quán)重信息,且當(dāng)前權(quán)重值對(duì)應(yīng)的代碼覆蓋率是否大于所述權(quán)重信息中的代碼覆蓋率時(shí),采用當(dāng)前生成的所述權(quán)重信息更新保存的權(quán)重信息;

      在未更新過所述待測試對(duì)象的權(quán)重信息時(shí),關(guān)聯(lián)保存所述待測試對(duì)象和所述權(quán)重信息。

      在之前的代碼覆蓋率高于當(dāng)前的代碼覆蓋率時(shí)則不更新權(quán)重信息,在之前的代碼覆蓋率小于當(dāng)前代碼覆蓋率時(shí),更新該權(quán)重信息,以保證采用代碼覆蓋率最高的測試數(shù)據(jù)進(jìn)行測試,提高測試準(zhǔn)確性。

      步驟S30,在預(yù)存有所述待測試對(duì)象的權(quán)重信息時(shí),按照預(yù)存的所述權(quán)重信息生成測試數(shù)據(jù)進(jìn)行所述待測試對(duì)象的測試。

      在本實(shí)施中,該權(quán)重信息中的權(quán)重值指規(guī)則庫中各個(gè)測試規(guī)則的權(quán)重,按照該權(quán)重值由規(guī)則提取測試規(guī)則。

      本實(shí)施例提出的對(duì)象測試方法,在測試過程中不斷調(diào)整各個(gè)測試規(guī)則的權(quán)重以生成不同的測試數(shù)據(jù)對(duì)待測試對(duì)象進(jìn)行測試,并在進(jìn)行測試時(shí)若代碼 覆蓋率發(fā)生變化,則將當(dāng)前權(quán)重信息與待測試對(duì)象關(guān)聯(lián)保存,使得下一次再測試該待測試對(duì)象時(shí),直接調(diào)用該保存的權(quán)重信息生成測試數(shù)據(jù),提高測試效率。

      基于第一實(shí)施例提出本發(fā)明對(duì)象測試方法的第二實(shí)施例,在本實(shí)施例中,在所述待檢測對(duì)象的檢測過程中代碼覆蓋率發(fā)生變化時(shí),關(guān)聯(lián)保存所述待檢測對(duì)象和所述測試數(shù)據(jù)。

      在本實(shí)施例中,在關(guān)聯(lián)保存該待檢測對(duì)象和所述測試數(shù)據(jù)可保存代碼覆蓋率以及代碼信息,如源文件M的第N行代碼。可設(shè)置基線庫來保存測試數(shù)據(jù),該測試數(shù)據(jù)為對(duì)被測對(duì)象某一測試入口的有效數(shù)據(jù)進(jìn)行記錄。例如一個(gè)http接口A的某個(gè)參數(shù)B,規(guī)則組合C對(duì)應(yīng)的測試數(shù)據(jù)M執(zhí)行過后,覆蓋了源文件的代碼,試整個(gè)測試過程代碼覆蓋率提高到Q%。那么存儲(chǔ)的該條基線為:(A,B,M,Q%),基線庫建立之后,當(dāng)下次再遇到A接口的B參數(shù)的時(shí)候,先直接調(diào)用基線庫的數(shù)據(jù)進(jìn)行測試而不需要再調(diào)用測試規(guī)則生成測試數(shù)據(jù)。

      可以理解的是,在測試對(duì)象時(shí),可先調(diào)用基線庫中的測試數(shù)據(jù)進(jìn)行測試,在基線庫中未保存有該測試對(duì)象的測試數(shù)據(jù)時(shí),再調(diào)用該測試對(duì)象對(duì)應(yīng)的權(quán)重信息生成測試規(guī)則組合,采用該測試規(guī)則組合生成測試數(shù)據(jù)進(jìn)行測試,則所述判斷是否預(yù)存有所述待測試對(duì)象的權(quán)重信息的步驟之前,所述對(duì)象測試方法包括:

      獲取待測試對(duì)象,并判斷是否預(yù)存有所述待測試對(duì)象對(duì)應(yīng)的測試數(shù)據(jù);

      在未預(yù)存有所述待測試對(duì)象對(duì)應(yīng)的測試數(shù)據(jù)時(shí),執(zhí)行所述判斷是否預(yù)存有所述待測試對(duì)象的權(quán)重信息的步驟;

      所述判斷是否預(yù)存有所述待測試對(duì)象對(duì)應(yīng)的測試數(shù)據(jù)的步驟之后,所述對(duì)象測試方法還包括步驟:

      在預(yù)存有所述待測試對(duì)象對(duì)應(yīng)的測試數(shù)據(jù)時(shí),采用所述測試對(duì)象對(duì)應(yīng)的數(shù)據(jù)對(duì)所述待測試對(duì)象進(jìn)行測試。

      一個(gè)http接口A的某個(gè)參數(shù)B,規(guī)則組合C對(duì)應(yīng)的測試數(shù)據(jù)M執(zhí)行過后,覆蓋了源文件的代碼,試整個(gè)測試過程代碼覆蓋率提高到Q%。那么存儲(chǔ)的該條基線為:(A,B,M,Q%),權(quán)重信息為(B,C,Q%),則再次面對(duì)接口 B的參數(shù)B時(shí),該參數(shù)B可能存在權(quán)重信息不存在測試數(shù)據(jù)。

      本實(shí)施例中,將測試數(shù)據(jù)直接與測試對(duì)象關(guān)聯(lián)保存,使得可以調(diào)用測試數(shù)據(jù)直接測試,效率更高。

      參照?qǐng)D3,為本發(fā)明對(duì)象測試方法的系統(tǒng)架構(gòu)圖,在獲取到待檢測對(duì)象時(shí),將待檢測對(duì)象作為被測對(duì)象,規(guī)則選擇與組合器獲取基線庫中與被測對(duì)象對(duì)應(yīng)的測試數(shù)據(jù),在由基線庫中獲取到測試數(shù)據(jù)時(shí),將測試數(shù)據(jù)注入被測對(duì)象中進(jìn)行檢測,覆蓋率收集器收集代碼覆蓋率;在由基線庫中未獲取到測試數(shù)據(jù)時(shí),由權(quán)重庫中獲取被測對(duì)象對(duì)應(yīng)的權(quán)重信息,在獲取到權(quán)重信息時(shí),規(guī)則選擇與組合器按照獲取到的權(quán)重信息進(jìn)行測試規(guī)則的組合,并將測試規(guī)則的組合發(fā)送至數(shù)據(jù)生成與注入器生成測試數(shù)據(jù),并將測試數(shù)據(jù)注入被測對(duì)象中,覆蓋率收集器收集代碼覆蓋率;在未獲取到權(quán)重信息時(shí),規(guī)則選擇與組合器遍歷測試規(guī)則庫中的測試規(guī)則生成測試規(guī)則組合,并將測試規(guī)則的組合發(fā)送至數(shù)據(jù)生成與注入器生成測試數(shù)據(jù),將測試數(shù)據(jù)注入被測對(duì)象中,覆蓋率收集器收集代碼覆蓋率,在代碼覆蓋率發(fā)生變化時(shí),規(guī)則權(quán)重管理器更新權(quán)重庫以及基線庫,在代碼覆蓋率未發(fā)生變化時(shí),規(guī)則選擇和組合器調(diào)整權(quán)重值重新進(jìn)行測試規(guī)則組合。

      對(duì)應(yīng)地,提出本發(fā)明對(duì)象測試裝置的第一實(shí)施例。參考圖4,所述對(duì)象測試裝置包括獲取模塊10、判斷模塊20以及測試模塊30,其中:

      獲取模塊10,用于獲取待測試對(duì)象;

      判斷模塊20,用于判斷是否預(yù)存有所述待測試對(duì)象的權(quán)重信息;

      在本實(shí)施例中,該待測試對(duì)象可為接口以及插件等的程序代碼,該權(quán)重信息可包括代碼覆蓋率以及各個(gè)測試規(guī)則的權(quán)重,可將該權(quán)重信息與測試對(duì)象關(guān)聯(lián)保存。

      測試模塊30,用于在未預(yù)存有所述待測試對(duì)象的權(quán)重信息時(shí),遍歷預(yù)設(shè)的規(guī)則庫中的測試規(guī)則生成檢測數(shù)據(jù)對(duì)所述待檢測對(duì)象,其中,在所述待檢測對(duì)象的檢測過程中代碼覆蓋率發(fā)生變化時(shí),更新所述待測試對(duì)象的所述權(quán)重信息;

      規(guī)則庫中的規(guī)則類型可包括:分隔符,各種分隔符的匯總,例如,\r,\n,,=,>,< 等;隨機(jī)數(shù),包括各種長度的隨機(jī)數(shù);二進(jìn)制數(shù)據(jù)量,各種二進(jìn)制數(shù)據(jù)流的組合;字符型,包括ascii、unicode在內(nèi)的各種字符型數(shù)據(jù);bit類型;byte類型;float類型;日期類型等等,該測試規(guī)則庫中的測試規(guī)則可不斷更新。

      可以理解的是,在遍歷所述預(yù)設(shè)規(guī)則庫中的測試規(guī)則時(shí),可不斷調(diào)整各個(gè)測試規(guī)則的組合即各個(gè)規(guī)則的權(quán)重生成測試數(shù)據(jù),直至遍歷完所有測試規(guī)則,即參照?qǐng)D5,所述測試模塊30包括:

      生成單元31,用于按照預(yù)設(shè)的權(quán)重值對(duì)測試規(guī)則庫中的測試規(guī)則進(jìn)行組合生成測試數(shù)據(jù);

      測試單元32,用于按照生成的所述測試數(shù)據(jù)對(duì)所述待測試對(duì)象進(jìn)行測試,以獲取所述測試數(shù)據(jù)的代碼覆蓋率;

      更新單元33,用于在所述代碼覆蓋率變化時(shí),更新所述待測試對(duì)象的所述權(quán)重信息;

      調(diào)整單元34,用于在所述代碼覆蓋率未變化時(shí),調(diào)整所述測試規(guī)則庫中的測試規(guī)則的權(quán)重值,并按照調(diào)整后的所述權(quán)重值對(duì)所述測試規(guī)則庫中的測試規(guī)則進(jìn)行組合生成測試數(shù)據(jù)。

      在代碼覆蓋率變化時(shí),說明該測試數(shù)據(jù)為有效數(shù)據(jù),則對(duì)該權(quán)重值進(jìn)行保存,以使得下針對(duì)同樣的測試對(duì)象時(shí),可直接采用存儲(chǔ)的權(quán)重信息生成測試數(shù)據(jù)以進(jìn)行測試。

      在本方案中,主要以key值對(duì)權(quán)重信息進(jìn)行存儲(chǔ)。例如某被測系統(tǒng)對(duì)應(yīng)的A接口有一個(gè)參數(shù)B,在對(duì)該B參數(shù)進(jìn)行數(shù)據(jù)構(gòu)造的過程中,某個(gè)測試數(shù)據(jù)生成規(guī)則組合C貢獻(xiàn)了N%的代碼覆蓋率。權(quán)重庫以3元組的形式記錄該權(quán)重信息:(B,C,N%),此處可不再保留接口A的信息,僅以參數(shù)B作為key,有助于在別的接口中遇到B參數(shù)的(時(shí)候,可以使用相同的權(quán)重信息,可以理解的時(shí),也可保存接口A的信息即權(quán)重信息為(A,B,C,N%),使得在測試接口A的B參數(shù)時(shí)可調(diào)用該規(guī)則組合C。N%的總和是100%??梢员WC每個(gè)組合的權(quán)重按照百分比分配,對(duì)于權(quán)重N%,在構(gòu)造該key下的測試數(shù)據(jù)的時(shí)候,按照權(quán)重的高低進(jìn)行構(gòu)造,直到被測對(duì)象的覆蓋率不再升高或者達(dá)到100%。可以理解的是,也可在代碼覆蓋率發(fā)生改變時(shí),不再進(jìn)行權(quán)重的調(diào)整,直接獲取其它待測試對(duì)象進(jìn)行測試。

      可以理解的是,不同的規(guī)則組合可能均會(huì)出現(xiàn)代碼覆蓋率變化的情況, 則更新單元33包括:

      更新子單元,用于在更新過所述待測試對(duì)象的權(quán)重信息,且當(dāng)前權(quán)重值對(duì)應(yīng)的代碼覆蓋率是否大于所述權(quán)重信息中的代碼覆蓋率時(shí),采用當(dāng)前生成的所述權(quán)重信息更新保存的權(quán)重信息;

      存儲(chǔ)子單元,用于在未更新過所述待測試對(duì)象的權(quán)重信息時(shí),關(guān)聯(lián)保存所述待測試對(duì)象和所述權(quán)重信息。

      在之前的代碼覆蓋率高于當(dāng)前的代碼覆蓋率時(shí)則不更新權(quán)重信息,在之前的代碼覆蓋率小于當(dāng)前代碼覆蓋率時(shí),更新該權(quán)重信息,以保證采用代碼覆蓋率最高的測試數(shù)據(jù)進(jìn)行測試,提高測試準(zhǔn)確性。

      所述測試模塊30,還用于在預(yù)存有所述待測試對(duì)象的權(quán)重信息時(shí),按照預(yù)存的所述權(quán)重信息生成測試數(shù)據(jù)進(jìn)行所述待測試對(duì)象的測試。

      在本實(shí)施中,該權(quán)重信息中的權(quán)重值指規(guī)則庫中各個(gè)測試規(guī)則的權(quán)重,按照該權(quán)重值由規(guī)則提取測試規(guī)則。

      本實(shí)施例提出的對(duì)象測試裝置,在測試過程中不斷調(diào)整各個(gè)測試規(guī)則的權(quán)重以生成不同的測試數(shù)據(jù)對(duì)待測試對(duì)象進(jìn)行測試,并在進(jìn)行測試時(shí)若代碼覆蓋率發(fā)生變化,則將當(dāng)前權(quán)重信息與待測試對(duì)象關(guān)聯(lián)保存,使得下一次再測試該待測試對(duì)象時(shí),直接調(diào)用該保存的權(quán)重信息生成測試數(shù)據(jù),提高測試效率。

      基于第一實(shí)施例提出本發(fā)明對(duì)象測試裝置的第二實(shí)施例,參照?qǐng)D6,在本實(shí)施例中,所述對(duì)象測試裝置還包括:

      存儲(chǔ)模塊40,用于在所述待檢測對(duì)象的檢測過程中代碼覆蓋率發(fā)生變化時(shí),關(guān)聯(lián)保存所述待檢測對(duì)象和所述測試數(shù)據(jù)。

      在本實(shí)施例中,在關(guān)聯(lián)保存該待檢測對(duì)象和所述測試數(shù)據(jù)可保存代碼覆蓋率以及代碼信息,如源文件M的第N行代碼。可設(shè)置基線庫來保存測試數(shù)據(jù),該測試數(shù)據(jù)為對(duì)被測對(duì)象某一測試入口的有效數(shù)據(jù)進(jìn)行記錄。例如一個(gè)http接口A的某個(gè)參數(shù)B,規(guī)則組合C對(duì)應(yīng)的測試數(shù)據(jù)M執(zhí)行過后,覆蓋了源文件的代碼,試整個(gè)測試過程代碼覆蓋率提高到Q%。那么存儲(chǔ)的該條基線為:(A,B,M,Q%),基線庫建立之后,當(dāng)下次再遇到A接口的B參數(shù)的時(shí)候,先直接調(diào)用基線庫的數(shù)據(jù)進(jìn)行測試而不需要再調(diào)用測試規(guī)則生成測試 數(shù)據(jù)。

      可以理解的是,在測試對(duì)象時(shí),可先調(diào)用基線庫中的測試數(shù)據(jù)進(jìn)行測試,在基線庫中未保存有該測試對(duì)象的測試數(shù)據(jù)時(shí),再調(diào)用該測試對(duì)象對(duì)應(yīng)的權(quán)重信息生成測試規(guī)則組合,采用該測試規(guī)則組合生成測試數(shù)據(jù)進(jìn)行測試,則所述判斷模塊20,還用于判斷是否預(yù)存有所述待測試對(duì)象對(duì)應(yīng)的測試數(shù)據(jù),并在未預(yù)存有所述待測試對(duì)象對(duì)應(yīng)的測試數(shù)據(jù)時(shí),判斷是否預(yù)存有所述待測試對(duì)象的權(quán)重信息;所述測試模塊30,還用于在預(yù)存有所述待測試對(duì)象對(duì)應(yīng)的測試數(shù)據(jù)時(shí),采用所述測試對(duì)象對(duì)應(yīng)的數(shù)據(jù)對(duì)所述待測試對(duì)象進(jìn)行測試。

      一個(gè)http接口A的某個(gè)參數(shù)B,規(guī)則組合C對(duì)應(yīng)的測試數(shù)據(jù)M執(zhí)行過后,覆蓋了源文件的代碼,試整個(gè)測試過程代碼覆蓋率提高到Q%。那么存儲(chǔ)的該條基線為:(A,B,M,Q%),權(quán)重信息為(B,C,Q%),則再次面對(duì)接口B的參數(shù)B時(shí),該參數(shù)B可能存在權(quán)重信息不存在測試數(shù)據(jù)。

      本實(shí)施例中,將測試數(shù)據(jù)直接與測試對(duì)象關(guān)聯(lián)保存,使得可以調(diào)用測試數(shù)據(jù)直接測試,效率更高。

      需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。

      上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。

      通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1