蘭婭勛+陸璐
摘 要: 以往的白盒測(cè)試插樁方法普遍不能精準(zhǔn)定位到目標(biāo)插樁,語(yǔ)句覆蓋率不符合要求。為了解決這個(gè)現(xiàn)象,提出一種基于嵌入式開(kāi)發(fā)的白盒測(cè)試插樁方法。所提方法先對(duì)嵌入式開(kāi)發(fā)的插樁技術(shù)原理進(jìn)行介紹,提出使用在線嵌入式測(cè)試軟件CodeTEST進(jìn)行自動(dòng)插樁的理念。設(shè)計(jì)基于嵌入式開(kāi)發(fā)的白盒測(cè)試插樁進(jìn)程,分程序標(biāo)準(zhǔn)化、插樁順序劃分和覆蓋率分析三步進(jìn)行。并介紹插樁順序塊劃分方法、插樁方位提取規(guī)則以及插樁信息分析方法。實(shí)驗(yàn)結(jié)果表明,所提方法擁有很高的語(yǔ)義覆蓋率和分支覆蓋率。
關(guān)鍵詞: 嵌入式技術(shù); 白盒測(cè)試; 插樁技術(shù); CodeTEST
中圖分類(lèi)號(hào): TN806?34; TP311 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2017)14?0049?03
Abstract: The previous white box testing plugging pile method does not precisely position to the target pile, and its statement coverage rate does not meet the requirements. In order to eliminate this phenomenon, a kind of white?box testing plugging pile method based on embedded development is put forward in this paper. The principle of the pile technology based on the embedded development is introduced. A concept that uses the online embedded testing software CodeTEST the to implement the automatic plugging pile is put forward. The progress of white?box testing plugging pile based on embedded development is designed and divided into three steps of program standardization, inserted sequence division and coverage rate analysis. The plugging pile block partition method, plugging pile orientation extraction rules and plugging pile information analysis method are introduced. The experimental results show that the proposed method has high semantic coverage rate and branch coverage rate.
Keywords: embedded technology; white box testing; insert pile technology; CodeTEST
0 引 言
嵌入式技術(shù)的應(yīng)用價(jià)值越來(lái)越大,目前已經(jīng)成為熱點(diǎn)研究話題。就現(xiàn)階段而言,嵌入式開(kāi)發(fā)在軟件測(cè)試中的應(yīng)用往往過(guò)于重視軟件調(diào)試,隨著用戶對(duì)軟件質(zhì)量要求的不斷攀升,軟件測(cè)試明顯已經(jīng)不能只做表面功夫,需要更深層次的調(diào)試支持。
白盒測(cè)試是軟件測(cè)試人員常用的測(cè)試方法,以白盒測(cè)試為例,以往進(jìn)行的嵌入式開(kāi)發(fā)代碼插樁普遍無(wú)法得到結(jié)構(gòu)相對(duì)完整的語(yǔ)義信息,語(yǔ)句覆蓋率不符合要求。造成這種情況的原因是在嵌入式開(kāi)發(fā)的初期,插樁技術(shù)不能自動(dòng)完成語(yǔ)義覆蓋[1],此時(shí)一旦涉及到目標(biāo)測(cè)試環(huán)境的交互開(kāi)發(fā),白盒測(cè)試就不能精準(zhǔn)定位到目標(biāo)插樁。對(duì)此,提供一種新的基于嵌入式開(kāi)發(fā)的白盒測(cè)試插樁方法,對(duì)以往方法覆蓋率低的缺點(diǎn)進(jìn)行改善,達(dá)到提高白盒測(cè)試精度的需求。
1 嵌入式開(kāi)發(fā)的插樁技術(shù)原理
嵌入式開(kāi)發(fā)將通過(guò)動(dòng)、靜態(tài)相融合的測(cè)試方法取得插樁定位信息,使用在線嵌入式測(cè)試軟件CodeTEST進(jìn)行自動(dòng)插樁[2]。CodeTEST具有在線追蹤和展示能力,幾乎支持所有嵌入式開(kāi)發(fā)設(shè)備軟硬件平臺(tái)。CodeTEST在插樁過(guò)程中不用變更原軟件程序代碼,軟件測(cè)試人員只需敲定需要進(jìn)行代碼插樁的范圍即可。
圖1為CodeTEST的軟件測(cè)試插樁進(jìn)程,將根據(jù)工具鏈的多元組合達(dá)成嵌入式插樁。軟件源代碼在中央控制器的開(kāi)發(fā)環(huán)境中通過(guò)編譯器套件帶動(dòng)Makefile文件進(jìn)行預(yù)處理。預(yù)處理文件的代碼間隔變寬,更容易向其中插入探測(cè)針。同時(shí),預(yù)處理過(guò)程也會(huì)間接修正錯(cuò)誤的軟件程序代碼。插樁器在預(yù)處理文件中插入探測(cè)針,探測(cè)針攜帶定位標(biāo)簽,測(cè)試人員能夠通過(guò)跟蹤定位標(biāo)簽查看軟件測(cè)試進(jìn)程。由于CodeTEST不能直接將編譯代碼寫(xiě)入定位點(diǎn),因此利用編譯器套件將插樁文件匯編并引入編譯器,通過(guò)構(gòu)建編譯程序和鏈接程序自動(dòng)生成可執(zhí)行代碼,以便對(duì)源代碼文件進(jìn)行插樁。
2 基于嵌入式開(kāi)發(fā)的白盒測(cè)試插樁方法
本文提出的基于嵌入式開(kāi)發(fā)的白盒測(cè)試插樁方法先排列好軟件程序插樁順序,再依次進(jìn)行插樁,對(duì)插樁信息進(jìn)行分析最后達(dá)成白盒測(cè)試。
2.1 基于嵌入式開(kāi)發(fā)的白盒測(cè)試插樁進(jìn)程
目前,軟件程序使用的編譯語(yǔ)言主要是C語(yǔ)言,考慮到白盒測(cè)試的特殊性,所提出的基于嵌入式開(kāi)發(fā)的白盒測(cè)試插樁方法設(shè)計(jì)了如圖2所示的基于嵌入式開(kāi)發(fā)的白盒測(cè)試插樁進(jìn)程。軟件程序的預(yù)處理進(jìn)程采用CodeTEST的嵌入式處理方式,先后進(jìn)行程序標(biāo)準(zhǔn)化以及插樁順序的劃分。插樁進(jìn)程分為語(yǔ)句覆蓋插樁和分支覆蓋插樁。對(duì)標(biāo)準(zhǔn)化程序進(jìn)行插樁和編譯后,得到可執(zhí)行代碼和插樁信息,進(jìn)而計(jì)算出白盒測(cè)試的覆蓋率信息[3]。
2.2 順序塊劃分
在白盒測(cè)試中獲取良好的插樁方位是提高覆蓋率的有效方式。插樁順序作為提供插樁方位的前提條件,其原理是在插樁順序中對(duì)順序塊進(jìn)行劃分。順序塊是指單純的軟件程序處理代碼,其中不含有循環(huán)語(yǔ)句、外部鏈接以及外部函數(shù),程序的運(yùn)行是一步到位且不重復(fù),只存在一個(gè)入口和一個(gè)出口[4],在保證探測(cè)針數(shù)量最少的情況下,插樁方位也只存在于程序的首端或者尾端,可有效縮短插樁時(shí)間,避免語(yǔ)句重復(fù)覆蓋,減少了白盒測(cè)試對(duì)源代碼的干擾。除以上描述之外,順序塊中也不會(huì)含有不可執(zhí)行代碼,這是由嵌入式開(kāi)發(fā)設(shè)備內(nèi)存小的特性決定的[5]。首端代碼的宏、聲明、定義以及以上代碼所占據(jù)的行列和標(biāo)點(diǎn)都?xì)w屬于不可執(zhí)行代碼的范疇。
對(duì)插樁方位進(jìn)行提取需要應(yīng)用到四種規(guī)則,如表1所示。
2.3 插樁信息分析
白盒測(cè)試中插樁信息與靜態(tài)數(shù)據(jù)庫(kù)進(jìn)行靜態(tài)連接,以交互模擬語(yǔ)言提取探測(cè)針得到軟件程序代碼特征,進(jìn)一步生成可執(zhí)行代碼。樁函數(shù)負(fù)責(zé)將插樁信息傳送給CodeTEST進(jìn)行分析,由CodeTEST計(jì)算白盒測(cè)試覆蓋率。使用樁函數(shù)還原原有軟件程序,返還白盒測(cè)試驅(qū)動(dòng)指令[6],使用順序塊驅(qū)動(dòng)樁函數(shù)。在白盒測(cè)試中,用表示CodeTEST得到的插樁信息,表示CodeTEST對(duì)插樁信息的分析順序,語(yǔ)句覆蓋率表示為式(1),分支覆蓋率表示為式(2),如下: (1)
式中:是進(jìn)行白盒測(cè)試軟件程序的序列,共有個(gè)程序;,表示插樁信息中的語(yǔ)句總量和已處理的分支數(shù)量;,是僅處理過(guò)一個(gè)的語(yǔ)句、分支數(shù)量;是可執(zhí)行代碼鏈。
3 實(shí)驗(yàn)結(jié)果與分析
本次實(shí)驗(yàn)的實(shí)驗(yàn)地點(diǎn)為某大學(xué)的計(jì)算機(jī)實(shí)驗(yàn)室,計(jì)算機(jī)系統(tǒng)為Windows XP,運(yùn)存2.21 GHz,內(nèi)存4 GB。在計(jì)算機(jī)上使用虛擬機(jī)搭建出一個(gè)軟件測(cè)試環(huán)境,數(shù)據(jù)庫(kù)使用SqlServer(阿里混合云),Web應(yīng)用服務(wù)器使用Apache。實(shí)驗(yàn)將針對(duì)工程設(shè)計(jì)軟件、在線游戲軟件和數(shù)據(jù)恢復(fù)軟件進(jìn)行白盒測(cè)試插樁,實(shí)時(shí)跟蹤插樁信息,取整體平均的語(yǔ)句覆蓋率與分支覆蓋率數(shù)據(jù)進(jìn)行對(duì)比分析。實(shí)驗(yàn)結(jié)果如表2所示。
由表2可知,本次實(shí)驗(yàn)選用本文提出的基于嵌入式開(kāi)發(fā)的白盒測(cè)試插樁方法與基于路徑覆蓋的白盒測(cè)試插樁方法、基于ElcEmma的白盒測(cè)試插樁方法進(jìn)行對(duì)比。在所搭建的實(shí)驗(yàn)平臺(tái)中,三種方法均能正常取得語(yǔ)句覆蓋率與分支覆蓋率數(shù)據(jù)。其中,基于路徑覆蓋的白盒測(cè)試插樁方法在測(cè)試在線游戲軟件時(shí)取得的效果最好;基于ElcEmma的白盒測(cè)試插樁方法的覆蓋率偏小,未發(fā)揮很大作用;語(yǔ)句覆蓋率與分支覆蓋率最高的是本文方法,能夠很好地對(duì)各類(lèi)軟件進(jìn)行白盒測(cè)試插樁。
4 結(jié) 論
本文提出一種基于嵌入式開(kāi)發(fā)的白盒測(cè)試插樁方法,用CodeTEST整體掌控白盒測(cè)試插樁進(jìn)程,分析白盒測(cè)試覆蓋率,有效改善了以往插樁技術(shù)智能化不足的問(wèn)題,使其能自動(dòng)完成語(yǔ)義覆蓋。通過(guò)實(shí)驗(yàn)的證明,本文所提方法取得了很高的語(yǔ)義覆蓋率和分支覆蓋率,達(dá)成了提高白盒測(cè)試精度的用戶需求。
參考文獻(xiàn)
[1] 徐晴,紀(jì)峰,田正其,等.基于E2PROM數(shù)據(jù)讀寫(xiě)的智能電能表白盒測(cè)試方法[J].電測(cè)與儀表,2014,51(3):1?5.
[2] 姚佳瑜.箭載飛控軟件系統(tǒng)最差情況執(zhí)行時(shí)間測(cè)試研究[J].電腦知識(shí)與技術(shù):學(xué)術(shù)交流,2016,12(3):87?89.
[3] 井靖,蔣烈輝,李軼民,等.基于平臺(tái)透明化處理的動(dòng)態(tài)信息提取方法[J].計(jì)算機(jī)應(yīng)用研究,2015,32(10):3009?3013.
[4] 陳佳麗,陳曉潔.基于ElcEmma工具的代碼覆蓋軟件測(cè)試技術(shù)研究[J].宜春學(xué)院學(xué)報(bào),2016,38(6):45?48.
[5] 陳佳麗,陳曉潔.靜態(tài)代碼分析在軟件測(cè)試中的應(yīng)用研究[J].嘉應(yīng)學(xué)院學(xué)報(bào),2016,34(2):35?39.
[6] 王穎,谷利澤,楊義先,等.EWFT:基于程序執(zhí)行過(guò)程的白盒測(cè)試工具[J].電子學(xué)報(bào),2014,42(10):2016?2023.