專利名稱:一種基于嵌入式軟件的測(cè)試分析方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于軟件測(cè)試領(lǐng)域,尤其涉及一種基于嵌入式軟件的測(cè)試分析方法及系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)硬件技術(shù)的進(jìn)步和元件質(zhì)量逐步提高,元件的集成量也大大增加,從而使嵌入式設(shè)備的硬件性能得到了極大的提高;與此同時(shí),通過(guò)采用成熟的商用嵌入式操作系統(tǒng),使整個(gè)系統(tǒng)運(yùn)行在一個(gè)高性能的、可靠的軟件平臺(tái)上,為實(shí)現(xiàn)各種大型的復(fù)雜的應(yīng)用打下了良好的基礎(chǔ)。面對(duì)系統(tǒng)復(fù)雜性的增加,自然需要功能強(qiáng)大、性能穩(wěn)定的嵌入式應(yīng)用軟件與之相適應(yīng)。所以,在嵌入系統(tǒng)開(kāi)發(fā)中軟件的代碼量也越來(lái)越大,電子類產(chǎn)品的代碼量以每?jī)赡昃头环乃俣仍鲩L(zhǎng)。同時(shí),系統(tǒng)又要求應(yīng)用要精簡(jiǎn)高效、穩(wěn)定可靠,這使得軟件的開(kāi)發(fā)在整個(gè)系統(tǒng)開(kāi)發(fā)中所占的重要性越來(lái)越高,開(kāi)發(fā)時(shí)間也越來(lái)越長(zhǎng),軟件的質(zhì)量對(duì)產(chǎn)品的最終質(zhì)量起到了決定性的作用。因此,迫切需要一種工具能夠在軟件開(kāi)發(fā)的單板階段、 集成階段、系統(tǒng)階段等各階段,對(duì)嵌入式系統(tǒng)的軟件進(jìn)行實(shí)時(shí)在線的測(cè)試與分析,以保證系統(tǒng)的性能和穩(wěn)定可靠性。市面上流行的測(cè)試工具大致分為普通純軟件的測(cè)試工具和純硬件的測(cè)試工具。其中,普通純軟件的測(cè)試工具采用的是軟件打點(diǎn)技術(shù),即在被測(cè)代碼中插入一些函數(shù),主要在函數(shù)的入口、出口處,以及分支等地,插入特定的函數(shù),以便計(jì)算函數(shù)執(zhí)行的時(shí)間,利用這些函數(shù)來(lái)實(shí)現(xiàn)測(cè)試數(shù)據(jù)的生成,同時(shí)將測(cè)試數(shù)據(jù)送到目標(biāo)板系統(tǒng)的共享內(nèi)存中。并在目標(biāo)系統(tǒng)中運(yùn)行一個(gè)預(yù)處理任務(wù),完成這些測(cè)試數(shù)據(jù)的預(yù)處理,然后將處理后的數(shù)據(jù),通過(guò)目標(biāo)機(jī)的網(wǎng)口或串口上送回到主機(jī)上,進(jìn)行后續(xù)的分析。通過(guò)這個(gè)過(guò)程,測(cè)試者得以知道程序當(dāng)前的運(yùn)行狀態(tài)。從此分析可知,純軟件的測(cè)試工具,需借助于用戶的目標(biāo)處理器來(lái)完成,即需要占用目標(biāo)板上的資源。同時(shí),純軟件的測(cè)試工具的測(cè)試原理,有兩個(gè)必然存在的特點(diǎn)——插樁函數(shù)和預(yù)處理任務(wù)。分析由于插入了插樁函數(shù)和預(yù)處理任務(wù)的存在,使系統(tǒng)的代碼增大, 更嚴(yán)重的是這些代碼會(huì)對(duì)系統(tǒng)的運(yùn)行效率有很大的影響(超過(guò)50% )。同時(shí),函數(shù)本身要有它的實(shí)現(xiàn)過(guò)程,它要完成數(shù)據(jù)的生成和暫存,而且這些函數(shù)在它的實(shí)現(xiàn)過(guò)程中,還可能被其他優(yōu)先級(jí)更高的中斷程序所中斷。預(yù)處理任務(wù)需要占用目標(biāo)系統(tǒng)CPU處理時(shí)間、共享內(nèi)存和通信通道完成數(shù)據(jù)的處理、數(shù)據(jù)的上送。由于這些弊端的存在,當(dāng)采用純軟件測(cè)試工具對(duì)目標(biāo)系統(tǒng)進(jìn)行測(cè)試時(shí),用戶目標(biāo)系統(tǒng)是在一種不真實(shí)的環(huán)境下運(yùn)行的,我們所捕獲的數(shù)據(jù)也是不夠精確的。采用純軟件的測(cè)試工具有以下不足缺陷1 插入的是函數(shù),本身要有實(shí)現(xiàn)過(guò)程,同時(shí)需要完成測(cè)試數(shù)據(jù)的生成和暫存,而且實(shí)現(xiàn)過(guò)程中,還易被其他優(yōu)先級(jí)更高的中斷程序所中斷。缺陷2 做覆蓋率分析的時(shí)候,因?yàn)橐罅看螯c(diǎn),而打點(diǎn)過(guò)多就會(huì)影響系統(tǒng)的運(yùn)行,所以只能做單元覆蓋率分析且單元的程序量不能太大。缺陷3 沒(méi)有對(duì)內(nèi)存分配進(jìn)行分析和檢查的能力。
純硬件測(cè)試工具以邏輯分析儀為例,邏輯分析儀通過(guò)雙端口標(biāo)志寄存器,當(dāng)代碼執(zhí)行時(shí),雙端口標(biāo)志寄存器同時(shí)對(duì)執(zhí)行的代碼置1,通過(guò)對(duì)代碼是否置1,來(lái)判斷程序當(dāng)前運(yùn)行的狀況。分析當(dāng)系統(tǒng)打開(kāi)緩存(CACHE)時(shí),取一條指令則對(duì)此代碼置1。而這條指令并不一定執(zhí)行。采用純硬件的測(cè)試工具有以下不足缺陷1 當(dāng)CACHE打開(kāi)我們會(huì)采用指令預(yù)取技術(shù),從外存中讀取一段代碼到一級(jí) CACHE中,這時(shí)邏輯分析儀就會(huì)報(bào)告這些代碼已經(jīng)被執(zhí)行了,但實(shí)際上被送到CACHE中的代碼可能根本沒(méi)有被命中。為了避免這種誤差必須把CACHE關(guān)閉掉,而CACHE關(guān)掉就不是系統(tǒng)真實(shí)的運(yùn)行環(huán)境了,有時(shí)甚至?xí)捎贑ACHE關(guān)閉而導(dǎo)致系統(tǒng)無(wú)法正常運(yùn)行。缺陷2 沒(méi)有對(duì)內(nèi)存分配進(jìn)行分析和檢查的能力。綜上,現(xiàn)有技術(shù)通過(guò)軟件或硬件測(cè)試工具進(jìn)行嵌入式軟件測(cè)試時(shí),存在著代碼膨脹率過(guò)高、容易被中斷,占有的硬件板資源較多,測(cè)試精度和準(zhǔn)確率不高,測(cè)試分析對(duì)象不夠多樣化等等的問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提供一種基于嵌入式軟件的測(cè)試分析方法,旨在解決現(xiàn)有技術(shù)進(jìn)行嵌入式軟件測(cè)試分析時(shí),膨脹率過(guò)高,容易被中斷,占有的硬件板資源較多,測(cè)試精度和準(zhǔn)確率不高,測(cè)試分析對(duì)象不夠多樣化的問(wèn)題。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種基于嵌入式軟件的測(cè)試分析方法,包括以下步驟對(duì)經(jīng)過(guò)編譯器預(yù)編譯的源代碼進(jìn)行插樁;根據(jù)所述預(yù)編譯的源代碼的插樁結(jié)果生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù);監(jiān)控并采集目標(biāo)板上可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果,對(duì)所述可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行處理生成測(cè)試數(shù)據(jù),所述可執(zhí)行目標(biāo)代碼由插樁后的源代碼經(jīng)過(guò)所述編譯器編譯、鏈接生成;對(duì)所述插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)和所述測(cè)試數(shù)據(jù)進(jìn)行關(guān)聯(lián)對(duì)比和分析,得到測(cè)試分析結(jié)果。進(jìn)一步地,所述對(duì)源代碼進(jìn)行插樁的步驟具體為確定插樁位置和插樁內(nèi)容,根據(jù)所述插樁位置在完成預(yù)編譯的源代碼中插入插樁內(nèi)容;所述插樁位置包括至少一個(gè)插樁點(diǎn),所述插樁內(nèi)容為賦值語(yǔ)句,所述根據(jù)所述預(yù)編譯的源代碼的插樁結(jié)果生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)的步驟具體為根據(jù)所述插樁點(diǎn)和賦值語(yǔ)句生成對(duì)應(yīng)的插樁標(biāo)識(shí)信息;根據(jù)所述插標(biāo)識(shí)信息生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)。進(jìn)一步地,所述監(jiān)控并采集所述目標(biāo)板上所述可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果步驟具體為當(dāng)監(jiān)控到所述目標(biāo)板上的信號(hào)時(shí),通過(guò)捕獲所述目標(biāo)板可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果并保存;所述對(duì)可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行處理生成測(cè)試數(shù)據(jù)的步驟具體為對(duì)所述可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行保存,預(yù)處理,生成測(cè)試數(shù)據(jù)上傳。
進(jìn)一步地,所述插樁內(nèi)容為賦值語(yǔ)句。進(jìn)一步地,當(dāng)所述源代碼為程序文件時(shí),所述程序文件至少為一個(gè),程序文件為多個(gè)時(shí)程序文件的保存路徑至少為一個(gè);所述插樁標(biāo)識(shí)信息包括覆蓋率標(biāo)識(shí)信息、內(nèi)存標(biāo)識(shí)信息、代碼流標(biāo)識(shí)信息、測(cè)試報(bào)告標(biāo)識(shí)信息;所述測(cè)試分析結(jié)果包括以下內(nèi)容覆蓋率分析結(jié)果、內(nèi)存調(diào)用信息、代碼流跟蹤結(jié)果、測(cè)試報(bào)告。本發(fā)明實(shí)施例的另一目的在于提供基于嵌入式軟件的測(cè)試分析系統(tǒng),包括插樁器,用于對(duì)經(jīng)過(guò)編譯器預(yù)編譯的源代碼進(jìn)行插樁;插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)生成單元,用于根據(jù)所述插樁器對(duì)所述預(yù)編譯的源代碼的插樁結(jié)果生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù);軟件探針及采集單元,用于從目標(biāo)板上監(jiān)控并采集可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果, 對(duì)所述可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行處理生成測(cè)試數(shù)據(jù)并保存,所述可執(zhí)行目標(biāo)代碼由插樁后的源代碼經(jīng)過(guò)所述編譯器編譯、鏈接生成;結(jié)果分析器,根據(jù)所述插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)生成單元生成的插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)和軟件探針及采集單元保存的測(cè)試數(shù)據(jù)對(duì)源代碼的測(cè)試結(jié)果進(jìn)行關(guān)聯(lián)對(duì)比和分析,得到測(cè)試分析結(jié)果。進(jìn)一步地,所述插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)包括標(biāo)識(shí)信息,所述標(biāo)識(shí)信息包括覆蓋率標(biāo)識(shí)信息、內(nèi)存標(biāo)識(shí)信息、代碼流標(biāo)識(shí)信息、測(cè)試報(bào)告標(biāo)識(shí)信息,所述測(cè)試分析結(jié)果包括以下內(nèi)容 覆蓋率分析結(jié)果、內(nèi)存調(diào)用信息、代碼流跟蹤結(jié)果、測(cè)試報(bào)告。進(jìn)一步地,所述插樁器進(jìn)一步包括驅(qū)動(dòng)模塊,用于調(diào)用所述編譯器進(jìn)行編譯處理;執(zhí)行模塊,用于確定插樁位置和插樁內(nèi)容,根據(jù)所述插樁位置在所述編譯器完成預(yù)編譯的源代碼中插入插樁內(nèi)容;所述插樁位置包括至少一個(gè)插樁點(diǎn),所述插樁內(nèi)容為賦值語(yǔ)句,所述插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)生成單元進(jìn)一步包括第一處理模塊,根據(jù)所述執(zhí)行模塊確定的插樁位置和插值內(nèi)容生成對(duì)應(yīng)的插樁標(biāo)識(shí)信息;第二處理模塊,根據(jù)所述第一處理模塊生成的插樁標(biāo)識(shí)信息生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)。進(jìn)一步地,所述軟件探針及采集單元進(jìn)一步包括監(jiān)控模塊,用于監(jiān)控所述目標(biāo)板的信號(hào);采集模塊,用于在所述監(jiān)控模塊監(jiān)控到所述目標(biāo)板的信號(hào)時(shí),捕獲所述目標(biāo)板上可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果并保存。進(jìn)一步地,所述當(dāng)所述源代碼為程序文件時(shí),所述程序文件至少為一個(gè),程序文件為多個(gè)時(shí)程序文件的保存路徑至少為一個(gè)。本發(fā)明實(shí)施例,通過(guò)對(duì)經(jīng)過(guò)編譯器預(yù)編譯的源代碼進(jìn)行插樁,根據(jù)預(yù)編譯的源代碼的插樁結(jié)果生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù),監(jiān)控并采集目標(biāo)板上可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果,對(duì)可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行處理生成測(cè)試數(shù)據(jù),可執(zhí)行目標(biāo)代碼由插樁后的源代碼經(jīng)過(guò)編譯器編譯、鏈接生成,對(duì)插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)和測(cè)試數(shù)據(jù)進(jìn)行關(guān)聯(lián)對(duì)比和分析,得到測(cè)試分析結(jié)果,實(shí)現(xiàn)了內(nèi)存調(diào)用分析,滿足降低代碼膨脹率、避免中斷,占有較小硬件板上資源的同時(shí)提高測(cè)試精度和準(zhǔn)確率的要求,且測(cè)試分析對(duì)象多樣化。
圖1是本發(fā)明實(shí)施例提供的基于嵌入式軟件測(cè)試分析方法的流程圖;圖2是本發(fā)明一個(gè)示例提供的基于嵌入式軟件測(cè)試的流程圖;圖3是本發(fā)明另一個(gè)示例提供的內(nèi)存插樁示意圖;圖4是本發(fā)明實(shí)施例提供的基于嵌入式軟件測(cè)試分析系統(tǒng)的工作原理圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實(shí)施例,提供一種基于嵌入式軟件的測(cè)試分析方法,通過(guò)對(duì)經(jīng)過(guò)編譯器預(yù)編譯的源代碼進(jìn)行插樁,從目標(biāo)板上監(jiān)控并采集可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果,對(duì)可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行處理生成測(cè)試數(shù)據(jù)并保存,根據(jù)插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)和測(cè)試數(shù)據(jù)對(duì)源代碼的測(cè)試結(jié)果進(jìn)行對(duì)比和分析,得到測(cè)試分析結(jié)果。如圖1示出了為本發(fā)明實(shí)施例,提供的嵌入式軟件測(cè)試分析方法的流程圖。在步驟SlOl中,對(duì)經(jīng)過(guò)編譯器預(yù)編譯的源代碼進(jìn)行插樁。本發(fā)明實(shí)施例支持對(duì)C語(yǔ)言以及51、ARM、PPC、68K等匯編語(yǔ)言的插樁??梢詫?duì)一個(gè)文件,也可以對(duì)一個(gè)目錄下的文件進(jìn)行插樁。步驟SlOl步驟具體為確定插樁位置和插樁內(nèi)容,根據(jù)插樁位置在完成預(yù)編譯的源代碼插入插樁內(nèi)容。現(xiàn)實(shí)應(yīng)用中,插樁位置包括至少一個(gè)插樁點(diǎn),在本發(fā)明實(shí)施例中,軟件探針的植入要做到緊湊精干,才能保證信息收集的全面無(wú)冗余,同時(shí)減少代碼的膨脹率。通常將程序基于“塊”結(jié)構(gòu)基本劃分。按照塊結(jié)構(gòu)的劃分,插樁的位置位于預(yù)編譯的源代碼以下幾處 a.程序的第一條語(yǔ)句;b.分支語(yǔ)句的開(kāi)始;c.循環(huán)語(yǔ)句的開(kāi)始;d.下一個(gè)入口語(yǔ)句之前的語(yǔ)句;e.程序的結(jié)束語(yǔ)句;f.分支語(yǔ)句的結(jié)束;g.循環(huán)語(yǔ)句的結(jié)束;h.在內(nèi)存調(diào)用函數(shù)的定義處。除此之外,根據(jù)覆蓋測(cè)試要求的不同,除了上面所說(shuō)的幾種情況外,插樁的位置也會(huì)隨著覆蓋測(cè)試要求的不同有所變化。具體不再詳述。在本發(fā)明優(yōu)選實(shí)施例中,插樁內(nèi)容為賦值語(yǔ)句,插入賦值語(yǔ)句也能夠?qū)Υa進(jìn)行覆蓋率跟蹤分析,同時(shí),由于賦值語(yǔ)句在匯編時(shí)也是一條語(yǔ)句,且執(zhí)行的時(shí)間非常短,避免了被其它的中斷請(qǐng)求所中斷,效率高。另外,根據(jù)不同的測(cè)試要求插入不同的軟件探針,采用相應(yīng)的插樁策略插在不同的關(guān)鍵位置,也可減少代碼的膨脹率,保證程序執(zhí)行的效率。其中,編譯器和源代碼由待測(cè)源代碼對(duì)應(yīng)的提供商提供。在步驟S102中,根據(jù)預(yù)編譯的源代碼的插樁結(jié)果生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)。具體應(yīng)用時(shí),插樁位置包括至少一個(gè)插樁點(diǎn),插樁內(nèi)容為賦值語(yǔ)句,步驟S102步驟具體為根據(jù)插樁點(diǎn)和賦值語(yǔ)句生成對(duì)應(yīng)的插樁標(biāo)識(shí)信息;根據(jù)插標(biāo)識(shí)信息生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)。
其中,插樁標(biāo)識(shí)信息記錄了插樁的相關(guān)信息,例如插樁位置信息,在本發(fā)明實(shí)施例中,插樁標(biāo)識(shí)信息以文件信息進(jìn)行保存,為了便于與測(cè)試數(shù)據(jù)進(jìn)行關(guān)聯(lián)、比較、分析管理使用,插樁完成后,根據(jù)生成的多個(gè)插樁標(biāo)識(shí)信息對(duì)應(yīng)的文件自動(dòng)構(gòu)建插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)。在步驟S103中,監(jiān)控并采集目標(biāo)板上可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果,對(duì)可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行處理,生成測(cè)試數(shù)據(jù)。其中,所述可執(zhí)行目標(biāo)代碼由插樁后的源代碼經(jīng)過(guò)所述編譯器編譯、鏈接生成,目標(biāo)板上由待測(cè)源代碼對(duì)應(yīng)的廠商提供。步驟S103中監(jiān)控并采集目標(biāo)板上可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果步驟具體為當(dāng)監(jiān)控到目標(biāo)板上的信號(hào)時(shí),到目標(biāo)板上捕獲相應(yīng)的目標(biāo)代碼執(zhí)行結(jié)果,并保存。步驟S103中對(duì)可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行處理,生成測(cè)試數(shù)據(jù)的步驟具體為對(duì)可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行預(yù)處理,生成測(cè)試數(shù)據(jù),然后上傳回結(jié)果分析
ο在步驟S104中,對(duì)插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)和測(cè)試數(shù)據(jù)進(jìn)行關(guān)聯(lián)對(duì)比和分析,得到測(cè)試分析結(jié)果。在本發(fā)明實(shí)施例中,采用圖形化分析目標(biāo)板上代碼的運(yùn)行狀況。主要包括文件代碼注釋等靜態(tài)詳細(xì)信息,統(tǒng)計(jì)信息。文件的調(diào)用關(guān)系。函數(shù)的靜態(tài)調(diào)用、動(dòng)態(tài)調(diào)用關(guān)系。具體為1)文件代碼注釋統(tǒng)計(jì)顯示插樁文件數(shù),每個(gè)文件的代碼行,注釋行,空格行等靜
態(tài)fe息。2)文件調(diào)用圖形化顯示文件動(dòng)態(tài)、靜態(tài)調(diào)用關(guān)系。當(dāng)動(dòng)態(tài)顯示的時(shí)候,執(zhí)行過(guò)的文件將變成亮色。3)函數(shù)調(diào)用樹(shù)狀結(jié)構(gòu)直觀地顯示函數(shù)動(dòng)態(tài)、靜態(tài)調(diào)用關(guān)系。當(dāng)動(dòng)態(tài)顯示的時(shí)候, 執(zhí)行過(guò)的函數(shù)將變成亮色。其中,當(dāng)源代碼為程序文件時(shí),程序文件至少為一個(gè),程序文件為多個(gè)時(shí)程序文件的保存路徑至少為一個(gè);插樁標(biāo)識(shí)信息包括覆蓋率標(biāo)識(shí)信息、內(nèi)存標(biāo)識(shí)信息、代碼流標(biāo)識(shí)信息、測(cè)試報(bào)告標(biāo)識(shí)信息;測(cè)試分析結(jié)果包括以下內(nèi)容覆蓋率分析結(jié)果、內(nèi)存調(diào)用信息、 代碼流跟蹤結(jié)果、測(cè)試報(bào)告。圖2示出了本發(fā)明一個(gè)示例提供的嵌入式軟件測(cè)試的處理流程。作為本發(fā)明的一個(gè)示例,該示例使用C/C++語(yǔ)言進(jìn)行編寫(xiě),軟件測(cè)試工作流程具體如下在步驟S201中,對(duì)源代碼進(jìn)行預(yù)編譯。在步驟S202中,對(duì)預(yù)處理后的源代碼進(jìn)行插樁,生成.idb文件,作為插樁標(biāo)識(shí)數(shù)
據(jù)庫(kù)保存。源代碼插樁技術(shù),是第一個(gè)核心步驟和關(guān)鍵技術(shù)。是為全面分析源代碼做標(biāo)記的。 例如
if (SzMStk <= MSPtr) {
MStk = (Move (*)
) estc_realloc(MStk, (SzMStk + 100U) *
sizeof(move),0x67239936);紅色=內(nèi)存標(biāo)記
if MStk== 0) {
fatal (couldn' t realloc MStk! ;
}
SzMStk += 100;
if((becomes&8) !=0) {
estcc_ctrl_port_port =Oxl 1419323;
touch[to] += 256; }
else {
estcc_ctrl_port_port =Oxl 1419324;綠色=覆蓋率標(biāo)記
touch[to] += 1;
estcc_ctrl_port_port =0x14193230; return ((board[to] & PieceMask) == empty);
}本發(fā)明實(shí)施例支持對(duì)C語(yǔ)言以及51、ARM、PPC、68K等匯編語(yǔ)言的插樁。同時(shí)可以對(duì)一個(gè)文件進(jìn)行插樁,也可以對(duì)一個(gè)目錄下的所有文件進(jìn)行插樁。按照插樁策略,確定插樁位置和插樁內(nèi)容后,根據(jù)插樁位置在完成預(yù)編譯的源代碼中插入插樁內(nèi)容。現(xiàn)實(shí)應(yīng)用中,插樁位置包括至少一個(gè)插樁點(diǎn),在本發(fā)明實(shí)施例中,軟件探針的植入要做到緊湊精干,才能保證信息收集的全面無(wú)冗余,同時(shí)減少代碼的膨脹率。通常將程序基于“塊”結(jié)構(gòu)基本劃分。按照塊結(jié)構(gòu)的劃分,插樁的位置位于預(yù)編譯的源代碼以下幾處 a.程序的第一條語(yǔ)句;b.分支語(yǔ)句的開(kāi)始;c.循環(huán)語(yǔ)句的開(kāi)始;d.下一個(gè)入口語(yǔ)句之前的語(yǔ)句;e.程序的結(jié)束語(yǔ)句;f.分支語(yǔ)句的結(jié)束;g.循環(huán)語(yǔ)句的結(jié)束;h.在內(nèi)存調(diào)用函數(shù)的定義處。除此之外,根據(jù)覆蓋測(cè)試要求的不同,除了上面所說(shuō)的幾種情況外,插樁的位置也會(huì)隨著覆蓋測(cè)試要求的不同有所變化。
9
在本發(fā)明優(yōu)選實(shí)施例中,插樁內(nèi)容為賦值語(yǔ)句,由于賦值語(yǔ)句在匯編時(shí)也是一條語(yǔ)句,執(zhí)行時(shí)間非常短,避免了被其它的中斷請(qǐng)求所中斷,效率高。另外,根據(jù)不同的測(cè)試要求插入不同的軟件探針,采用相應(yīng)的插樁策略,插在不同的關(guān)鍵位置,可減少代碼的膨脹率,保證程序執(zhí)行的效率。根據(jù)插樁位置和插樁內(nèi)容(賦值語(yǔ)句)生成對(duì)應(yīng)的插樁標(biāo)識(shí)信息;根據(jù)插標(biāo)識(shí)信息對(duì)應(yīng)的文件自動(dòng)構(gòu)建插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)。便于與后續(xù)測(cè)試數(shù)據(jù)進(jìn)行關(guān)聯(lián)、比較、分析管理使用。在步驟S203中,將經(jīng)過(guò)插樁后的源代碼進(jìn)行統(tǒng)一編譯鏈接生成.out文件,作為可執(zhí)行目標(biāo)碼。在步驟S204中,將可執(zhí)行目標(biāo)碼,下載到目標(biāo)板上運(yùn)行。在每一個(gè)插樁點(diǎn)插入賦值語(yǔ)句后的源代碼,經(jīng)過(guò)編譯鏈接生成目標(biāo)代碼,下載到目標(biāo)板上運(yùn)行時(shí),對(duì)應(yīng)會(huì)生成一個(gè)特定的信號(hào),這個(gè)信號(hào)可被軟件探針捕獲到。在步驟S205中,監(jiān)控到目標(biāo)板上的運(yùn)行程序運(yùn)行到插樁點(diǎn)時(shí),從目標(biāo)板上采集相應(yīng)的運(yùn)行結(jié)果數(shù)據(jù),暫存、預(yù)處理,生成測(cè)試數(shù)據(jù),之后將測(cè)試數(shù)據(jù)通過(guò)局域網(wǎng),發(fā)送到的工作后臺(tái)的結(jié)果分析器中。在步驟S206中,通過(guò)結(jié)果分析器,根據(jù)得到的測(cè)試數(shù)據(jù),結(jié)合插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)中的.idb文件格式中的數(shù)據(jù),進(jìn)行關(guān)聯(lián)比較分析,得到測(cè)試結(jié)果。圖3是本發(fā)明另一個(gè)示例提供的內(nèi)存插樁示意圖。在用戶應(yīng)用程序的內(nèi)存調(diào)用函數(shù)等處,利用插樁器,進(jìn)行插樁即打上內(nèi)存標(biāo)記,然后將插樁后的應(yīng)用程序,再與原C/C++內(nèi)容封裝程序,以及任務(wù)鉤子程序(任務(wù)監(jiān)控執(zhí)行程序)經(jīng)過(guò)編譯器進(jìn)行統(tǒng)一的編譯,之后經(jīng)鏈接器進(jìn)行鏈接完成。在本示例中,結(jié)果分析器用于測(cè)試分析,以swich,while, do-while, for幾種語(yǔ)法結(jié)構(gòu)的插樁為例,它們都支持條件判定,在每個(gè)條件表達(dá)式的布爾表達(dá)式處植入軟件探針, 進(jìn)行變量跟蹤取值,可確定其被覆蓋情況。同時(shí)在內(nèi)存調(diào)用函數(shù)處還進(jìn)行了相應(yīng)的插樁而了解內(nèi)存的調(diào)用及分配情況。以及代碼流跟蹤。本發(fā)明實(shí)施例,通過(guò)源代碼級(jí)追蹤,控制流追蹤,以及高級(jí)追蹤三種模式,來(lái)追蹤嵌入式軟件的運(yùn)行情況。最大追蹤深度可達(dá)百萬(wàn)條源代碼級(jí)程序,其中高級(jí)追蹤顯示的是實(shí)時(shí)系統(tǒng)(Real-time operating system, RT0S)的事件和函數(shù)的進(jìn)入退出,并給出一個(gè)程序流程的大框圖;控制流追蹤增加了可執(zhí)行函數(shù)中每一條分支語(yǔ)句的顯示;源代碼級(jí)追蹤增加了對(duì)被執(zhí)行的全部語(yǔ)句的顯示。在以上三種模式下,均會(huì)顯示詳細(xì)的內(nèi)存分配情況,包括在哪個(gè)源代碼文件的哪一行,哪一個(gè)函數(shù)調(diào)用了內(nèi)存的分配或釋放,被分配的內(nèi)存的大小和指針,被釋放的內(nèi)存和指針,出現(xiàn)的內(nèi)存錯(cuò)誤等。圖4示出了為本發(fā)明提供的基于嵌入式軟件的測(cè)試分析系統(tǒng)的工作原理。為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例的相關(guān)部分。該基于嵌入式軟件的測(cè)試分析系統(tǒng)可以是內(nèi)置于嵌入式設(shè)備的軟件單元、或者作為獨(dú)立的掛件集成到嵌入式設(shè)備的應(yīng)用系統(tǒng)中。在本發(fā)明實(shí)施例中,基于嵌入式軟件的測(cè)試分析系統(tǒng)包括插樁器41、插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)42、軟件探針及采集單元43和結(jié)果分析器44。源代碼45、編譯器46和目標(biāo)板47由
10待測(cè)源代碼對(duì)應(yīng)的提供商提供。基于嵌入式軟件的測(cè)試分析系統(tǒng)實(shí)現(xiàn)嵌入式軟件測(cè)試分析的具體過(guò)程如下編譯器46首先對(duì)源代碼45進(jìn)行預(yù)編譯,插樁器41對(duì)經(jīng)過(guò)編譯器46預(yù)編譯的源代碼進(jìn)行插樁, 并將插樁后的源代碼再次發(fā)送給編譯器46,編譯器46對(duì)插樁后的源代碼再次進(jìn)行完整編譯和鏈接處理得到可執(zhí)行目標(biāo)代碼,將可執(zhí)行目標(biāo)代碼下載到目標(biāo)板47,插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)生成單元42根據(jù)插樁器41對(duì)預(yù)編譯的源代碼的插樁結(jié)果,生成相應(yīng)的插樁標(biāo)識(shí)數(shù)據(jù)庫(kù);軟件探針及采集單元43從目標(biāo)板47上監(jiān)控并采集可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果,同時(shí)對(duì)運(yùn)行結(jié)果進(jìn)行處理生成測(cè)試數(shù)據(jù)并保存上傳給結(jié)果分析器44 ;結(jié)果分析器44根據(jù)插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)42中的插樁標(biāo)識(shí)內(nèi)容與軟件探針及采集單元43上傳的測(cè)試數(shù)據(jù),進(jìn)行關(guān)聯(lián)比對(duì),從而對(duì)源代碼的測(cè)試結(jié)果進(jìn)行比較分析,得到測(cè)試分析結(jié)果。在本發(fā)明一個(gè)實(shí)施例中,插樁器41進(jìn)一步包括編譯驅(qū)動(dòng)模塊,用于調(diào)用編譯器46實(shí)現(xiàn)對(duì)源代碼進(jìn)行預(yù)編譯,以及對(duì)插樁后的源代碼再次進(jìn)行完整的編譯;執(zhí)行模塊,用于確定插樁的具體位置和插樁的具體內(nèi)容,根據(jù)插樁位置,在預(yù)編譯完成后的源代碼中,按照插樁策略,插入具體的插樁內(nèi)容。在本發(fā)明實(shí)施例中,插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)生成單元42進(jìn)一步包括第一處理模塊,根據(jù)執(zhí)行模塊確定的插樁位置和插樁內(nèi)容,生成對(duì)應(yīng)的插樁標(biāo)識(shí) fn息;第二處理模塊,根據(jù)第一處理模塊生成的插樁標(biāo)識(shí)信息,生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)。在本發(fā)明實(shí)施例中,軟件探針及采集單元43進(jìn)一步包括監(jiān)控模塊,用于監(jiān)控目標(biāo)板47上的信號(hào);采集模塊,用于在監(jiān)控模塊監(jiān)控到目標(biāo)板47的信號(hào)出現(xiàn)時(shí),捕獲目標(biāo)板47上出現(xiàn)的對(duì)應(yīng)的數(shù)據(jù),即可執(zhí)行目標(biāo)代碼運(yùn)行的實(shí)際數(shù)據(jù)。軟件探針及采集單元43還可以包括預(yù)處理模塊,用于對(duì)采集模塊采集的數(shù)據(jù)進(jìn)行暫存,做預(yù)處理,然后上傳回主機(jī)。軟件探針及采集單元43與主機(jī)的連接方式為internet連接。其中,插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)42包括標(biāo)識(shí)信息,標(biāo)識(shí)信息包括覆蓋率標(biāo)識(shí)信息、內(nèi)存標(biāo)識(shí)信息、代碼流標(biāo)識(shí)信息、測(cè)試報(bào)告標(biāo)識(shí)信息。測(cè)試分析結(jié)果包括以下內(nèi)容覆蓋率分析結(jié)果、內(nèi)存調(diào)用信息、代碼流跟蹤結(jié)果、測(cè)試報(bào)告。當(dāng)源代碼為程序文件時(shí),程序文件至少為一個(gè),程序文件為多個(gè)時(shí)程序文件的保存路徑至少為一個(gè)。本發(fā)明實(shí)施例中的基于嵌入式軟件的測(cè)試分析系統(tǒng)可實(shí)現(xiàn)多個(gè)程序文件的并行處理。在本發(fā)明的一優(yōu)選實(shí)施例中,基于嵌入式軟件的測(cè)試分析系統(tǒng)包括插樁器,插樁內(nèi)容為賦值語(yǔ)句,插樁器把插入的標(biāo)記送入一個(gè)數(shù)據(jù)庫(kù)文件中生成一個(gè)插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)暫存起來(lái),以備為以后分析時(shí)調(diào)用。插樁位置包括至少一個(gè)插樁點(diǎn)。這類賦值語(yǔ)句經(jīng)過(guò)編譯鏈接生成可執(zhí)行目標(biāo)代碼運(yùn)行到目標(biāo)板上時(shí),由于賦值語(yǔ)句在匯編時(shí)也是一條語(yǔ)句,且執(zhí)行的時(shí)間非常短,避免了被其它的中斷請(qǐng)求所中斷,效率高。在本發(fā)明另一優(yōu)選實(shí)施例中,軟件探針及采集單元43包括至少一個(gè)軟件探針,即信號(hào)捕獲器,用于從目標(biāo)板47上監(jiān)視信號(hào),在監(jiān)視到信號(hào)時(shí),對(duì)數(shù)據(jù)進(jìn)行捕獲,為生成測(cè)試數(shù)據(jù)進(jìn)行采集工作。在本發(fā)明該優(yōu)選實(shí)施例中,編譯器46和硬件目標(biāo)板47由待測(cè)源代碼對(duì)應(yīng)的提供商提供的,基于嵌入式軟件的測(cè)試分析系統(tǒng),實(shí)現(xiàn)測(cè)試分析的過(guò)程具體如下首先,系統(tǒng)的插樁器的編譯驅(qū)動(dòng)模塊,調(diào)用編譯器46對(duì)源代碼進(jìn)行預(yù)編譯,然后再對(duì)源代碼進(jìn)行插樁,接著編譯驅(qū)動(dòng)模塊再次調(diào)用原有的編譯器46,對(duì)插樁后的源代碼進(jìn)行編譯以及鏈接,生成可執(zhí)行目標(biāo)代碼,在對(duì)預(yù)編譯的源代碼進(jìn)行插樁的同時(shí),插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)生成單元42根據(jù)預(yù)編譯的源代碼的插樁所有相關(guān)信息,生成相應(yīng)的插樁標(biāo)識(shí)數(shù)據(jù)庫(kù) 42 ;然后,可執(zhí)行目標(biāo)代碼通過(guò)編譯器46被下載到目標(biāo)板上47運(yùn)行;這樣,在軟件探針及采集單元43從目標(biāo)板47上監(jiān)控到插樁生成的特定的信號(hào)的同時(shí),從目標(biāo)板47上采集對(duì)應(yīng)的可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果數(shù)據(jù),保存可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果數(shù)據(jù),并對(duì)其進(jìn)行預(yù)處理,生成測(cè)試數(shù)據(jù),然后上傳測(cè)試數(shù)據(jù)到主機(jī)上管理平臺(tái)的集成開(kāi)發(fā)環(huán)境antegrated Development, IDE)中,交給結(jié)果分析器44處理;最后,結(jié)果分析器44將插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)42中的數(shù)據(jù)與軟件探針及采集單元采集到的測(cè)試數(shù)據(jù)進(jìn)行關(guān)聯(lián)對(duì)比分析,得到測(cè)試分析結(jié)果。由此,可得知當(dāng)前程序的運(yùn)行狀態(tài)。并可完成對(duì)被測(cè)嵌入式軟件的高級(jí)覆蓋率分析,內(nèi)存分析和大容量的代碼跟蹤等。普通的純軟件測(cè)試工具,因?yàn)椴捎昧似胀ǖ拇螯c(diǎn)插樁技術(shù),會(huì)導(dǎo)致源代碼的膨脹率較高,影響源代碼真實(shí)的運(yùn)行,同時(shí)占用硬件板上資源進(jìn)行預(yù)處理任務(wù),這需要占用目標(biāo)硬件板系統(tǒng)的CPU處理時(shí)間、共享內(nèi)存和通信通道來(lái)完成數(shù)據(jù)的處理、數(shù)據(jù)的上送等,從而使得測(cè)試結(jié)果可信度低;同時(shí)無(wú)法對(duì)內(nèi)存分配進(jìn)行分析檢查。而普通的純硬件測(cè)試工具,因?yàn)椴捎昧似胀ǖ目偩€采樣數(shù)據(jù)機(jī)制,會(huì)導(dǎo)致數(shù)據(jù)不準(zhǔn)甚至是錯(cuò)誤的。同時(shí)也無(wú)法對(duì)內(nèi)存分配進(jìn)行分析檢查。本發(fā)明實(shí)施例的基于嵌入式軟件的測(cè)試分析系統(tǒng),采用基于插入賦值語(yǔ)句和生成相應(yīng)的插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)的源代碼插樁技術(shù),插入的不是一個(gè)函數(shù),而是一條賦值語(yǔ)句,在匯編時(shí)也是一條語(yǔ)句,所以執(zhí)行時(shí)間非常短,同時(shí)避免了被其它的中斷請(qǐng)求所中斷。同時(shí),采用軟件探針及采集單元,較少占用目標(biāo)板上的資源進(jìn)行存放測(cè)試數(shù)據(jù)和運(yùn)行額外的預(yù)處理任務(wù)等,因此,對(duì)被測(cè)系統(tǒng)的影響降到最低,對(duì)CPU的影響小于10%,代碼膨脹率小于15%。 本系統(tǒng)支持多種開(kāi)發(fā)語(yǔ)言及OSE/VxWorks/QNX/Linux等多種嵌入式操作系統(tǒng)平臺(tái)。綜上,本發(fā)明實(shí)施例,能對(duì)被測(cè)程序進(jìn)行全面深度的測(cè)試分析,通過(guò)本發(fā)明實(shí)施例,提供的嵌入式軟件測(cè)試分析系統(tǒng),能夠?qū)崿F(xiàn)的功能包括1)覆蓋率分析可提供源代碼級(jí)(函數(shù)級(jí)),以及總體的覆蓋情況。是一種完全的交互式工具,可以在對(duì)系統(tǒng)進(jìn)行操作的同時(shí),追蹤覆蓋率的情況??纱蜷_(kāi)源代碼文件,顯示執(zhí)行過(guò)的代碼和分支。提供插樁文件、函數(shù)的匯總覆蓋率信息等。覆蓋率信息包括程序?qū)嶋H執(zhí)行的所有內(nèi)容。以不同顏色區(qū)分已運(yùn)行和未運(yùn)行的代碼??筛櫞罅亢瘮?shù),特別是多分支的情況,特別適合測(cè)試大型的嵌入式軟件。其中高級(jí)覆蓋率分析功能,可以把簡(jiǎn)單語(yǔ)句覆蓋功能,擴(kuò)展為決策覆蓋以及條件決策覆蓋功能。2)內(nèi)存調(diào)用分析能對(duì)內(nèi)存分配和調(diào)用進(jìn)行分析和檢查。能分析顯示有多少字節(jié)的存儲(chǔ)器,被分配給了程序的哪一個(gè)函數(shù)。這樣,就不難發(fā)現(xiàn)那些函數(shù),占用了較多的存儲(chǔ)
12空間,以及那些函數(shù)沒(méi)有釋放相應(yīng)的存儲(chǔ)空間。通過(guò)本發(fā)明可以觀察到存儲(chǔ)器的所有分配情況。因此,隨著程序的運(yùn)行,存儲(chǔ)器的動(dòng)態(tài)變化情況(增加/減少),可以統(tǒng)計(jì)出所有的內(nèi)存的分配情況。故隨著程序的運(yùn)行,能指出存儲(chǔ)器分配的錯(cuò)誤,并可同時(shí)看到其對(duì)應(yīng)的源程序的內(nèi)容。3)代碼流跟蹤可以按源代碼級(jí)追蹤,控制流追蹤,以及高級(jí)追蹤三種模式,來(lái)追蹤嵌入式軟件的運(yùn)行情況。最大追蹤深度可達(dá)百萬(wàn)條源代碼級(jí)程序,其中高級(jí)追蹤顯示的是RTOS的事件和函數(shù)的進(jìn)入退出,并給出一個(gè)程序流程的大框圖;控制流追蹤增加了可執(zhí)行函數(shù)中每一條分支語(yǔ)句的顯示;源代碼級(jí)追蹤增加了對(duì)被執(zhí)行的全部語(yǔ)句的顯示。在以上三種模式下,均會(huì)顯示詳細(xì)的內(nèi)存分配情況,包括在哪個(gè)源代碼文件的哪一行,哪一個(gè)函數(shù)調(diào)用了內(nèi)存的分配或釋放,被分配的內(nèi)存的大小和指針,被釋放的內(nèi)存和指針,出現(xiàn)的內(nèi)存錯(cuò)誤等。4)測(cè)試報(bào)告生成提供詳細(xì)的,圖形化的,融合測(cè)試結(jié)果的報(bào)告,可讓用戶看到完整的測(cè)試結(jié)果。本發(fā)明實(shí)施例,從純軟件的測(cè)試工具那里吸取了軟件打點(diǎn)技術(shù)并進(jìn)行改善,即簡(jiǎn)化插入內(nèi)容,插樁內(nèi)容為賦值語(yǔ)句,由于賦值語(yǔ)句在匯編時(shí)也是一條語(yǔ)句,執(zhí)行時(shí)間非常短,避免了被其它的中斷請(qǐng)求所中斷,效率高。另外,根據(jù)不同的測(cè)試要求插入不同的軟件探針,采用相應(yīng)的插樁策略,插在不同的關(guān)鍵位置,可減少代碼的膨脹率,保證程序執(zhí)行的效率。同時(shí)構(gòu)建相應(yīng)的插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)。利用較少的目標(biāo)硬件板系統(tǒng)的CPU、共享內(nèi)存和通信通道來(lái)完成數(shù)據(jù)的預(yù)處理、上傳。因此,本發(fā)明實(shí)施例是在線動(dòng)態(tài)實(shí)時(shí)的系統(tǒng)級(jí)測(cè)試與分析的白盒工具,在同樣的處理能力下,可以做到精確的數(shù)據(jù)觀察。使得測(cè)試的準(zhǔn)確性和效率得到較大提升。針對(duì)現(xiàn)有的普通的純軟件或純硬件嵌入式測(cè)試工具,以及本發(fā)明設(shè)計(jì)的軟嵌入式測(cè)試工具,對(duì)三者的測(cè)試性能進(jìn)行對(duì)比分析,詳見(jiàn)下表表1本發(fā)明技術(shù)與現(xiàn)有技術(shù)的測(cè)試性能對(duì)比
權(quán)利要求
1.一種基于嵌入式軟件的測(cè)試分析方法,包括以下步驟 對(duì)經(jīng)過(guò)編譯器預(yù)編譯的源代碼進(jìn)行插樁;根據(jù)所述預(yù)編譯的源代碼的插樁結(jié)果生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù);監(jiān)控并采集目標(biāo)板上可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果,對(duì)所述可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行處理生成測(cè)試數(shù)據(jù),所述可執(zhí)行目標(biāo)代碼由插樁后的源代碼經(jīng)過(guò)所述編譯器編譯、鏈接生成;對(duì)所述插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)和所述測(cè)試數(shù)據(jù)進(jìn)行關(guān)聯(lián)對(duì)比和分析,得到測(cè)試分析結(jié)果。
2.如權(quán)利要求1所述的方法,其特征在于,所述對(duì)源代碼進(jìn)行插樁的步驟具體為 確定插樁位置和插樁內(nèi)容,根據(jù)所述插樁位置在完成預(yù)編譯的源代碼中插入插樁內(nèi)容;所述插樁位置包括至少一個(gè)插樁點(diǎn),所述插樁內(nèi)容為賦值語(yǔ)句,所述根據(jù)所述預(yù)編譯的源代碼的插樁結(jié)果生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)的步驟具體為 根據(jù)所述插樁點(diǎn)和賦值語(yǔ)句生成對(duì)應(yīng)的插樁標(biāo)識(shí)信息; 根據(jù)所述插標(biāo)識(shí)信息生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)。
3.如權(quán)利要求2所述的方法,其特征在于,所述監(jiān)控并采集所述目標(biāo)板上所述可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果步驟具體為當(dāng)監(jiān)控到所述目標(biāo)板上的信號(hào)時(shí),捕獲所述目標(biāo)板的可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果并保存;所述對(duì)可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行處理生成測(cè)試數(shù)據(jù)的步驟具體為 對(duì)所述可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行保存,預(yù)處理,生成測(cè)試數(shù)據(jù)上傳。
4.如權(quán)利要求2所述的方法,其特征在于,所述插樁內(nèi)容為賦值語(yǔ)句。
5.如權(quán)利要求1所述的方法,其特征在于,當(dāng)所述源代碼為程序文件時(shí),所述程序文件至少為一個(gè),程序文件為多個(gè)時(shí)程序文件的保存路徑至少為一個(gè);所述插樁標(biāo)識(shí)信息包括 覆蓋率標(biāo)識(shí)信息、內(nèi)存標(biāo)識(shí)信息、代碼流標(biāo)識(shí)信息、測(cè)試報(bào)告標(biāo)識(shí)信息;所述測(cè)試分析結(jié)果包括以下內(nèi)容覆蓋率分析結(jié)果、內(nèi)存調(diào)用信息、代碼流跟蹤結(jié)果、測(cè)試報(bào)告。
6.一種基于嵌入式軟件的測(cè)試分析系統(tǒng),包括 插樁器,用于對(duì)經(jīng)過(guò)編譯器預(yù)編譯的源代碼進(jìn)行插樁;插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)生成單元,用于根據(jù)所述插樁器對(duì)所述預(yù)編譯的源代碼的插樁結(jié)果生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù);軟件探針及采集單元,用于從目標(biāo)板上監(jiān)控并采集可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果,對(duì)所述可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行處理生成測(cè)試數(shù)據(jù)并保存,所述可執(zhí)行目標(biāo)代碼由插樁后的源代碼經(jīng)過(guò)所述編譯器編譯、鏈接生成;結(jié)果分析器,根據(jù)所述插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)生成單元生成的插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)和軟件探針及采集單元保存的測(cè)試數(shù)據(jù)對(duì)源代碼的測(cè)試結(jié)果進(jìn)行關(guān)聯(lián)對(duì)比和分析,得到測(cè)試分析結(jié)果。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)包括標(biāo)識(shí)信息,所述標(biāo)識(shí)信息包括覆蓋率標(biāo)識(shí)信息、內(nèi)存標(biāo)識(shí)信息、代碼流標(biāo)識(shí)信息、測(cè)試報(bào)告標(biāo)識(shí)信息,所述測(cè)試分析結(jié)果包括以下內(nèi)容覆蓋率分析結(jié)果、內(nèi)存調(diào)用信息、代碼流跟蹤結(jié)果、測(cè)試報(bào)告。
8.如權(quán)利要求6或7所述的系統(tǒng),其特征在于,所述插樁器進(jìn)一步包括 驅(qū)動(dòng)模塊,用于調(diào)用所述編譯器進(jìn)行編譯處理;執(zhí)行模塊,用于確定插樁位置和插樁內(nèi)容,根據(jù)所述插樁位置在所述編譯器完成預(yù)編譯的源代碼中插入插樁內(nèi)容;所述插樁位置包括至少一個(gè)插樁點(diǎn),所述插樁內(nèi)容為賦值語(yǔ)句,所述插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)生成單元進(jìn)一步包括第一處理模塊,根據(jù)所述執(zhí)行模塊確定的插樁位置和插值內(nèi)容生成對(duì)應(yīng)的插樁標(biāo)識(shí)信息;第二處理模塊,根據(jù)所述第一處理模塊生成的插樁標(biāo)識(shí)信息生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)。
9.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述軟件探針及采集單元進(jìn)一步包括 監(jiān)控模塊,用于監(jiān)控所述目標(biāo)板的信號(hào);采集模塊,用于在所述監(jiān)控模塊監(jiān)控到所述目標(biāo)板的的信號(hào)時(shí),捕獲所述目標(biāo)板上可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果并保存。
10.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述當(dāng)所述源代碼為程序文件時(shí),所述程序文件至少為一個(gè),程序文件為多個(gè)時(shí)程序文件的保存路徑至少為一個(gè)。
全文摘要
本發(fā)明適用于軟件測(cè)試領(lǐng)域,提供了一種基于嵌入式軟件的測(cè)試分析系統(tǒng)和方法,該方法包括以下步驟對(duì)經(jīng)過(guò)編譯器預(yù)編譯的源代碼進(jìn)行插樁;根據(jù)所述預(yù)編譯的源代碼的插樁結(jié)果生成插樁標(biāo)識(shí)數(shù)據(jù)庫(kù);監(jiān)控并采集目標(biāo)板上可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果,對(duì)所述可執(zhí)行目標(biāo)代碼的運(yùn)行結(jié)果進(jìn)行處理生成測(cè)試數(shù)據(jù),所述可執(zhí)行目標(biāo)代碼由插樁后的源代碼經(jīng)過(guò)所述編譯器編譯、鏈接生成;對(duì)所述插樁標(biāo)識(shí)數(shù)據(jù)庫(kù)和所述測(cè)試數(shù)據(jù)進(jìn)行關(guān)聯(lián)對(duì)比和分析,得到測(cè)試分析結(jié)果。本發(fā)明較好的解決了純軟件測(cè)試工具的存在的膨脹率過(guò)高等問(wèn)題,且測(cè)試分析對(duì)象多樣化。
文檔編號(hào)G06F11/36GK102243609SQ20111016040
公開(kāi)日2011年11月16日 申請(qǐng)日期2011年6月15日 優(yōu)先權(quán)日2011年6月15日
發(fā)明者張哲輝, 黃梅 申請(qǐng)人:惠州運(yùn)通信息技術(shù)有限公司