本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種判斷應(yīng)用程序測試覆蓋范圍的方法及其設(shè)備。
背景技術(shù):
現(xiàn)如今,各種終端應(yīng)用影響著人們的日常生活,為用戶提供便利,因此對于終端應(yīng)用的程序進(jìn)行測試尤為重要。目前對于程序進(jìn)行測試的過程是通過人為手動進(jìn)行測試,然而人為手動測試容易造成對某段代碼的重復(fù)測試或者所進(jìn)行的測試未覆蓋到某段代碼,降低了對程序的測試效果以及測試效率,進(jìn)而對后續(xù)的程序開發(fā)造成了影響。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種判斷應(yīng)用程序測試覆蓋范圍的方法及程序測試設(shè)備,可以提升對程序的測試效果以及測試效率。
本發(fā)明實(shí)施例第一方面提供了一種判斷應(yīng)用程序測試覆蓋范圍的方法,可包括:
當(dāng)對目標(biāo)程序進(jìn)行測試時(shí),與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系;
基于所述鏈接關(guān)系,獲取所述目標(biāo)函數(shù)的起始位置信息;
按照所述起始位置信息對所述目標(biāo)程序進(jìn)行插樁測試。
本發(fā)明實(shí)施例第二方面提供了一種程序測試設(shè)備,可包括:
關(guān)系建立單元,用于當(dāng)對目標(biāo)程序進(jìn)行測試時(shí),與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系;
信息獲取單元,用于基于所述鏈接關(guān)系,獲取所述目標(biāo)函數(shù)的起始位置信息;
程序測試單元,用于按照所述起始位置信息對所述目標(biāo)程序進(jìn)行插樁測試。
在本發(fā)明實(shí)施例中,當(dāng)需要對目標(biāo)程序進(jìn)行測試時(shí),通過與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系,可以基于該鏈接關(guān)系獲取目標(biāo)函數(shù)的起始位置信 息,最終按照起始位置信息對目標(biāo)程序進(jìn)行插樁測試。實(shí)現(xiàn)了對目標(biāo)程序的自動測試,通過基于鏈接關(guān)系獲取目標(biāo)函數(shù)的起始位置信息,保證了對程序進(jìn)行覆蓋測試的全面性,避免了對后續(xù)的程序開發(fā)的影響,提升了對程序的測試效果和測試效率。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例提供的一種判斷應(yīng)用程序測試覆蓋范圍的方法的流程示意圖;
圖2是本發(fā)明實(shí)施例提供的另一種判斷應(yīng)用程序測試覆蓋范圍的方法的流程示意圖;
圖3是本發(fā)明實(shí)施例提供的一種程序測試設(shè)備的結(jié)構(gòu)示意圖;
圖4是本發(fā)明實(shí)施例提供的信息獲取單元的結(jié)構(gòu)示意圖;
圖5是本發(fā)明實(shí)施例提供的另一種程序測試設(shè)備的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實(shí)施例提供的又一種程序測試設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明實(shí)施例提供的判斷應(yīng)用程序測試覆蓋范圍的方法可以應(yīng)用于對系統(tǒng)平臺的應(yīng)用程序進(jìn)行插樁測試的場景,例如:對于針對IOS系統(tǒng)平臺、Android系統(tǒng)平臺等,當(dāng)對目標(biāo)程序進(jìn)行測試時(shí),程序測試設(shè)備可以與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系,基于所述鏈接關(guān)系,所述程序測試設(shè)備獲取所述目標(biāo)函數(shù)的起始位置信息,所述程序測試設(shè)備按照所述起始位置信息對所述目標(biāo)程序進(jìn)行插樁測試的場景等。實(shí)現(xiàn)了對目標(biāo)程序的自動測試,通過基于鏈接關(guān) 系獲取目標(biāo)函數(shù)的起始位置信息,保證了對程序進(jìn)行覆蓋測試的全面性,避免了對后續(xù)的程序開發(fā)的影響,提升了對程序的測試效果和測試效率。
本發(fā)明實(shí)施例涉及的程序測試設(shè)備可以包括:平板電腦、智能手機(jī)、筆記本電腦、掌上電腦、個(gè)人計(jì)算機(jī)以及移動互聯(lián)網(wǎng)設(shè)備(MID)等具備程序處理功能的終端設(shè)備。
下面將結(jié)合附圖1和附圖2,對本發(fā)明實(shí)施例提供的判斷應(yīng)用程序測試覆蓋范圍的方法進(jìn)行詳細(xì)介紹。
請參見圖1,為本發(fā)明實(shí)施例提供了一種判斷應(yīng)用程序測試覆蓋范圍的方法的流程示意圖。如圖1所示,本發(fā)明實(shí)施例的所述方法可以包括以下步驟S101-步驟S103。
S101,當(dāng)對目標(biāo)程序進(jìn)行測試時(shí),與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系;
具體的,當(dāng)需要對目標(biāo)程序進(jìn)行測試時(shí),程序測試設(shè)備可以與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系,優(yōu)選的,所述程序測試設(shè)備可以創(chuàng)建一個(gè)前端進(jìn)程,該前端進(jìn)程優(yōu)選為對目標(biāo)程序進(jìn)行輸入的接口,測試人員可以通過該前端進(jìn)程將需要測試的目標(biāo)程序進(jìn)行輸入,所述程序測試設(shè)備可以獲取所述目標(biāo)程序,并與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系。例如:所述程序測試設(shè)備可以調(diào)用Clang工具建立一個(gè)前端進(jìn)程,Clang是一個(gè)C語言、C++、Objective-C、Objective-C++語言的輕量級編譯器,并通過Clang工具與所述目標(biāo)函數(shù)建立鏈接關(guān)系。
可以理解的是,所述目標(biāo)程序可以包含一個(gè)或多個(gè)函數(shù),因此所述目標(biāo)函數(shù)可以為一個(gè)或多個(gè)函數(shù)。對于多個(gè)函數(shù),所述程序測試設(shè)備需要分別與所述多個(gè)函數(shù)建立鏈接關(guān)系。
通過與目標(biāo)函數(shù)建立鏈接關(guān)系,可以便于實(shí)現(xiàn)后續(xù)對目標(biāo)函數(shù)進(jìn)行預(yù)處理、編譯處理等過程,提高了對目標(biāo)程序進(jìn)行測試的準(zhǔn)確性。
S102,基于所述鏈接關(guān)系,獲取所述目標(biāo)函數(shù)的起始位置信息;
具體的,基于所述鏈接關(guān)系,所述程序測試設(shè)備可以獲取所述目標(biāo)函數(shù)的起始位置信息,優(yōu)選的,所述程序測試設(shè)備可以基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)處理,并在預(yù)處理后生成所述目標(biāo)函數(shù)對應(yīng)的抽象語法樹(Abstract Syntax Tree,AST),所述預(yù)處理可以包括預(yù)編譯過程以及翻譯過程,所述程序測試設(shè)備基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)編譯處理,并對預(yù)編譯處理后的目標(biāo)函數(shù)進(jìn)行翻譯,最終生成所述目標(biāo)函數(shù)對應(yīng)的AST。所述程序測試設(shè)備獲取所述目標(biāo)函數(shù)對應(yīng)的AST,并對所述AST進(jìn)行編譯以獲取所述目標(biāo)函數(shù)的起始位置信息??梢岳斫獾氖牵銎鹗嘉恢眯畔ㄋ瞿繕?biāo)函數(shù)的首字符的位置坐標(biāo)以及所述目標(biāo)函數(shù)中開始運(yùn)行的位置坐標(biāo),例如:所述目標(biāo)函數(shù)的起始大括號的位置坐標(biāo)等。
S103,按照所述起始位置信息對所述目標(biāo)程序進(jìn)行插樁測試;
具體的,所述程序測試設(shè)備按照所述起始位置信息對所述目標(biāo)程序進(jìn)行插樁測試,進(jìn)一步的,對于多個(gè)目標(biāo)函數(shù),所述程序測試設(shè)備按照每個(gè)目標(biāo)函數(shù)的起始位置信息進(jìn)行插樁,并依次進(jìn)行測試,即對所述目標(biāo)程序進(jìn)行測試。
在本發(fā)明實(shí)施例中,當(dāng)需要對目標(biāo)程序進(jìn)行測試時(shí),通過與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系,可以基于該鏈接關(guān)系獲取目標(biāo)函數(shù)的起始位置信息,最終按照起始位置信息對目標(biāo)程序進(jìn)行插樁測試。實(shí)現(xiàn)了對目標(biāo)程序的自動測試,通過基于鏈接關(guān)系獲取目標(biāo)函數(shù)的起始位置信息,保證了對程序進(jìn)行覆蓋測試的全面性,避免了對后續(xù)的程序開發(fā)的影響,提升了對程序的測試效果和測試效率。
請參見圖2,為本發(fā)明實(shí)施例提供了另一種判斷應(yīng)用程序測試覆蓋范圍的方法的流程示意圖。如圖2所示,本發(fā)明實(shí)施例的所述方法可以包括以下步驟S201-步驟S206。
S201,當(dāng)對目標(biāo)程序進(jìn)行測試時(shí),定位并獲取所述目標(biāo)程序的頭文件目錄;
具體的,當(dāng)需要對目標(biāo)程序進(jìn)行測試時(shí),程序測試設(shè)備需要定位并獲取目標(biāo)程序的頭文件目錄,假設(shè)系統(tǒng)中默認(rèn)的頭文件目錄為“/usr/include”,而在所述目標(biāo)程序中未查找到,則需要進(jìn)行頭文件目錄的重定位,所述程序測試設(shè)備可以將所定位的多個(gè)頭文件目錄進(jìn)行輸出,并由用戶自行分析,并最終確定所述目標(biāo)程序的頭文件目錄,所述程序測試設(shè)備獲取用戶所確定的所述目標(biāo)程序的頭文件目錄,優(yōu)選的,所述程序測試設(shè)備還可以將獲取的所述目標(biāo)程序的頭文件目錄輸出為一個(gè)變量,并根據(jù)該變量生成一個(gè)插件。
S202,與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系;
具體的,程序測試設(shè)備可以與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系,優(yōu)選的,所述程序測試設(shè)備可以創(chuàng)建一個(gè)前端進(jìn)程,該前端進(jìn)程優(yōu)選為對目標(biāo)程序進(jìn)行輸入的接口,測試人員可以通過該前端進(jìn)程將需要測試的目標(biāo)程序進(jìn)行輸入,所述程序測試設(shè)備可以獲取所述目標(biāo)程序,并與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系。例如:所述程序測試設(shè)備可以調(diào)用Clang工具建立一個(gè)前端進(jìn)程,Clang是一個(gè)C語言、C++、Objective-C、Objective-C++語言的輕量級編譯器,并通過Clang工具與所述目標(biāo)函數(shù)建立鏈接關(guān)系。
可以理解的是,所述目標(biāo)程序可以包含一個(gè)或多個(gè)函數(shù),因此所述目標(biāo)函數(shù)可以為一個(gè)或多個(gè)函數(shù)。對于多個(gè)函數(shù),所述程序測試設(shè)備需要分別與所述多個(gè)函數(shù)建立鏈接關(guān)系。
通過對目標(biāo)程序的頭文件目錄進(jìn)行定位和獲取,以及與目標(biāo)函數(shù)建立鏈接關(guān)系,可以便于實(shí)現(xiàn)后續(xù)對目標(biāo)函數(shù)進(jìn)行預(yù)處理、編譯處理等過程,提高了對目標(biāo)程序進(jìn)行測試的準(zhǔn)確性。
S203,基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)處理,并在預(yù)處理后生成所述目標(biāo)函數(shù)對應(yīng)的AST;
具體的,所述程序測試設(shè)備可以基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)處理,并在預(yù)處理后生成所述目標(biāo)函數(shù)對應(yīng)的AST,所述預(yù)處理可以包括預(yù)編譯過程以及翻譯過程,所述程序測試設(shè)備基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)編譯處理,并對預(yù)編譯處理后的目標(biāo)函數(shù)進(jìn)行翻譯,最終生成所述目標(biāo)函數(shù)對應(yīng)的AST。
S204,對所述AST進(jìn)行編譯以獲取所述目標(biāo)函數(shù)的起始位置信息;
具體的,所述程序測試設(shè)備獲取所述目標(biāo)函數(shù)對應(yīng)的AST,并對所述AST進(jìn)行編譯以獲取所述目標(biāo)函數(shù)的起始位置信息。可以理解的是,所述起始位置信息包括所述目標(biāo)函數(shù)的首字符的位置坐標(biāo)以及所述目標(biāo)函數(shù)中開始運(yùn)行的位置坐標(biāo),例如:所述目標(biāo)函數(shù)的起始大括號的位置坐標(biāo)等。
S205,基于所述連接關(guān)系,獲取所述目標(biāo)函數(shù)的結(jié)束位置信息;
具體的,所述程序測試設(shè)備在獲取所述起始位置信息的同時(shí)還可以獲取所述目標(biāo)函數(shù)對應(yīng)的結(jié)束位置信息,所述結(jié)束位置信息包括所述目標(biāo)函數(shù)的末字符的位置坐標(biāo)以及所述目標(biāo)函數(shù)中結(jié)束運(yùn)行的位置坐標(biāo),例如:所述目標(biāo)函數(shù)的結(jié)束大括號的位置坐標(biāo)等。通過獲取所述目標(biāo)函數(shù)的結(jié)束位置信息,可以便 于測試人員對所述目標(biāo)函數(shù)的測試結(jié)果進(jìn)行分析以及進(jìn)行評價(jià),保證測試的效果以及有效性。
S206,按照所述起始位置信息對所述目標(biāo)程序進(jìn)行插樁測試;
具體的,所述程序測試設(shè)備按照所述起始位置信息對所述目標(biāo)程序進(jìn)行插樁測試,進(jìn)一步的,對于多個(gè)目標(biāo)函數(shù),所述程序測試設(shè)備按照每個(gè)目標(biāo)函數(shù)的起始位置信息進(jìn)行插樁,并依次進(jìn)行測試,即對所述目標(biāo)程序進(jìn)行測試。
在本發(fā)明實(shí)施例中,當(dāng)需要對目標(biāo)程序進(jìn)行測試時(shí),通過與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系,可以基于該鏈接關(guān)系獲取目標(biāo)函數(shù)的起始位置信息,最終按照起始位置信息對目標(biāo)程序進(jìn)行插樁測試。實(shí)現(xiàn)了對目標(biāo)程序的自動測試,通過基于鏈接關(guān)系獲取目標(biāo)函數(shù)的起始位置信息,保證了對程序進(jìn)行覆蓋測試的全面性,避免了對后續(xù)的程序開發(fā)的影響,提升了對程序的測試效果和測試效率;通過對目標(biāo)程序的頭文件目錄進(jìn)行定位和獲取,以及與目標(biāo)函數(shù)建立鏈接關(guān)系,可以便于實(shí)現(xiàn)后續(xù)對目標(biāo)函數(shù)進(jìn)行預(yù)處理、編譯處理等過程,提高了對目標(biāo)程序進(jìn)行測試的準(zhǔn)確性;通過獲取所述目標(biāo)函數(shù)的結(jié)束位置信息,可以便于測試人員對所述目標(biāo)函數(shù)的測試結(jié)果進(jìn)行分析以及進(jìn)行評價(jià),保證測試的效果以及有效性。
下面將結(jié)合附圖3-附圖5,對本發(fā)明實(shí)施例提供的程序測試設(shè)備進(jìn)行詳細(xì)介紹。需要說明的是,附圖3-附圖5所示的程序測試設(shè)備,用于執(zhí)行本發(fā)明圖1和圖2所示實(shí)施例的方法,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,具體技術(shù)細(xì)節(jié)未揭示的,請參照本發(fā)明圖1和圖2所示的實(shí)施例。
請參見圖3,為本發(fā)明實(shí)施例提供了一種程序測試設(shè)備的結(jié)構(gòu)示意圖。如圖3所示,本發(fā)明實(shí)施例的所述程序測試設(shè)備1可以包括:關(guān)系建立單元11、信息獲取單元12和程序測試單元13。
關(guān)系建立單元11,用于當(dāng)對目標(biāo)程序進(jìn)行測試時(shí),與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系;
具體實(shí)現(xiàn)中,當(dāng)需要對目標(biāo)程序進(jìn)行測試時(shí),所述關(guān)系建立單元11可以與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系,優(yōu)選的,所述關(guān)系建立單元11可以創(chuàng)建一個(gè)前端進(jìn)程,該前端進(jìn)程優(yōu)選為對目標(biāo)程序進(jìn)行輸入的接口,測試人員可以通過該前端進(jìn)程將需要測試的目標(biāo)程序進(jìn)行輸入,所述關(guān)系建立單元11可 以獲取所述目標(biāo)程序,并與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系。例如:所述關(guān)系建立單元11可以調(diào)用Clang工具建立一個(gè)前端進(jìn)程,Clang是一個(gè)C語言、C++、Objective-C、Objective-C++語言的輕量級編譯器,并通過Clang工具與所述目標(biāo)函數(shù)建立鏈接關(guān)系。
可以理解的是,所述目標(biāo)程序可以包含一個(gè)或多個(gè)函數(shù),因此所述目標(biāo)函數(shù)可以為一個(gè)或多個(gè)函數(shù)。對于多個(gè)函數(shù),所述關(guān)系建立單元11需要分別與所述多個(gè)函數(shù)建立鏈接關(guān)系。
通過與目標(biāo)函數(shù)建立鏈接關(guān)系,可以便于實(shí)現(xiàn)后續(xù)對目標(biāo)函數(shù)進(jìn)行預(yù)處理、編譯處理等過程,提高了對目標(biāo)程序進(jìn)行測試的準(zhǔn)確性。
信息獲取單元12,用于基于所述鏈接關(guān)系,獲取所述目標(biāo)函數(shù)的起始位置信息;
具體實(shí)現(xiàn)中,基于所述鏈接關(guān)系,所述信息獲取單元12可以獲取所述目標(biāo)函數(shù)的起始位置信息,優(yōu)選的,所述信息獲取單元12可以基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)處理,并在預(yù)處理后生成所述目標(biāo)函數(shù)對應(yīng)的AST,所述預(yù)處理可以包括預(yù)編譯過程以及翻譯過程,所述信息獲取單元12基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)編譯處理,并對預(yù)編譯處理后的目標(biāo)函數(shù)進(jìn)行翻譯,最終生成所述目標(biāo)函數(shù)對應(yīng)的AST。所述信息獲取單元12獲取所述目標(biāo)函數(shù)對應(yīng)的AST,并對所述AST進(jìn)行編譯以獲取所述目標(biāo)函數(shù)的起始位置信息??梢岳斫獾氖?,所述起始位置信息包括所述目標(biāo)函數(shù)的首字符的位置坐標(biāo)以及所述目標(biāo)函數(shù)中開始運(yùn)行的位置坐標(biāo),例如:所述目標(biāo)函數(shù)的起始大括號的位置坐標(biāo)等。
所述信息獲取單元12在獲取所述起始位置信息的同時(shí)還可以獲取所述目標(biāo)函數(shù)對應(yīng)的結(jié)束位置信息,所述結(jié)束位置信息包括所述目標(biāo)函數(shù)的末字符的位置坐標(biāo)以及所述目標(biāo)函數(shù)中結(jié)束運(yùn)行的位置坐標(biāo),例如:所述目標(biāo)函數(shù)的結(jié)束大括號的位置坐標(biāo)等。通過獲取所述目標(biāo)函數(shù)的結(jié)束位置信息,可以便于測試人員對所述目標(biāo)函數(shù)的測試結(jié)果進(jìn)行分析以及進(jìn)行評價(jià),保證測試的效果以及有效性。
具體的,請一并參見圖4,為本發(fā)明實(shí)施例提供了信息獲取單元的結(jié)構(gòu)示意圖。如圖4所示,所述信息獲取單元12可以包括:
語法樹生成子單元121,用于基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)處理, 并在預(yù)處理后生成所述目標(biāo)函數(shù)對應(yīng)的AST;
具體實(shí)現(xiàn)中,所述語法樹生成子單元121可以基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)處理,并在預(yù)處理后生成所述目標(biāo)函數(shù)對應(yīng)的AST,所述預(yù)處理可以包括預(yù)編譯過程以及翻譯過程,所述語法樹生成子單元121基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)編譯處理,并對預(yù)編譯處理后的目標(biāo)函數(shù)進(jìn)行翻譯,最終生成所述目標(biāo)函數(shù)對應(yīng)的AST。
信息獲取子單元122,用于對所述AST進(jìn)行編譯以獲取所述目標(biāo)函數(shù)的起始位置信息;
具體實(shí)現(xiàn)中,所述信息獲取子單元122獲取所述目標(biāo)函數(shù)對應(yīng)的AST,并對所述AST進(jìn)行編譯以獲取所述目標(biāo)函數(shù)的起始位置信息。可以理解的是,所述起始位置信息包括所述目標(biāo)函數(shù)的首字符的位置坐標(biāo)以及所述目標(biāo)函數(shù)中開始運(yùn)行的位置坐標(biāo),例如:所述目標(biāo)函數(shù)的起始大括號的位置坐標(biāo)等。
程序測試單元13,用于按照所述起始位置信息對所述目標(biāo)程序進(jìn)行插樁測試;
具體實(shí)現(xiàn)中,所述程序測試單元13按照所述起始位置信息對所述目標(biāo)程序進(jìn)行插樁測試,進(jìn)一步的,對于多個(gè)目標(biāo)函數(shù),所述程序測試單元13按照每個(gè)目標(biāo)函數(shù)的起始位置信息進(jìn)行插樁,并依次進(jìn)行測試,即對所述目標(biāo)程序進(jìn)行測試。
在本發(fā)明實(shí)施例中,當(dāng)需要對目標(biāo)程序進(jìn)行測試時(shí),通過與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系,可以基于該鏈接關(guān)系獲取目標(biāo)函數(shù)的起始位置信息,最終按照起始位置信息對目標(biāo)程序進(jìn)行插樁測試。實(shí)現(xiàn)了對目標(biāo)程序的自動測試,通過基于鏈接關(guān)系獲取目標(biāo)函數(shù)的起始位置信息,保證了對程序進(jìn)行覆蓋測試的全面性,避免了對后續(xù)的程序開發(fā)的影響,提升了對程序的測試效果和測試效率;通過獲取所述目標(biāo)函數(shù)的結(jié)束位置信息,可以便于測試人員對所述目標(biāo)函數(shù)的測試結(jié)果進(jìn)行分析以及進(jìn)行評價(jià),保證測試的效果以及有效性。
請參見圖5,為本發(fā)明實(shí)施例提供了另一種程序測試設(shè)備1的結(jié)構(gòu)示意圖。如圖5所示,本發(fā)明實(shí)施例的所述程序測試設(shè)備11可以包括:關(guān)系建立單元11、信息獲取單元12、程序測試單元13和目錄獲取單元14;其中,關(guān)系建立單元11、信息獲取單元12和程序測試單元13的具體結(jié)構(gòu)可以參見圖3所示實(shí)施例 的描述,在此不進(jìn)行贅述。
目錄獲取單元14,用于當(dāng)對目標(biāo)程序進(jìn)行測試時(shí),定位并獲取所述目標(biāo)程序的頭文件目錄;
具體實(shí)現(xiàn)中,當(dāng)需要對目標(biāo)程序進(jìn)行測試時(shí),程序測試設(shè)備1需要定位并獲取目標(biāo)程序的頭文件目錄,假設(shè)系統(tǒng)中默認(rèn)的頭文件目錄為“/usr/include”,而在所述目標(biāo)程序中未查找到,則需要進(jìn)行頭文件目錄的重定位,所述程序測試設(shè)備1可以將所定位的多個(gè)頭文件目錄進(jìn)行輸出,并由用戶自行分析,并最終確定所述目標(biāo)程序的頭文件目錄,所述目錄獲取單元14獲取用戶所確定的所述目標(biāo)程序的頭文件目錄,優(yōu)選的,所述目錄獲取單元14還可以將獲取的所述目標(biāo)程序的頭文件目錄輸出為一個(gè)變量,并根據(jù)該變量生成一個(gè)插件。
在本發(fā)明實(shí)施例中,當(dāng)需要對目標(biāo)程序進(jìn)行測試時(shí),通過與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系,可以基于該鏈接關(guān)系獲取目標(biāo)函數(shù)的起始位置信息,最終按照起始位置信息對目標(biāo)程序進(jìn)行插樁測試。實(shí)現(xiàn)了對目標(biāo)程序的自動測試,通過基于鏈接關(guān)系獲取目標(biāo)函數(shù)的起始位置信息,保證了對程序進(jìn)行覆蓋測試的全面性,避免了對后續(xù)的程序開發(fā)的影響,提升了對程序的測試效果和測試效率;通過對目標(biāo)程序的頭文件目錄進(jìn)行定位和獲取,以及與目標(biāo)函數(shù)建立鏈接關(guān)系,可以便于實(shí)現(xiàn)后續(xù)對目標(biāo)函數(shù)進(jìn)行預(yù)處理、編譯處理等過程,提高了對目標(biāo)程序進(jìn)行測試的準(zhǔn)確性;通過獲取所述目標(biāo)函數(shù)的結(jié)束位置信息,可以便于測試人員對所述目標(biāo)函數(shù)的測試結(jié)果進(jìn)行分析以及進(jìn)行評價(jià),保證測試的效果以及有效性。
請參見圖6,為本發(fā)明實(shí)施例提供了又一種程序測試設(shè)備的結(jié)構(gòu)示意圖。如圖6所示,所述程序測試設(shè)備1000可以包括:至少一個(gè)處理器1001,例如CPU,至少一個(gè)網(wǎng)絡(luò)接口1004,用戶接口1003,存儲器1005,至少一個(gè)通信總線1002。其中,通信總線1002用于實(shí)現(xiàn)這些組件之間的連接通信。其中,用戶接口1003可以包括顯示屏(Display)、鍵盤(Keyboard),可選用戶接口1003還可以包括標(biāo)準(zhǔn)的有線接口、無線接口。網(wǎng)絡(luò)接口1004可選的可以包括標(biāo)準(zhǔn)的有線接口、無線接口(如WI-FI接口)。存儲器1005可以是高速RAM存儲器,也可以是非不穩(wěn)定的存儲器(non-volatile memory),例如至少一個(gè)磁盤存儲器。存儲器1005可選的還可以是至少一個(gè)位于遠(yuǎn)離前述處理器1001的存儲裝置。如圖6所示, 作為一種計(jì)算機(jī)存儲介質(zhì)的存儲器1005中可以包括操作系統(tǒng)、網(wǎng)絡(luò)通信模塊、用戶接口模塊以及測試應(yīng)用程序。
在圖6所示的程序測試設(shè)備1000中,用戶接口1003主要用于為用戶提供輸入的接口,獲取用戶輸入的數(shù)據(jù);而處理器1001可以用于調(diào)用存儲器1005中存儲的測試應(yīng)用程序,并具體執(zhí)行以下操作:
當(dāng)對目標(biāo)程序進(jìn)行測試時(shí),與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系;
基于所述鏈接關(guān)系,獲取所述目標(biāo)函數(shù)的起始位置信息;
按照所述起始位置信息對所述目標(biāo)程序進(jìn)行插樁測試。
在一個(gè)實(shí)施例中,所述處理器1001在執(zhí)行與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系之前,還執(zhí)行以下操作:
定位并獲取所述目標(biāo)程序的頭文件目錄。
在一個(gè)實(shí)施例中,所述處理器1001在執(zhí)行基于所述鏈接關(guān)系,獲取所述目標(biāo)函數(shù)的起始位置信息時(shí),具體執(zhí)行以下操作:
基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)處理,并在預(yù)處理后生成所述目標(biāo)函數(shù)對應(yīng)的AST;
對所述AST進(jìn)行編譯以獲取所述目標(biāo)函數(shù)的起始位置信息。
在一個(gè)實(shí)施例中,所述處理器1001在執(zhí)行基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)處理,并在預(yù)處理后生成所述目標(biāo)函數(shù)對應(yīng)的AST時(shí),具體執(zhí)行以下操作:
基于所述鏈接關(guān)系對所述目標(biāo)函數(shù)進(jìn)行預(yù)編譯處理,并對預(yù)編譯處理后的目標(biāo)函數(shù)進(jìn)行翻譯,以生成所述目標(biāo)函數(shù)對應(yīng)的AST。
在一個(gè)實(shí)施例中,所述處理器1001還執(zhí)行以下操作:
基于所述連接關(guān)系,獲取所述目標(biāo)函數(shù)的結(jié)束位置信息。
在本發(fā)明實(shí)施例中,當(dāng)需要對目標(biāo)程序進(jìn)行測試時(shí),通過與所述目標(biāo)程序中的目標(biāo)函數(shù)建立鏈接關(guān)系,可以基于該鏈接關(guān)系獲取目標(biāo)函數(shù)的起始位置信息,最終按照起始位置信息對目標(biāo)程序進(jìn)行插樁測試。實(shí)現(xiàn)了對目標(biāo)程序的自動測試,通過基于鏈接關(guān)系獲取目標(biāo)函數(shù)的起始位置信息,保證了對程序進(jìn)行覆蓋測試的全面性,避免了對后續(xù)的程序開發(fā)的影響,提升了對程序的測試效果和測試效率;通過對目標(biāo)程序的頭文件目錄進(jìn)行定位和獲取,以及與目標(biāo)函數(shù)建立鏈接關(guān)系,可以便于實(shí)現(xiàn)后續(xù)對目標(biāo)函數(shù)進(jìn)行預(yù)處理、編譯處理等過程, 提高了對目標(biāo)程序進(jìn)行測試的準(zhǔn)確性;通過獲取所述目標(biāo)函數(shù)的結(jié)束位置信息,可以便于測試人員對所述目標(biāo)函數(shù)的測試結(jié)果進(jìn)行分析以及進(jìn)行評價(jià),保證測試的效果以及有效性。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機(jī)存儲記憶體(Random Access Memory,RAM)等。
以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。