本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種應(yīng)用程序的模糊測(cè)試方法、裝置及系統(tǒng)。
背景技術(shù):
現(xiàn)有的計(jì)算機(jī)技術(shù)越來(lái)越普及,各種終端的應(yīng)用程序也被更多的用戶運(yùn)用,但是應(yīng)用程序的安全也越來(lái)越受到重視,應(yīng)用程序的監(jiān)控技術(shù)也更加重要。目前,通過(guò)向目標(biāo)系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來(lái)發(fā)現(xiàn)軟件漏洞的方法,也就是自動(dòng)或半自動(dòng)的生成隨機(jī)數(shù)據(jù)輸入到一個(gè)應(yīng)用程序中,并監(jiān)視應(yīng)用程序異常,如崩潰,斷言失敗,日志異常等,以發(fā)現(xiàn)可能的程序錯(cuò)誤。然而,采用上述方法測(cè)試時(shí),由于缺少一定的有效手段和度量指標(biāo),往往會(huì)產(chǎn)生大量相同效果的無(wú)效測(cè)試數(shù)據(jù),使整個(gè)測(cè)試過(guò)程耗時(shí)長(zhǎng),效果也不明顯。因此,提供一種更有效的應(yīng)用程序的測(cè)試方案是迫切需求的。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種應(yīng)用程序的模糊測(cè)試方法、裝置及系統(tǒng),可以將有效測(cè)試數(shù)據(jù)進(jìn)行存儲(chǔ),達(dá)到對(duì)測(cè)試數(shù)據(jù)的有效精簡(jiǎn)且不影響測(cè)試效果的目的。
本發(fā)明實(shí)施例提供一種應(yīng)用程序的模糊測(cè)試方法,所述方法包括以下步驟:
選擇與被測(cè)應(yīng)用程序?qū)?yīng)的數(shù)據(jù)生成規(guī)則,并根據(jù)所述數(shù)據(jù)生成規(guī)則與被測(cè)應(yīng)用程序的協(xié)議特征生成本次測(cè)試數(shù)據(jù);
根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試;
在所述根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試的測(cè)試過(guò)程中進(jìn)行代碼覆蓋率搜集;
判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相比是否存在有效變化;以及
若所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相對(duì)于所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率存在有效變化,則將所述本次測(cè)試數(shù)據(jù)寫(xiě)入基線庫(kù)。
本發(fā)明實(shí)施例還提供一種應(yīng)用程序的模糊測(cè)試裝置,所述裝置包括:
測(cè)試數(shù)據(jù)生成模塊,用于選擇與被測(cè)應(yīng)用程序?qū)?yīng)的數(shù)據(jù)生成規(guī)則,并根據(jù)所述數(shù)據(jù)生成規(guī)則與被測(cè)應(yīng)用程序的協(xié)議特征生成本次測(cè)試數(shù)據(jù);
測(cè)試執(zhí)行模塊,用于根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試;
覆蓋率搜集模塊,用于在所述根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試的測(cè)試過(guò)程中進(jìn)行代碼覆蓋率搜集;
第一判斷模塊,用于判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相比是否存在有效變化;以及
數(shù)據(jù)寫(xiě)入模塊,用于若所述第一判斷模塊判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相對(duì)于所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率存在有效變化,則將所述本次測(cè)試數(shù)據(jù)寫(xiě)入基線庫(kù)。
一種應(yīng)用程序的模糊測(cè)試系統(tǒng),所述系統(tǒng)包括:測(cè)試數(shù)據(jù)生成服務(wù)器、測(cè)試服務(wù)器、覆蓋率搜集服務(wù)器以及基線庫(kù);
所述測(cè)試數(shù)據(jù)生成服務(wù)器,用于選擇與被測(cè)應(yīng)用程序?qū)?yīng)的數(shù)據(jù)生成規(guī)則,并根據(jù)所述數(shù)據(jù)生成規(guī)則與被測(cè)應(yīng)用程序的協(xié)議特征生成本次測(cè)試數(shù)據(jù);
所述測(cè)試服務(wù)器,用于根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試;
所述覆蓋率搜集服務(wù)器,用于在所述測(cè)試服務(wù)器根據(jù)所述本次測(cè)試數(shù)據(jù) 對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試的測(cè)試過(guò)程中搜集代碼覆蓋率;還用于判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相比是否存在有效變化;以及
若所述覆蓋率搜集服務(wù)器判斷所述本次測(cè)試數(shù)據(jù)測(cè)試對(duì)應(yīng)的代碼覆蓋率相對(duì)于上次測(cè)試數(shù)據(jù)測(cè)試對(duì)應(yīng)的代碼覆蓋率存在有效變化,所述測(cè)試服務(wù)器還用于將所述本次測(cè)試數(shù)據(jù)寫(xiě)入所述基線庫(kù)。
本發(fā)明實(shí)施例所提供的應(yīng)用程序的模糊測(cè)試方法、裝置及系統(tǒng),通過(guò)在測(cè)試過(guò)程中,針對(duì)測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率進(jìn)行搜集,并將本次測(cè)試數(shù)據(jù)測(cè)試對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)測(cè)試對(duì)應(yīng)的代碼覆蓋率進(jìn)行比對(duì)以判斷本次測(cè)試數(shù)據(jù)是否有效,將有效的測(cè)試數(shù)據(jù)進(jìn)行存儲(chǔ),達(dá)到對(duì)測(cè)試數(shù)據(jù)的有效精簡(jiǎn)且不影響測(cè)試效果的目的。
為讓本發(fā)明的上述和其他目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附圖式,作詳細(xì)說(shuō)明如下。
附圖說(shuō)明
圖1示出了一種服務(wù)器在一個(gè)實(shí)施例中的結(jié)構(gòu)框圖。
圖2為第一實(shí)施例提供的應(yīng)用程序的模糊測(cè)試方法流程圖。
圖3為第二實(shí)施例提供的應(yīng)用程序的模糊測(cè)試方法流程圖。
圖4為第三實(shí)施例提供的應(yīng)用程序的模糊測(cè)試方法流程圖。
圖5為第四實(shí)施例提供的應(yīng)用程序的模糊測(cè)試裝置結(jié)構(gòu)框圖。
圖6為第五實(shí)施例提供的應(yīng)用程序的模糊測(cè)試裝置結(jié)構(gòu)框圖。
圖7為第六實(shí)施例提供的應(yīng)用程序的模糊測(cè)試裝置結(jié)構(gòu)框圖。
圖8為第七實(shí)施例提供的應(yīng)用程序的模糊測(cè)試系統(tǒng)示意圖。
具體實(shí)施方式
為更進(jìn)一步闡述本發(fā)明為實(shí)現(xiàn)預(yù)定發(fā)明目的所采取的技術(shù)手段及功效,以下結(jié)合附圖及較佳實(shí)施例,對(duì)依據(jù)本發(fā)明的具體實(shí)施方式、結(jié)構(gòu)、特征及其功效,詳細(xì)說(shuō)明如后。
本發(fā)明實(shí)施例所提供的應(yīng)用程序的模糊測(cè)試方法、裝置及系統(tǒng)可用于服務(wù)器。
圖1為一種服務(wù)器100的一個(gè)實(shí)施例的結(jié)構(gòu)框圖。如圖1所示,服務(wù)器100包括:存儲(chǔ)器102、處理器104以及網(wǎng)絡(luò)模塊106??梢岳斫?,圖1所示的結(jié)構(gòu)僅為示意,其并不對(duì)服務(wù)器100的結(jié)構(gòu)造成限定。例如,服務(wù)器100還可包括比圖1中所示更多或者更少的組件,或者具有與圖1所示不同的配置。
存儲(chǔ)器102可用于存儲(chǔ)軟件程序以及模塊,如本發(fā)明實(shí)施例中的應(yīng)用程序的模糊測(cè)試處理方法、裝置及系統(tǒng)對(duì)應(yīng)的程序指令/模塊,處理器104通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器102內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述的應(yīng)用程序的模糊測(cè)試方法。存儲(chǔ)器102可包括高速隨機(jī)存儲(chǔ)器,還可包括非易失性存儲(chǔ)器,如一個(gè)或者多個(gè)磁性存儲(chǔ)裝置、閃存、或者其他非易失性固態(tài)存儲(chǔ)器。在一些實(shí)例中,存儲(chǔ)器102可進(jìn)一步包括相對(duì)于處理器104遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過(guò)網(wǎng)絡(luò)連接至服務(wù)器100。上述網(wǎng)絡(luò)的實(shí)例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動(dòng)通信網(wǎng)及其組合。
網(wǎng)絡(luò)模塊106用于接收以及發(fā)送網(wǎng)絡(luò)信號(hào)。上述網(wǎng)絡(luò)信號(hào)可包括無(wú)線信號(hào)或者有線信號(hào)。在一個(gè)實(shí)例中,上述網(wǎng)絡(luò)信號(hào)為有線網(wǎng)絡(luò)信號(hào)。此時(shí),網(wǎng)絡(luò)模塊106可包括處理器、隨機(jī)存儲(chǔ)器、轉(zhuǎn)換器、晶體振蕩器等元件。
上述的軟件程序以及模塊包括:操作系統(tǒng)108、測(cè)試數(shù)據(jù)生成管理模塊110、測(cè)試執(zhí)行管理模塊112以及覆蓋率搜集管理模塊114。其中操作系統(tǒng)108例如可為L(zhǎng)INUX,UNIX,WINDOWS,其可包括各種用于管理系統(tǒng)任務(wù)(例如內(nèi)存管理、存儲(chǔ)設(shè)備控制、電源管理等)的軟件組件和/或驅(qū)動(dòng),并可與各種硬件或軟件組件相互通訊,從而提供其他軟件組件的運(yùn)行環(huán)境。測(cè)試數(shù)據(jù) 生成管理模塊110、測(cè)試執(zhí)行管理模塊112以及覆蓋率搜集管理模塊114運(yùn)行在操作系統(tǒng)108的基礎(chǔ)上,并通過(guò)操作系統(tǒng)108的網(wǎng)絡(luò)服務(wù)監(jiān)聽(tīng)來(lái)自網(wǎng)絡(luò)的請(qǐng)求,根據(jù)請(qǐng)求完成相應(yīng)的數(shù)據(jù)處理。
此外,在上述的實(shí)施例中,測(cè)試數(shù)據(jù)生成管理模塊110、測(cè)試執(zhí)行管理模塊112以及覆蓋率搜集管理模塊114是部署在同一服務(wù)器中,然后,其實(shí)施方式并不限于此。例如,還可將測(cè)試數(shù)據(jù)生成管理模塊110、測(cè)試執(zhí)行管理模塊112以及覆蓋率搜集管理模塊114分別部署在獨(dú)立的服務(wù)器中;或者將測(cè)試數(shù)據(jù)生成管理模塊110及測(cè)試執(zhí)行管理模塊112部署在同一服務(wù)器中,而覆蓋率搜集管理模塊114部署在另一服務(wù)器??傊?,本領(lǐng)域普通技術(shù)人員可以根據(jù)具體的需求以及硬件環(huán)境靈活部署。
第一實(shí)施例
本實(shí)施例提供一種應(yīng)用程序的模糊測(cè)試方法,本實(shí)施例的方法可用于圖1所示的服務(wù)器中,如圖2所示,本實(shí)施例的方法包括以下步驟:
步驟S101、選擇與被測(cè)應(yīng)用程序?qū)?yīng)的數(shù)據(jù)生成規(guī)則,并根據(jù)所述數(shù)據(jù)生成規(guī)則與被測(cè)應(yīng)用程序的協(xié)議特征生成本次測(cè)試數(shù)據(jù)。
所述測(cè)試數(shù)據(jù)可以理解為可應(yīng)用在所述被測(cè)應(yīng)用程序中,使所述被測(cè)應(yīng)用程序運(yùn)行的測(cè)試用例。所述數(shù)據(jù)生成規(guī)則可包括多種規(guī)則類型,例如所述多種規(guī)則類型可包括:分隔符、隨機(jī)數(shù)、二進(jìn)制數(shù)據(jù)量、字符型、bit型、byte型以及float型等,其中,分隔符包括如\r、\n、=、>、<等分隔符;隨機(jī)數(shù)包括各種長(zhǎng)度的隨機(jī)數(shù);二進(jìn)制數(shù)據(jù)量包括各種二進(jìn)制數(shù)據(jù)流的組合;字符型包括ascii、unicode在內(nèi)的各種字符型數(shù)據(jù)。可以知道的是,上述規(guī)則類型僅為列舉例子,并不包括全部的規(guī)則類型。所述測(cè)試數(shù)據(jù)由所述多種規(guī)則類型組成,例如,可以是用于測(cè)試的日期,指定長(zhǎng)度內(nèi)的字母數(shù)字組合字符串等。
進(jìn)一步地,所述數(shù)據(jù)生成規(guī)則是可擴(kuò)充的,在實(shí)際運(yùn)用中,技術(shù)人員可 根據(jù)需求進(jìn)行擴(kuò)充。
進(jìn)一步地,所述數(shù)據(jù)生成規(guī)則可以存儲(chǔ)在數(shù)據(jù)生成規(guī)則數(shù)據(jù)庫(kù)中,也可以直接存儲(chǔ)在服務(wù)器100中。
詳細(xì)地,步驟S101可包括:解析所述被測(cè)應(yīng)用程序的協(xié)議,在協(xié)議管理庫(kù)中查詢所述被測(cè)應(yīng)用程序的協(xié)議,生成所述協(xié)議對(duì)應(yīng)的描述文件;調(diào)度所述描述文件中對(duì)應(yīng)的所述數(shù)據(jù)生成規(guī)則;以及根據(jù)所述數(shù)據(jù)生成規(guī)則生成所述本次測(cè)試數(shù)據(jù),并將所述本次測(cè)試數(shù)據(jù)作為待用測(cè)試數(shù)據(jù)進(jìn)行存儲(chǔ)。
所述協(xié)議包括但不限于:HTTP協(xié)議TCP/IP協(xié)議、Rpc協(xié)議、SOAP協(xié)議等。具體地,可使用服務(wù)器100中的協(xié)議適配器與所述被測(cè)應(yīng)用程序?qū)?yīng)的協(xié)議的有效調(diào)用。進(jìn)一步地,服務(wù)器100可提供可供擴(kuò)展的接口,可以定義新的協(xié)議并開(kāi)發(fā)新的協(xié)議適配器,但是應(yīng)該遵循以下協(xié)議規(guī)范,其中擴(kuò)展協(xié)議包括:協(xié)議名稱:所述協(xié)議的名稱;訪問(wèn)方式:所述協(xié)議的服務(wù)地址或者訪問(wèn)地址;訪問(wèn)參數(shù):訪問(wèn)所述協(xié)議需要提供的請(qǐng)求參數(shù);等等。
進(jìn)一步地,通過(guò)服務(wù)器100中的協(xié)議解析器,調(diào)用所述被測(cè)應(yīng)用程序及所述被測(cè)應(yīng)用程序?qū)?yīng)的協(xié)議,解析出所述被測(cè)應(yīng)用程序的協(xié)議以及被測(cè)接口和輸入?yún)?shù),并將解析出來(lái)的所述被測(cè)應(yīng)用程序的協(xié)議以及被測(cè)接口和輸入?yún)?shù)轉(zhuǎn)存為服務(wù)器100可處理的所述協(xié)議對(duì)應(yīng)的描述文件,所述描述文件中包括所述協(xié)議下的數(shù)據(jù)生成規(guī)則。在一個(gè)實(shí)例中,所述描述文件可以為如下代碼:
1 import sys
2 ……
3 s_initialize("HTTP REQUEST")
4 s_static("GET http://www.****.com/tws/apiextusercash/CashOut?")
5 s_static("bankId=")
6 s_no_appoint_datatype("102",name="bankId")
7 s_static("&")
8 s_static("cashOut=")
9 s_no_appoint_datatype("12100",name="cashOut")
……
上面的代碼示例展示了一份基于HTTP協(xié)議的協(xié)議描述文件,第三行初始化一個(gè)http的請(qǐng)求;第四行展示該http請(qǐng)求的類型(get)以及請(qǐng)求的url;第五行定義第一個(gè)參數(shù)bankId;第六行定義所述參數(shù)bankId的測(cè)試數(shù)據(jù)生成規(guī)則,本實(shí)例中的測(cè)試數(shù)據(jù)生成規(guī)則為s_no_appoint_datatype所定義內(nèi)容。測(cè)試數(shù)據(jù)生成過(guò)程中,若不特別指定任何規(guī)則,則將所有的規(guī)則遍歷一遍,生成所有的可能的測(cè)試數(shù)據(jù)??梢灾赖氖?,若不特別指定任何規(guī)則,僅根據(jù)數(shù)據(jù)生成規(guī)則的規(guī)則類型生成所有可能的測(cè)試數(shù)據(jù),生成的測(cè)試數(shù)據(jù)量將會(huì)非常大。
詳細(xì)地,通過(guò)一個(gè)服務(wù)器100中的規(guī)則調(diào)度器調(diào)度所述描述文件中對(duì)應(yīng)的所述數(shù)據(jù)生成規(guī)則。例如上述描述文件中的數(shù)據(jù)生成規(guī)則,包括一個(gè)由字母組成的名稱字符串以及由數(shù)字組成的字符串。進(jìn)一步地,將生成的測(cè)試數(shù)據(jù)進(jìn)行存儲(chǔ)。在一個(gè)實(shí)例中,所生成的測(cè)試數(shù)據(jù)的存儲(chǔ)內(nèi)容包括:用例編號(hào);用例數(shù)據(jù);及所屬測(cè)試用例數(shù)據(jù)生成規(guī)則。
步驟S102、根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試。
詳細(xì)地,步驟S102可包括:將所述本次測(cè)試數(shù)據(jù)注入所述被測(cè)應(yīng)用程序中;在所述根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試時(shí),對(duì)所述測(cè)試過(guò)程進(jìn)行異常監(jiān)控;輸出根據(jù)所述本次測(cè)試數(shù)據(jù)得到的測(cè)試報(bào)告。
具體地,所述被測(cè)應(yīng)用程序,可以是存儲(chǔ)在不同于服務(wù)器100的另外的服務(wù)器,可以是存儲(chǔ)在電子終端中的應(yīng)用程序,本申請(qǐng)的實(shí)施例中并不限制所述被測(cè)應(yīng)用程序與測(cè)試模塊的存儲(chǔ)終端,當(dāng)然,所述被測(cè)應(yīng)用程序也可以存儲(chǔ)在服務(wù)器100中的待測(cè)應(yīng)用程序。
具體地,在測(cè)試時(shí),還包括監(jiān)控所述被測(cè)應(yīng)用程序的反應(yīng),并記錄本次測(cè)試狀況。在一個(gè)實(shí)例中,主要監(jiān)控內(nèi)容包括:core dump;用例執(zhí)行有無(wú)返回;日志異常。所述core dump又叫做核心轉(zhuǎn)儲(chǔ),當(dāng)程序運(yùn)行過(guò)程中發(fā)生異常, 程序異常退出時(shí),由操作系統(tǒng)把程序當(dāng)前的內(nèi)存狀況存儲(chǔ)在一個(gè)core文件中。
具體地,所述測(cè)試報(bào)告包括:上述異常監(jiān)控監(jiān)測(cè)到的問(wèn)題,測(cè)試用例匯總數(shù)據(jù)等。詳細(xì)地,所述異常監(jiān)控監(jiān)測(cè)到的問(wèn)題,包括相應(yīng)問(wèn)題以及引起所述相應(yīng)問(wèn)題的對(duì)應(yīng)測(cè)試數(shù)據(jù)。詳細(xì)地,所述測(cè)試用例匯總數(shù)據(jù)為前面所有針對(duì)所述被測(cè)應(yīng)用程序的測(cè)試產(chǎn)生的數(shù)據(jù)。
步驟S103、在所述根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試的測(cè)試過(guò)程中進(jìn)行代碼覆蓋率搜集。
具體地,步驟S103可包括:在所述測(cè)試之前,對(duì)被測(cè)應(yīng)用程序進(jìn)行插樁;根據(jù)所述本次測(cè)試數(shù)據(jù)完成測(cè)試之后,搜集所述代碼覆蓋率。
詳細(xì)地,所述插樁是在保證所述被測(cè)應(yīng)用程序原有邏輯完整性的基礎(chǔ)上在程序中插入一些探針或“探測(cè)儀”,通過(guò)探針的執(zhí)行并拋出程序運(yùn)行的特征數(shù)據(jù),通過(guò)對(duì)所述特征數(shù)據(jù)的分析,可以獲得程序的控制流和數(shù)據(jù)流信息,進(jìn)而得到邏輯覆蓋等動(dòng)態(tài)信息,從而實(shí)現(xiàn)測(cè)試目的的方法。所述搜集代碼覆蓋率,為增加本次測(cè)試后所述被測(cè)應(yīng)用程序的代碼覆蓋率的總值。例如,若本次測(cè)試為第四次測(cè)試所述被測(cè)應(yīng)用程序。所述本次測(cè)試所對(duì)應(yīng)的代碼覆蓋率為四次全部測(cè)試后的總的代碼覆蓋率,而所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)代碼覆蓋率則為前三次全部測(cè)試后的總的代碼覆蓋率。所述分析本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)代碼覆蓋率的差距,則可以理解為,增加本次測(cè)試后代碼覆蓋率產(chǎn)生的變化。
步驟S104、判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相比是否存在有效變化。
在本步驟中,分析本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)代碼覆蓋率的差距,若存在差距則表示所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率存在有效變化,若不存在差距則表示所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率不存在有效變化。所述代碼覆蓋率的差距為兩次測(cè)試得到的代碼覆蓋率的差值。
詳細(xì)地,若本次測(cè)試為所述被測(cè)應(yīng)用程序第一次被測(cè)試,則所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率默認(rèn)為零,本次測(cè)試直接搜集所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率,若所述代碼覆蓋率為零或者小于某個(gè)指定的極限值,則表示根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序的源代碼中的代碼測(cè)試的比例為零,所述本次測(cè)試數(shù)據(jù)為無(wú)效測(cè)試數(shù)據(jù)。若本次測(cè)試不是第一次測(cè)試所述被測(cè)應(yīng)用程序,則統(tǒng)計(jì)本次測(cè)試的代碼覆蓋率,并與上次測(cè)試所述被測(cè)應(yīng)用程序的代碼覆蓋率進(jìn)行比較,若兩次覆蓋率的差值為零,或者小于某個(gè)指定值,則視本次測(cè)試數(shù)據(jù)為無(wú)效測(cè)試數(shù)據(jù)。
步驟S105、若所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相對(duì)于所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率存在有效變化,則將所述本次測(cè)試數(shù)據(jù)寫(xiě)入基線庫(kù)。
詳細(xì)地,若所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相對(duì)于上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率存在有效變化,也就是說(shuō),使用本次測(cè)試后,若所述代碼覆蓋率有增加,則表示所述本次測(cè)試數(shù)據(jù)為有效測(cè)試數(shù)據(jù)。
進(jìn)一步地,將有效測(cè)試數(shù)據(jù)存儲(chǔ)至所述基線庫(kù)中。詳細(xì)地,將所述有效測(cè)試數(shù)據(jù)與對(duì)應(yīng)的被測(cè)應(yīng)用程序進(jìn)行關(guān)聯(lián)以數(shù)據(jù)文件的形式進(jìn)行存儲(chǔ)。進(jìn)一步地,下次測(cè)試所述被測(cè)應(yīng)用程序時(shí),在所述應(yīng)用程序未更新的情況下,可直接調(diào)用所述基線庫(kù)中的測(cè)試數(shù)據(jù)進(jìn)行測(cè)試。
詳細(xì)地,基線庫(kù)中存儲(chǔ)的測(cè)試數(shù)據(jù)也可以當(dāng)成是所述被測(cè)應(yīng)用程序的一個(gè)特殊的測(cè)試數(shù)據(jù)生成規(guī)則。
根據(jù)本實(shí)施例的方法,通過(guò)對(duì)應(yīng)用程序測(cè)試時(shí),能夠?qū)Σ煌瑴y(cè)試數(shù)據(jù),測(cè)試的代碼覆蓋率的變化進(jìn)行統(tǒng)計(jì),因此來(lái)判斷對(duì)應(yīng)的測(cè)試數(shù)據(jù)是否對(duì)被測(cè)的應(yīng)用程序有效,有效的測(cè)試數(shù)據(jù)進(jìn)行存儲(chǔ),無(wú)效的測(cè)試數(shù)據(jù)丟棄,以此來(lái)達(dá)到對(duì)測(cè)試數(shù)據(jù)的有效精簡(jiǎn)且不影響測(cè)試效果的目的。
第二實(shí)施例
本實(shí)施例提供一種應(yīng)用程序的模糊測(cè)試方法,本實(shí)施例的方法可用于圖 1所示的服務(wù)器中,本實(shí)施例的方法與第一實(shí)施例類似,如圖3所示,所述方法包括:
步驟S101、選擇與被測(cè)應(yīng)用程序?qū)?yīng)的數(shù)據(jù)生成規(guī)則,并根據(jù)所述數(shù)據(jù)生成規(guī)則與被測(cè)應(yīng)用程序的協(xié)議特征生成本次測(cè)試數(shù)據(jù)。
步驟S102、根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試。
步驟S103、在所述根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試的測(cè)試過(guò)程中進(jìn)行代碼覆蓋率搜集。
步驟S104、判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相比是否存在有效變化。
其中,上述步驟S101至步驟S104可參考第一實(shí)施例,在此不再贅述。
步驟S201、判斷所述本次測(cè)試數(shù)據(jù)與所述上次測(cè)試數(shù)據(jù)是否來(lái)自同一數(shù)據(jù)生成規(guī)則。
若步驟S104判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相對(duì)于上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率無(wú)有效變化,則執(zhí)行步驟S201。
在本步驟中,若所述本次測(cè)試數(shù)據(jù)與所述上次測(cè)試數(shù)據(jù)來(lái)自同一數(shù)據(jù)生成規(guī)則,則所述被測(cè)應(yīng)用程序的測(cè)試跳過(guò)所述本次測(cè)試數(shù)據(jù)與所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)生成規(guī)則下生成的所有測(cè)試數(shù)據(jù)。
在一個(gè)實(shí)例中,所述數(shù)據(jù)生成規(guī)則包括生成兩個(gè)字符串,其一為三位數(shù)的數(shù)字組成的字符串;其二為若干字母組成的字符串。若上述規(guī)則下生成的其一三位數(shù)組成的數(shù)字,前后兩次的測(cè)試數(shù)據(jù)均為三位數(shù)字符串和字母字符串組成的測(cè)試數(shù)據(jù),且兩次測(cè)試得到的代碼覆蓋率沒(méi)有變化,則跳過(guò)在所述數(shù)據(jù)生成規(guī)則下生成的所有測(cè)試數(shù)據(jù)的測(cè)試。
進(jìn)一步地,也可以預(yù)設(shè)跳過(guò)指定數(shù)量的所述數(shù)據(jù)生成規(guī)則下生成的測(cè)試數(shù)據(jù)的執(zhí)行步驟。例如,指定上述規(guī)則下生成的十個(gè)測(cè)試數(shù)據(jù)或測(cè)試用例。從本次測(cè)試數(shù)據(jù)測(cè)試后,使用后接的第十一個(gè)測(cè)試用例進(jìn)行下次測(cè)試。
步驟S202、刪除所述本次測(cè)試數(shù)據(jù)。
在本步驟中,若判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相比不存在有效變化,且進(jìn)一步判斷所述本次測(cè)試數(shù)據(jù)與所述上次測(cè)試數(shù)據(jù)來(lái)自同一數(shù)據(jù)生成規(guī)則,則刪除先前在步驟S101(請(qǐng)參考第一實(shí)施例)中存儲(chǔ)的所述本次測(cè)試數(shù)據(jù)。
根據(jù)本實(shí)施例的方法,通過(guò)比較兩次測(cè)試代碼覆蓋率來(lái)判斷測(cè)試數(shù)據(jù)對(duì)于被測(cè)應(yīng)用程序是否有效,若判斷測(cè)試數(shù)據(jù)對(duì)于被測(cè)應(yīng)用程序無(wú)效,且前后兩次測(cè)試來(lái)自于同一數(shù)據(jù)生成規(guī)則,則所述被測(cè)應(yīng)用程序的測(cè)試跳過(guò)所述本次測(cè)試數(shù)據(jù)與所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)生成規(guī)則下生成的所有測(cè)試數(shù)據(jù),如此可以有效提高測(cè)試速度,并且進(jìn)一步將無(wú)效測(cè)試用例刪除,能夠提高下次測(cè)試所述被測(cè)應(yīng)用程序時(shí)的效率。
第三實(shí)施例
本實(shí)施例提供一種應(yīng)用程序的模糊測(cè)試方法,本實(shí)施例的方法可用于圖1所示的服務(wù)器中,本實(shí)施例的方法與第一實(shí)施例類似,如圖4所示,所述方法包括:
步驟S101、選擇與被測(cè)應(yīng)用程序?qū)?yīng)的數(shù)據(jù)生成規(guī)則,并根據(jù)所述數(shù)據(jù)生成規(guī)則與被測(cè)應(yīng)用程序的協(xié)議特征生成本次測(cè)試數(shù)據(jù)。
步驟S102、根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試。
步驟S103、在所述根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試的測(cè)試過(guò)程中進(jìn)行代碼覆蓋率搜集。
步驟S104、判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相比是否存在有效變化。
步驟S105、若所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相對(duì)于所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率存在有效變化,則將所述本次測(cè)試數(shù)據(jù)寫(xiě)入基線庫(kù)。
其中,上述步驟S101至步驟S105可參考第一實(shí)施例,在此不再贅述。
步驟S301、若檢測(cè)到所述被測(cè)應(yīng)用程序的源代碼有更新,則對(duì)所述被測(cè) 應(yīng)用程序的源代碼變更的部分所對(duì)應(yīng)的接口建立所述被測(cè)應(yīng)用程序?qū)?yīng)的基線庫(kù)。
舉例說(shuō)明,若所述被測(cè)應(yīng)用程序增加了新的時(shí)間識(shí)別功能,則對(duì)接收時(shí)間的對(duì)應(yīng)接口,或者所述被測(cè)應(yīng)用程序顯示界面中接收時(shí)間輸入的窗口建立所述被測(cè)應(yīng)用程序?qū)?yīng)的基線庫(kù)。
詳細(xì)地,根據(jù)變更的部分所對(duì)應(yīng)的接口對(duì)應(yīng)的協(xié)議生成對(duì)應(yīng)的描述文件,所述描述文件中包括對(duì)應(yīng)的數(shù)據(jù)生成規(guī)則。根據(jù)所述數(shù)據(jù)生成規(guī)則生成對(duì)應(yīng)變更部分的測(cè)試數(shù)據(jù),根據(jù)所述測(cè)試數(shù)據(jù)對(duì)變更部分進(jìn)行測(cè)試。將所述有效測(cè)試數(shù)據(jù)與對(duì)應(yīng)的被測(cè)應(yīng)用程序進(jìn)行關(guān)聯(lián)以數(shù)據(jù)文件的形式存儲(chǔ)至所述基線庫(kù),從而實(shí)現(xiàn)所述基線庫(kù)的建立。
此外,若所述被測(cè)應(yīng)用程序未更新,且所述基線庫(kù)中已存儲(chǔ)所述被測(cè)應(yīng)用程序的測(cè)試數(shù)據(jù),則可直接調(diào)用所述測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試。
根據(jù)本實(shí)施例的方法,在所述被測(cè)應(yīng)用程序的源代碼有更新時(shí),重新建立基線庫(kù)中的數(shù)據(jù),能夠在測(cè)試時(shí)免于做一些無(wú)用的測(cè)試,從而避免浪費(fèi)測(cè)試時(shí)間,也提高測(cè)試的準(zhǔn)確性。
第四實(shí)施例
本實(shí)施例提供一種應(yīng)用程序的模糊測(cè)裝置,本實(shí)施例的裝置可用于圖1所示的服務(wù)器中,如圖5所示,所述裝置包括:測(cè)試數(shù)據(jù)生成模塊401、測(cè)試執(zhí)行模塊402、覆蓋率搜集模塊403、第一判斷模塊404以及數(shù)據(jù)寫(xiě)入模塊405。
測(cè)試數(shù)據(jù)生成模塊401,用于選擇與被測(cè)應(yīng)用程序?qū)?yīng)的數(shù)據(jù)生成規(guī)則,并根據(jù)所述數(shù)據(jù)生成規(guī)則與被測(cè)應(yīng)用程序的協(xié)議特征生成本次測(cè)試數(shù)據(jù)。
測(cè)試數(shù)據(jù)生成模塊401可包括:協(xié)議解析單元、調(diào)度單元、數(shù)據(jù)生成單 元以及存儲(chǔ)單元。
協(xié)議解析單元,用于解析所述被測(cè)應(yīng)用程序的協(xié)議,在協(xié)議管理庫(kù)中查詢所述被測(cè)應(yīng)用程序的協(xié)議,生成所述協(xié)議對(duì)應(yīng)的描述文件。
調(diào)度單元,用于調(diào)度所述描述文件中對(duì)應(yīng)的所述數(shù)據(jù)生成規(guī)則。
數(shù)據(jù)生成單元,用于根據(jù)所述數(shù)據(jù)生成規(guī)則生成所述本次測(cè)試數(shù)據(jù)。
存儲(chǔ)單元,用于將所述本次測(cè)試數(shù)據(jù)作為待用測(cè)試數(shù)據(jù)進(jìn)行存儲(chǔ)。
測(cè)試執(zhí)行模塊402,用于根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試。
測(cè)試執(zhí)行模塊402可包括:測(cè)試數(shù)據(jù)注入單元、輸出報(bào)告單元以及異常監(jiān)控單元。
測(cè)試數(shù)據(jù)注入單元,用于將所述本次測(cè)試數(shù)據(jù)注入所述被測(cè)應(yīng)用程序中。
輸出報(bào)告單元,用于輸出根據(jù)所述本次測(cè)試數(shù)據(jù)得到的測(cè)試報(bào)告。
異常監(jiān)控單元,用于在根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試時(shí),對(duì)所述測(cè)試過(guò)程進(jìn)行異常監(jiān)控。
覆蓋率搜集模塊403,用于在所述根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試的測(cè)試過(guò)程中進(jìn)行代碼覆蓋率搜集。
覆蓋率搜集模塊403可包括:插樁單元以及搜集覆蓋率單元。
插樁單元,用于在所述測(cè)試之前,對(duì)所述被測(cè)應(yīng)用程序進(jìn)行插樁;
搜集覆蓋率單元,用于根據(jù)所述本次測(cè)試數(shù)據(jù)執(zhí)行完成之后,搜集所述代碼覆蓋率。
第一判斷模塊404,用于判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)代碼覆蓋率相比是否存在有效變化。
第一判斷模塊404還用于分析所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率的差距,若存在差距則表示所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率存在有效變 化,若不存在差距則表示所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率不存在有效變化。
數(shù)據(jù)寫(xiě)入模塊405,用于若第一判斷模塊404判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相對(duì)于所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)代碼覆蓋率存在有效變化,則將所述本次測(cè)試數(shù)據(jù)寫(xiě)入基線庫(kù)。
關(guān)于本實(shí)施例的其它細(xì)節(jié),可進(jìn)一步參考第一實(shí)施例,在此不再贅述。
根據(jù)本實(shí)施例的裝置,通過(guò)對(duì)應(yīng)用程序測(cè)試時(shí),能夠?qū)Σ煌瑴y(cè)試數(shù)據(jù),測(cè)試的代碼覆蓋率的變化進(jìn)行統(tǒng)計(jì),因此來(lái)判斷對(duì)應(yīng)的測(cè)試數(shù)據(jù)是否對(duì)被測(cè)的應(yīng)用程序有效,有效的測(cè)試數(shù)據(jù)進(jìn)行存儲(chǔ),無(wú)效的測(cè)試數(shù)據(jù)丟棄,以此來(lái)達(dá)到對(duì)測(cè)試數(shù)據(jù)的有效精簡(jiǎn)且不影響測(cè)試效果的目的。
第五實(shí)施例
本實(shí)施例提供一種應(yīng)用程序的模糊測(cè)裝置,本實(shí)施例的裝置可用于圖1所示的服務(wù)器中,本實(shí)施例與第四實(shí)施例類似,其不同之處在于,如圖6所示,若第一判斷模塊404判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率相對(duì)于所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)代碼覆蓋率無(wú)有效變化,則本實(shí)施例的裝置還包括:
第二判斷模塊501,用于判斷所述本次測(cè)試數(shù)據(jù)與所述上次測(cè)試數(shù)據(jù)是否來(lái)自同一數(shù)據(jù)生成規(guī)則;
若第二判斷模塊501判斷為本次測(cè)試數(shù)據(jù)與所述上次測(cè)試數(shù)據(jù)來(lái)自同一數(shù)據(jù)生成規(guī)則,則測(cè)試執(zhí)行模塊402,還用于使所述被測(cè)應(yīng)用程序的測(cè)試跳過(guò)所述本次測(cè)試數(shù)據(jù)與所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)生成規(guī)則下生成的所有測(cè)試數(shù)據(jù)。
刪除模塊502,用于刪除所述基線庫(kù)中存儲(chǔ)的所述被測(cè)應(yīng)用程序?qū)?yīng)的上述被選擇的所述對(duì)應(yīng)數(shù)據(jù)生成規(guī)則下生成的所有測(cè)試數(shù)據(jù)。
關(guān)于本實(shí)施例的其它細(xì)節(jié),可進(jìn)一步參考第二實(shí)施例,在此不再贅述。
根據(jù)本實(shí)施例的裝置,通過(guò)比較兩次測(cè)試代碼覆蓋率來(lái)判斷測(cè)試數(shù)據(jù)對(duì) 于被測(cè)應(yīng)用程序是否有效,若判斷測(cè)試數(shù)據(jù)對(duì)于被測(cè)應(yīng)用程序無(wú)效,且前后兩次測(cè)試來(lái)自于同一數(shù)據(jù)生成規(guī)則,則所述被測(cè)應(yīng)用程序的測(cè)試跳過(guò)所述本次測(cè)試數(shù)據(jù)與所述上次測(cè)試數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)生成規(guī)則下生成的所有測(cè)試數(shù)據(jù),如此可以有效提高測(cè)試速度,并且進(jìn)一步將無(wú)效測(cè)試用例刪除,能夠提高下次測(cè)試所述被測(cè)應(yīng)用程序時(shí)的效率。
第六實(shí)施例
本實(shí)施例提供一種應(yīng)用程序的模糊測(cè)裝置,本實(shí)施例的裝置可用于圖1所示的服務(wù)器中,本實(shí)施例與第四實(shí)施例類似,其不同之處在于,如圖7所示,所述裝置還包括:
基線庫(kù)重建模塊601,用于若檢測(cè)到所述被測(cè)應(yīng)用程序的源代碼有更新,則對(duì)所述被測(cè)應(yīng)用程序的源代碼變更的部分所對(duì)應(yīng)的接口建立所述被測(cè)應(yīng)用程序?qū)?yīng)的基線庫(kù)。
關(guān)于本實(shí)施例的其它細(xì)節(jié),可進(jìn)一步參考第三實(shí)施例,在此不再贅述。
根據(jù)本實(shí)施例的裝置,在所述被測(cè)應(yīng)用程序的源代碼有更新時(shí),重新簡(jiǎn)歷基線庫(kù)中的數(shù)據(jù),能夠在測(cè)試時(shí)免于做一些無(wú)用的測(cè)試,從而避免浪費(fèi)測(cè)試時(shí)間,也提高測(cè)試的準(zhǔn)確性。
第七實(shí)施例
本實(shí)施例提供一種應(yīng)用程序的模糊測(cè)試系統(tǒng),如圖8所示,所述系統(tǒng)包括:測(cè)試數(shù)據(jù)生成服務(wù)器11、測(cè)試服務(wù)器12、覆蓋率搜集服務(wù)器13以及基線庫(kù)200;
測(cè)試數(shù)據(jù)生成服務(wù)器11,用于選擇與被測(cè)應(yīng)用程序?qū)?yīng)的數(shù)據(jù)生成規(guī)則,并根據(jù)所述數(shù)據(jù)生成規(guī)則與被測(cè)應(yīng)用程序的協(xié)議特征生成本次測(cè)試數(shù)據(jù)。
測(cè)試服務(wù)器12,用于根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè) 試。
覆蓋率搜集服務(wù)器13,用于在測(cè)試服務(wù)器12根據(jù)所述本次測(cè)試數(shù)據(jù)對(duì)所述被測(cè)應(yīng)用程序進(jìn)行測(cè)試的測(cè)試過(guò)程中搜集代碼覆蓋率;還用于判斷所述本次測(cè)試數(shù)據(jù)對(duì)應(yīng)的代碼覆蓋率與上次測(cè)試數(shù)據(jù)對(duì)應(yīng)代碼覆蓋率相比是否存在有效變化。
若覆蓋率搜集服務(wù)器13判斷所述本次測(cè)試數(shù)據(jù)測(cè)試對(duì)應(yīng)的代碼覆蓋率相對(duì)于上次測(cè)試數(shù)據(jù)測(cè)試對(duì)應(yīng)的代碼覆蓋率存在有效變化,測(cè)試服務(wù)器12還用于將所述本次測(cè)試數(shù)據(jù)寫(xiě)入基線庫(kù)200。
關(guān)于本實(shí)施例的其它細(xì)節(jié),可進(jìn)一步參考上述方法實(shí)施例,在此不再贅述。
根據(jù)本實(shí)施例的系統(tǒng),通過(guò)對(duì)應(yīng)用程序測(cè)試時(shí),能夠?qū)Σ煌瑴y(cè)試數(shù)據(jù),測(cè)試的代碼覆蓋率的變化進(jìn)行統(tǒng)計(jì),因此來(lái)判斷對(duì)應(yīng)的測(cè)試數(shù)據(jù)是否對(duì)被測(cè)的應(yīng)用程序有效,有效的測(cè)試數(shù)據(jù)進(jìn)行存儲(chǔ),無(wú)效的測(cè)試數(shù)據(jù)丟棄,以此來(lái)達(dá)到對(duì)測(cè)試數(shù)據(jù)的有效精簡(jiǎn)且不影響測(cè)試效果的目的。
此外,本發(fā)明實(shí)施例還提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其內(nèi)存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令,上述的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如為非易失性存儲(chǔ)器例如光盤、硬盤、或者閃存。上述的計(jì)算機(jī)可執(zhí)行指令用于讓計(jì)算機(jī)或者類似的運(yùn)算裝置完成上述的應(yīng)用程序的模糊測(cè)試方法中的各種操作。
需要說(shuō)明的是,本說(shuō)明書(shū)中的各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。對(duì)于裝置類實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。
需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者 暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者裝置不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者裝置所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括要素的過(guò)程、方法、物品或者裝置中還存在另外的相同要素。
以上該,僅是本發(fā)明的較佳實(shí)施例而已,并非對(duì)本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實(shí)施例揭露如上,然而并非用以限定本發(fā)明,任何熟悉本專業(yè)的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍內(nèi),當(dāng)可利用上述揭示的技術(shù)內(nèi)容做出些許更動(dòng)或修飾為等同變化的等效實(shí)施例,但凡是未脫離本發(fā)明技術(shù)方案內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所作的任何簡(jiǎn)單修改、等同變化與修飾,均仍屬于本發(fā)明技術(shù)方案的范圍內(nèi)。