馬嘉駿
摘要:以往的白盒測試插樁方法普遍不能精準定位到目標插樁,語句覆蓋率不符合要求。為了解決這個現象,提出一種基于嵌入式開發的白盒測試插樁方法。所提方法先對嵌入式開發的插樁技術原理進行介紹,提出使用在線嵌入式測試軟件CodeTEST進行自動插樁的理念。設計基于嵌入式開發的白盒測試插樁進程,分程序標準化、插樁順序劃分和覆蓋率分析三步進行。并介紹插樁順序塊劃分方法、插樁方位提取規則以及插樁信息分析方法。實驗結果表明,所提方法擁有很高的語義覆蓋率和分支覆蓋率。
關鍵詞:嵌入式技術;白盒測試;插樁技術;CodeTEST
引言
嵌入式技術的應用價值越來越大,目前已經成為熱點研究話題。就現階段而言,嵌入式開發在軟件測試中的應用往往過于重視軟件調試,隨著用戶對軟件質量要求的不斷攀升,軟件測試明顯已經不能只做表面功夫,需要更深層次的調試支持。
白盒測試是軟件測試人員常用的測試方法,以白盒測試為例,以往進行的嵌入式開發代碼插樁普遍無法得到結構相對完整的語義信息,語句覆蓋率不符合要求。造成這種情況的原因是在嵌入式開發的初期,插樁技術不能自動完成語義覆蓋,此時一旦涉及到目標測試環境的交互開發,白盒測試就不能精準定位到目標插樁。對此,提供一種新的基于嵌入式開發的白盒測試插樁方法,對以往方法覆蓋率低的缺點進行改善,達到提高白盒測試精度的需求。
1.嵌入式開發的插樁技術原理
嵌入式開發將通過動、靜態相融合的測試方法取得插樁定位信息,使用在線嵌入式測試軟件 CodeTEST進行自動插樁。CodeTEST具有在線追蹤和展示能力,幾乎支持所有嵌入式開發設備軟硬件平臺。CodeTEST在插樁過程中不用變更原軟件程序代碼,軟件測試人員只需敲定需要進行代碼插樁的范圍即可。
軟件測試插樁進程,將根據工具鏈的多元組合達成嵌入式插樁。軟件源代碼在中央控制器的開發環境中通過編譯器套件帶動 Makefile 文件進行預處理。預處理文件的代碼間隔變寬,更容易向其中插入探測針。同時,預處理過程也會間接修正錯誤的軟件程序代碼。插樁器在預處理文件中插入探測針,探測針攜帶定位標簽,測試人員能夠通過跟蹤定位標簽查看軟件測試進程。由于CodeTEST不能直接將編譯代碼寫入定位點,因此利用編譯器套件將插樁文件匯編并引入編譯器,通過構建編譯程序和鏈接程序自動生成可執行代碼,以便對源代碼文件進行插樁。
2.基于嵌入式開發的白盒測試插樁方法
本文提出的基于嵌入式開發的白盒測試插樁方法先排列好軟件程序插樁順序,再依次進行插樁,對插樁信息進行分析最后達成白盒測試。
2.1 基于嵌入式開發的白盒測試插樁進程
目前,軟件程序使用的編譯語言主要是C語言,考慮到白盒測試的特殊性,所提出的基于嵌入式開發的白盒測試插樁方法設計了基于嵌入式開發的白盒測試插樁進程。軟件程序的預處理進程采用 Code-TEST的嵌入式處理方式,先后進行程序標準化以及插樁順序的劃分。插樁進程分為語句覆蓋插樁和分支覆蓋插樁。對標準化程序進行插樁和編譯后,得到可執行代碼和插樁信息,進而計算出白盒測試的覆蓋率信息。
2.2 順序塊劃分
在白盒測試中獲取良好的插樁方位是提高覆蓋率的有效方式。插樁順序作為提供插樁方位的前提條件,其原理是在插樁順序中對順序塊進行劃分。順序塊是指單純的軟件程序處理代碼,其中不含有循環語句、外部鏈接以及外部函數,程序的運行是一步到位且不重復,只存在一個入口和一個出口,在保證探測針數量最少的情況下,插樁方位也只存在于程序的首端或者尾端,可有效縮短插樁時間,避免語句重復覆蓋,減少了白盒測試對源代碼的干擾。除以上描述之外,順序塊中也不會含有不可執行代碼,這是由嵌入式開發設備內存小的特性決定的。首端代碼的宏、聲明、定義以及以上代碼所占據的行列和標點都歸屬于不可執行代碼的范疇。
3.實驗結果與分析
本次實驗的實驗地點為某大學的計算機實驗室,計算機系統為Windows XP,運存2.21 GHz,內存4 GB。在計算機上使用虛擬機搭建出一個軟件測試環境,數據庫使用 SqlServer(阿里混合云),Web 應用服務器使用Apache。實驗將針對工程設計軟件、在線游戲軟件和數據恢復軟件進行白盒測試插樁,實時跟蹤插樁信息,取整體平均的語句覆蓋率與分支覆蓋率數據進行對比分析。實驗結果如表2所示。由表2可知,本次實驗選用本文提出的基于嵌入式開發的白盒測試插樁方法與基于路徑覆蓋的白盒測試插樁方法、基于ElcEmma的白盒測試插樁方法進行對比。在所搭建的實驗平臺中,三種方法均能正常取得語句覆蓋率與分支覆蓋率數據。其中,基于路徑覆蓋的白盒測試插樁方法在測試在線游戲軟件時取得的效果最好;基于ElcEmma的白盒測試插樁方法的覆蓋率偏小,未發揮很大作用;語句覆蓋率與分支覆蓋率最高的是本文方法,能夠很好地對各類軟件進行白盒測試插樁。
結論
本文提出一種基于嵌入式開發的白盒測試插樁方法,用CodeTEST整體掌控白盒測試插樁進程,分析白盒測試覆蓋率,有效改善了以往插樁技術智能化不足的問題,使其能自動完成語義覆蓋。通過實驗的證明,本文所提方法取得了很高的語義覆蓋率和分支覆蓋率,達成了提高白盒測試精度的用戶需求。
參考文獻:
[1] 徐晴,紀峰,田正其,等.基于 E 2 PROM數據讀寫的智能電能表白盒測試方法[J].電測與儀表,2014,51(3):1-5.
[2] 姚佳瑜.箭載飛控軟件系統最差情況執行時間測試研究[J].電腦知識與技術:學術交流,2016,12(3):87-89.
[3] 井靖,蔣烈輝,李軼民,等.基于平臺透明化處理的動態信息提取方法[J].計算機應用研究,2015,32(10):3009-3013.
[4] 陳佳麗,陳曉潔.基于ElcEmma工具的代碼覆蓋軟件測試技術研究[J].宜春學院學報,2016,38(6):45-48.
[5] 陳佳麗,陳曉潔.靜態代碼分析在軟件測試中的應用研究[J].嘉應學院學報,2016,34(2):35-39.