亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        宿主環(huán)境下嵌入式軟件白盒測試方法

        2014-07-18 11:53:37王忠民
        西安郵電大學(xué)學(xué)報 2014年5期
        關(guān)鍵詞:分析器嵌入式軟件覆蓋率

        范 琳, 王忠民

        (西安郵電大學(xué) 計算機學(xué)院, 陜西 西安 710121)

        宿主環(huán)境下嵌入式軟件白盒測試方法

        范 琳, 王忠民

        (西安郵電大學(xué) 計算機學(xué)院, 陜西 西安 710121)

        針對嵌入式系統(tǒng)軟硬件開發(fā)不同步的問題,提出一種宿主環(huán)境下嵌入式軟件白盒測試方法。采用基于順序塊的插樁方法來實現(xiàn)語句覆蓋測試,采用基于邏輯樹的插樁方法來實現(xiàn)分支覆蓋測試,在被測程序運行過程中由嵌入式模擬器實時發(fā)送樁信息到分析器,由分析器計算得到語句與分支覆蓋率。實驗表明,該方法能實時獲取嵌入式軟件測試過程中的語句和分支覆蓋率,測試效果良好。

        嵌入式模擬器; 順序塊; 邏輯樹; 插樁; 白盒測試

        隨著嵌入式系統(tǒng)的廣泛應(yīng)用,人們對嵌入式設(shè)備的穩(wěn)定性和可靠性提出了更高的要求。嵌入式系統(tǒng)的軟件與目標(biāo)硬件緊密相關(guān),一般在原型板調(diào)試時才開始進行底層嵌入式軟件的測試調(diào)試工作[1-2]。為了加快項目的開發(fā)進度,確保嵌入式軟件的質(zhì)量,應(yīng)該在硬件原型板制板之前開始嵌入式軟件模塊調(diào)試,即在沒有硬件原型板時先盡可能地調(diào)試并解決嵌入式軟件編程方面的錯誤。由于目標(biāo)機與宿主機硬件環(huán)境不同,使用的是不同體系結(jié)構(gòu)的處理器,嵌入式軟件無法在宿主機上直接運行與測試[3-4],將嵌入式模擬器應(yīng)用于嵌入式軟件的開發(fā)與測試,軟件在模擬器上運行和測試[5],能使得軟件與硬件并行開發(fā)。

        目前實用的嵌入式系統(tǒng)測試平臺主要由國外廠商開發(fā),比較具有代表性的測試平臺有Teleloglc公司的Logi-scope[6],Metrowerks公司的CodeTest[7],Windriver公司的CoverageScope和IPL公司的Cantata等[8]。但一套測試系統(tǒng)價格往往高達(dá)數(shù)十萬甚至上百萬美元,極大增加了嵌入式系統(tǒng)的開發(fā)成本。目前國內(nèi)軟件測試研究進行的比較少,深圳領(lǐng)測科技有限公司推出嵌入式產(chǎn)品白盒測試工具VcTester[4],非開源免費軟件。以上嵌入式測試平臺功能復(fù)雜,安裝與使用門檻較高,不方便使用。

        本文采用ARM公司提供的嵌入式模擬器ARMulator[9]來搭建嵌入式測試平臺,提出一種針對嵌入式軟件白盒測試的自動插樁方法,能在代碼動態(tài)測試過程中,實時獲取程序的語句和分支覆蓋率。

        1 工作原理

        在宿主機上搭建嵌入式測試平臺,內(nèi)部加載嵌入式模擬器,使得嵌入式軟件具備運行環(huán)境。在進行白盒測試時,國際上一般采用插樁的方式,測試過程中首先對被測程序進行插樁,插入的樁信息就像是播撒在程序內(nèi)部的多個傳感器,在程序運行過程中能同步的、實時的輸出預(yù)設(shè)的樁信息[10-13]。使用樁信息分析器接收樁信息,并進行分析和計算,能實時獲取整個程序運行過程中的語句覆蓋和分支選擇情況?;谒拗髌脚_的嵌入式軟件測試構(gòu)架如圖1所示[11]。

        圖1 基于宿主平臺的嵌入式軟件測試構(gòu)架

        2 嵌入式軟件白盒測試方法

        先將被測程序劃分順序塊后,按其結(jié)構(gòu)生成邏輯樹,再進行插樁,被測程序運行過程中將樁信息發(fā)送出來,以實現(xiàn)白盒測試。

        2.1 被測程序的處理流程

        目前基于ARM的嵌入式軟件開發(fā)以C語言以為主,考慮嵌入式C程序測試,被測程序的處理流程如圖2所示。首先對被測程序進行預(yù)處理,包括代碼規(guī)范化和順序塊劃分,然后對規(guī)范化的程序進行插樁、編譯、鏈接,生成可執(zhí)行文件,加載到嵌入式模擬器,運行過程中實時將樁信息發(fā)送出來,經(jīng)分析器獲取并處理,獲得程序覆蓋率。整個處理流程分為3步。

        (1) 對源程序進行規(guī)范化,規(guī)范化的過程包括了詞法分析、語法分析和代碼整理。具體任務(wù)為:識別源程序中的各個基本的語法單元,刪除無用的空格、tab、回車鍵和注釋,將沒有加上“{、}”的單條分支語句或者循環(huán)語句加上“{、}”,將程序劃歸為統(tǒng)一的格式。

        (2) 對規(guī)范化后的程序進行順序塊劃分,并統(tǒng)計每個順序塊的信息:塊起止行號、塊內(nèi)語句數(shù)、順序塊總數(shù)等,這個過程在插樁之前進行,避免在樁函數(shù)中進行順序塊的統(tǒng)計,降低了插樁對被測程序的影響,以減少樁函數(shù)對測試效果的影響。

        (3) 測試人員選擇不同的白盒測試方法,由測試平臺自動插入不同的樁函數(shù),樁函數(shù)由嵌入式C撰寫,經(jīng)過編譯、鏈接后,生成嵌入式映像文件,能運行于嵌入式模擬器之上。在動態(tài)測試階段通過運行目標(biāo)代碼將樁信息發(fā)送至樁信息分析器,以獲取程序運行過程中的語句、分支覆蓋率。

        圖2 被測程序處理流程

        2.2 劃分順序塊

        在插樁時,選擇插樁位置很重要。為了獲得程序運行中的語句覆蓋率,需得到語句的運行情況。將被測程序劃分為若干順序塊,針對順序塊進行插樁。

        順序塊可定義為若干相連順序語句的集合,是一段不包含任何分支、循環(huán)或函數(shù)調(diào)用的順序程序段;只有一個入口語句和一個出口語句,一個順序塊中所有語句的執(zhí)行次數(shù)相同。在程序插樁時,只需對順序塊的開始或結(jié)尾處插樁即可,從而避免了對每條語句的重復(fù)插樁,減少了測試過程對程序運行的影響。一個順序塊可以表示為

        Block = { line1;

        line2;

        ……

        linei;}

        遍歷整個程序,統(tǒng)計可執(zhí)行語句的總行數(shù),并進行順序塊劃分。以下語句均不是可執(zhí)行語句,不在統(tǒng)計的范疇內(nèi):頭文件的引用所在行、函數(shù)的聲明、宏定義、函數(shù)定義的函數(shù)名所在行、每個函數(shù)剛開始的變量定義所在行、單獨的大括號作為一行及空行。

        從第一條可執(zhí)行代碼開始處理,遇到以下內(nèi)容時當(dāng)前順序塊結(jié)束:

        (1)循環(huán)語句關(guān)鍵字for、do、while、do until;

        (2)分支語句關(guān)鍵字if、else if、else及end if ;

        (3)函數(shù)調(diào)用語句;

        (4)return語句;

        在對被測程序進行順序塊劃分后,針對每個被測程序建立分塊信息

        Bl[n]={n,Start,End,Lines}(n=0,1,…,N-1),

        其中N為總分塊數(shù),n是順序塊編號,Start是起始行號,End是結(jié)束行號,Lines是該順序塊的行數(shù),滿足

        (Bl[n]→Lines)=

        (Bl[n]→End)-(Bl[n]→Start)+1;

        分塊后在源程序頭添加全局變量的定義和樁函數(shù)的聲明

        staticintblock= 0;

        voidsendstub();

        在每個塊結(jié)束的位置插入下列語句,其中n為當(dāng)前塊的塊號,sendstub函數(shù)發(fā)送信息到樁信息分析器

        block= n;

        sendstub(block);

        以上插樁過程由函數(shù)自動進行。在進行語句覆蓋測試時,先發(fā)送Bl[n]信息到樁信息分析器。然后在程序運行過程中,實時由樁函數(shù)sendstub發(fā)送當(dāng)前執(zhí)行的塊號到樁信息分析器,以計算實時的語句覆蓋率。

        2.3 生成邏輯樹

        劃分順序塊后,對整個程序進行邏輯分析。當(dāng)遇到if-else、switch、while、for、do-while語句時,分別生成下列邏輯樹。

        邏輯樹可定義為用于表示整個程序流程的有向圖,其中邊表示程序運行的順序,圓形表示程序中的模塊,實心圓點表示程序中的分支。對每個模塊進行迭代處理,使得每個模塊都是順序塊時,邏輯樹生成完畢。

        依圖3劃分邏輯樹,其中圖3(a)表示if-else分支程序的邏輯樹,圖3(b)表示while,for循環(huán)程序的邏輯樹,圖3(c)表示switch多分支結(jié)構(gòu)的邏輯樹,圖3(d)表示do-while語句的邏輯樹。

        (a)if-else語句邏輯樹 (b)while、for語句邏輯樹

        (c)switch語句邏輯樹 (d)do-while語句邏輯樹

        圖3 不同程序結(jié)構(gòu)的邏輯樹

        針對每個被測程序建立分支信息

        Br[m]={m,Style,is_loop}(m=0,1,…,M-1),

        其中M為總分支數(shù),m是分支編號,Style是分支的類型,用不同數(shù)字分別表示if,if-else,switch,while,for,do-while,is_loop表示該分支是否為循環(huán)。

        在源程序頭添加全局變量定義和樁函數(shù)聲明

        staticintbranch= 0;

        voidsendstub();

        在每個塊結(jié)束的位置插入語句,其中n為當(dāng)前塊的塊號

        branch= n;

        sendstub(branch);

        在進行分支覆蓋測試時,先發(fā)送Br(m)信息到樁信息分析器。然后在程序運行過程中,實時由樁函數(shù)sendstub發(fā)送branch信息到樁信息分析器,以計算實時的分支覆蓋率。

        2.4 樁信息發(fā)送與接收

        基于模擬器的嵌入式軟件測試中,一個難點就是如何獲取樁信息。一般采用的方法都是將樁信息寫入文件,在測試結(jié)束后通過分析文件來獲得最終的語句或分支覆蓋率。這種方法不能實時獲取樁信息,而程序測試過程中,其覆蓋率變化曲線的轉(zhuǎn)折點一般都包含重要信息,比如某些很少被執(zhí)行的語句在輸入特殊的測試用例時被執(zhí)行了。獲取這些信息對于動態(tài)測試具有很重要的意義,因此實時獲取樁信息來繪制覆蓋率變化曲線很重要。

        本文采用了進程間通信的方式,在嵌入式模擬器中維護一塊共享內(nèi)存,每次樁函數(shù)將要發(fā)送的信息寫入共享內(nèi)存,并通過windows消息通知樁信息分析器來取走數(shù)據(jù)。這樣樁信息分析器就能實時獲取樁數(shù)據(jù),并繪制出實時的覆蓋率曲線。

        2.5 樁信息分析

        在每個順序塊后調(diào)用樁函數(shù),樁函數(shù)的作用是發(fā)送樁信息到樁信息分析器,由樁信息分析器實時分析程序運行過程中的覆蓋率。為盡量減少模擬器和樁信息分析器之間的數(shù)據(jù)傳輸,樁函數(shù)只需將當(dāng)前順序塊號i發(fā)送給樁信息分析器,當(dāng)執(zhí)行到樁函數(shù)時,證明當(dāng)前順序塊已被完全執(zhí)行,樁信息分析器就能及時更新其程序覆蓋率的值。

        在語句覆蓋測試中,設(shè)樁信息分析器在測試過程中動態(tài)獲取的信息為{i1,i2,…,ik},則順序塊的執(zhí)行順序為{i1,i2,…,ik},其中如果有重復(fù)塊號說明該塊被執(zhí)行了不止一次。其中的不重復(fù)的塊號組成集合φ,則語句覆蓋率Cs為

        在分支覆蓋測試中,設(shè)樁信息分析器在測試過程中動態(tài)獲取的信息為{j1,j2,…,jl},此即分支的執(zhí)行順序,其中不重復(fù)的分支號組成集合γ,則語句覆蓋率Cb為

        其中Bi表示所有分支的語句數(shù),Bj表示被執(zhí)行分支的語句數(shù)。

        3 系統(tǒng)實現(xiàn)

        基于PC平臺,windows7.0操作系統(tǒng),開發(fā)出嵌入式測試平臺ARM-Test,如圖4所示。在平臺上打開單個嵌入式.c文件或.mcp工程文件,對文件進行規(guī)范化、順序塊劃分、生成邏輯樹、插樁、編譯、鏈接和運行,以實現(xiàn)語句覆蓋測試和分支覆蓋測試。對4段典型的含有循環(huán)和分支的程序進行測試,其語句覆蓋率和分支覆蓋率如圖5和表1所示。

        圖4 ARM-Test界面

        (a) 程序1的語句(上)和分支覆蓋率(下)

        (b) 程序2的語句(上)和分支覆蓋率(下)

        (c) 程序3的語句(上)和分支覆蓋率(下)

        (d)程序4的語句(上)和分支覆蓋率(下)

        圖5 4段程序的語句覆蓋率和分支覆蓋率

        表1 4段程序的語句與分支覆蓋率曲線的轉(zhuǎn)折點及樁號

        覆蓋情況程序1語句覆蓋分支覆蓋程序2語句覆蓋分支覆蓋程序3語句覆蓋分支覆蓋程序4語句覆蓋分支覆蓋樁號11111111轉(zhuǎn)折點33%100%20%100%33%100%8%25%樁號22292轉(zhuǎn)折點67%40%67%73%50%樁號22352103轉(zhuǎn)折點100%60%100%92.5%75%樁號2024轉(zhuǎn)折點100%100%

        從測試曲線和曲線轉(zhuǎn)折點可以看出,對于4段程序,測試平臺均能準(zhǔn)確給出程序執(zhí)行過程中的語句和分支覆蓋率。以往測試平臺只能給出最終的覆蓋率,本文開發(fā)的系統(tǒng)能實時給出程序運行過程中的覆蓋率,并顯示覆蓋率曲線中的轉(zhuǎn)折點,更有利于測試人員發(fā)現(xiàn)被測程序的問題。

        4 結(jié)束語

        提出一種宿主環(huán)境下嵌入式軟件白盒測試方法,并實現(xiàn)了嵌入式測試平臺ARM-Test,能實時給出程序運行過程中的覆蓋率,并顯示覆蓋率曲線中的轉(zhuǎn)折點,方便測試人員發(fā)現(xiàn)問題,解決了嵌入式系統(tǒng)硬件原型平臺沒有開發(fā)出來之前嵌入式軟件的開發(fā)與測試問題。

        [1] 盛云龍.基于組合覆蓋的嵌入式軟件測試平臺研制[D]. 哈爾濱工業(yè)大學(xué), 2013:1-5.

        [2] 葉永鑫. 嵌入式軟件測試平臺的研究與實現(xiàn)[D]. 北京交通大學(xué), 2010:3-6.

        [3] 呂金和. 嵌入式軟件測試[J]. 軟件導(dǎo)刊, 2010,9(9):40-41.

        [4] 王熒. 嵌入式軟件可靠性測試工具的研究與實現(xiàn)[D]. 成都:電子科技大學(xué), 2009:3-5.

        [5] Bill Blunden. 虛擬機的設(shè)計與實現(xiàn)[M]. 北京:機械工業(yè)出版社,2003:20-150.

        [6] 蔣崇武, 楊順昆, 劉斌. 面向嵌入式軟件測試的仿真建模[J]. 計算機工程, 2008,2(34):87-89.

        [7] 祝義. 嵌入式軟件需求規(guī)約到軟件體系結(jié)構(gòu)模型的轉(zhuǎn)換研究[D]. 南京航空航天大學(xué), 2011:7-8

        [8] Alex Heunhe Han, Yong-Ho Ahn, Ki-Seok Chung. Virtual ARM Simulation Platform for Embedded System Developers[C]//ITC-CSCC, Yamaguchi, Japan, 2008:253-256.

        [9] 周立功. ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社, 2007:50-60.

        [10] 范琳, 王忠民, 王海. 基于嵌入式系統(tǒng)模擬器的測試平臺構(gòu)架[J]. 微計算機信息, 2010(17):61-62.

        [11] 范琳, 王勁松, 王文浪. 基于嵌入式模擬器的樁數(shù)據(jù)獲取模型研究[J]. 東北大學(xué)學(xué)報, 2011,32(1A):61-65.

        [12] 王忠民,周愛玲,范琳. 基于樹形控件的測試工程管理架構(gòu)[J]. 西安郵電學(xué)院學(xué)報, 2011,16(2):26-28.

        [13] 張曉暉,王忠民,王文浪. 嵌入式軟件靜態(tài)測試技術(shù)研究[J]. 西安郵電學(xué)院學(xué)報, 2011,16(2):38-41.

        [責(zé)任編輯:祝劍]

        Research on host-based white-box testing of embedded software

        FAN Lin, WANG Zhongmin

        (School of Computer Science and Technology, Xi’an University of Posts and Telecommunications, Xi’an 710121, China)

        An embedded software testing method based on hosting platform is proposed for in-depth study of white-box testing of embedded software technology. An instrumentation method based on sequence block is brought forward to do statement coverage testing, which can effectively reduce the number of stubs and thus reduce the impact of the testing process. An instrumentation method based on Logic tree is proposed to do branch coverage test. After instrumentation, the program is run on ARMulator. Stub information is analysed by the stub receiver in real time to get the statement and branch coverage. An embedded software testing platform is developed for the ARM-Test. The experiemtns show that ARM-Test can get real-time statement and branch coverage, and do effective white-box testing.

        embedded system simulator, sequence block, logic tree, instrumentation, white-box testing

        10.13682/j.issn.2095-6533.2014.05.021

        2014-04-18

        國家自然科學(xué)基金資助項目(61373116);西安郵電大學(xué)青年基金資助項目(103-0458)

        范琳(1982-),女,碩士,講師,從事嵌入式測試系統(tǒng)、機器學(xué)習(xí)研究。E-mail:fanlin@xupt.edu.cn 王忠民(1967-),男,博士,教授,從事人工智能、嵌入式系統(tǒng)等研究。E-mail:zmwang@xupt.edu.cn

        TG 335.58

        A

        2095-6533(2014)05-0106-06

        猜你喜歡
        分析器嵌入式軟件覆蓋率
        民政部等16部門:到2025年村級綜合服務(wù)設(shè)施覆蓋率超80%
        我國全面實施種業(yè)振興行動 農(nóng)作物良種覆蓋率超過96%
        酒精分析器為什么能分辨人是否喝過酒
        實時嵌入式軟件的測試技術(shù)
        電子測試(2018年10期)2018-06-26 05:54:08
        多邊形電極線形離子阱質(zhì)量分析器的結(jié)構(gòu)與性能
        全景相機遙控器嵌入式軟件V1.0 相關(guān)操作分析
        電子制作(2017年17期)2017-12-18 06:40:56
        應(yīng)用于詞法分析器的算法分析優(yōu)化
        基于噴丸隨機模型的表面覆蓋率計算方法
        基于Eclipse的航天嵌入式軟件集成開發(fā)環(huán)境設(shè)計與實現(xiàn)
        航天嵌入式軟件浮點運算誤差分析與控制
        丁香五香天堂网| 羞羞色院99精品全部免| 熟妇五十路六十路息与子| 99热这里只有精品国产66 | 午夜少妇高潮在线观看| 成人精品视频一区二区三区尤物| 日射精情感性色视频| 精品乱码卡1卡2卡3免费开放| 特一级熟女毛片免费观看| 青青草视频在线观看绿色| 中国少妇×xxxx性裸交| 国产乱人伦av在线a| 青草青草伊人精品视频| 日本高清视频一区二区| 国产又黄又硬又粗| 国产成人精品白浆久久69| 996久久国产精品线观看| 日本激情视频一区在线观看| 老女人下面毛茸茸的视频| 中文字幕人妻第一区| 国产一级做a爱免费观看| 亚洲精品高清av在线播放| 亚洲中文字幕国产剧情| 免费a级毛片高清在钱| 亚洲av国产精品色午夜洪2| 国产v综合v亚洲欧美大天堂| 一区二区激情偷拍老牛视频av| 无码国产精品一区二区免费式芒果| 草草浮力影院| 精品五月天| 91热爆在线精品| 亚洲综合视频一区二区| 国产无遮挡又爽又刺激的视频老师| 亚洲欧美国产日韩制服bt| 男女羞羞的视频免费网站| 日韩中文字幕有码午夜美女| 久久久久久好爽爽久久| 亚洲高清有码在线观看| 国产3p一区二区三区精品| 亚洲av无码av在线播放| 国产精品亚洲一区二区无码国产|