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

        ?

        基于樁函數(shù)動(dòng)態(tài)賦值的軟件覆蓋率測(cè)試方法

        2020-12-23 07:55:06萬(wàn)東燕羅睿梅李俊山
        制導(dǎo)與引信 2020年2期
        關(guān)鍵詞:邊界值單元測(cè)試測(cè)試用例

        萬(wàn)東燕, 羅睿梅, 李俊山, 陳 鋮

        (上海無線電設(shè)備研究所,上海201109)

        0 引言

        軟件測(cè)試[1]是軟件研發(fā)過程中的一個(gè)重要環(huán)節(jié),通過軟件測(cè)試可以及時(shí)發(fā)現(xiàn)軟件缺陷,保障軟件的安全性和可靠性。單元測(cè)試是軟件開發(fā)過程中最基礎(chǔ)的測(cè)試項(xiàng),是軟件的獨(dú)立單元在與程序的其他部分相隔離的情況下進(jìn)行的測(cè)試。其中代碼覆蓋率能夠體現(xiàn)代碼的執(zhí)行情況。測(cè)試人員可以通過覆蓋率指標(biāo),分析代碼執(zhí)行范圍,完善測(cè)試用例,有效提高軟件測(cè)試質(zhì)量。

        在軟件測(cè)試的過程中,執(zhí)行單次的測(cè)試用例時(shí),某些函數(shù)的輸入變量激勵(lì)會(huì)在代碼執(zhí)行過程中發(fā)生動(dòng)態(tài)變化。若測(cè)試用例中的輸入變量激勵(lì)不能對(duì)應(yīng)進(jìn)行動(dòng)態(tài)更新,則需激勵(lì)更新才能進(jìn)入的相關(guān)語(yǔ)句無法完成測(cè)試,代碼覆蓋率測(cè)試也無法完成。為了解決這一問題,測(cè)試人員需要在設(shè)計(jì)的測(cè)試用例中模擬輸入變量激勵(lì)的變化條件,來完成測(cè)試。本文結(jié)合專業(yè)的測(cè)試工具,研究了變量激勵(lì)可動(dòng)態(tài)更新的樁函數(shù)賦值法,并設(shè)計(jì)靈活的測(cè)試用例,以保障測(cè)試質(zhì)量、提高測(cè)試效率。

        1 軟件的單元測(cè)試

        1.1 單元測(cè)試方法

        單元測(cè)試的主要目的是驗(yàn)證軟件單元是否滿足詳細(xì)設(shè)計(jì)規(guī)格說明,發(fā)現(xiàn)需求和設(shè)計(jì)中的錯(cuò)誤。測(cè)試用例是影響單元測(cè)試效率和效果的重要因素[2]。本文采取黑盒與白盒結(jié)合的方法對(duì)軟件進(jìn)行測(cè)試。利用黑盒測(cè)試方法中的等價(jià)劃分法和邊界值分析法來設(shè)計(jì)測(cè)試用例。等價(jià)劃分法[3]基于輸入條件的等價(jià)類評(píng)估,在每個(gè)等價(jià)類中選取有代表性的測(cè)試用例,從而達(dá)到等價(jià)類覆蓋的要求。由于程序錯(cuò)誤常在定義域和等價(jià)類的邊緣被發(fā)現(xiàn),所以需要對(duì)每個(gè)測(cè)試變量進(jìn)行邊界值分析。邊界值分析[4]是等價(jià)類劃分的精煉,即選擇每個(gè)類的邊界或終點(diǎn)進(jìn)行測(cè)試。

        覆蓋率是軟件開發(fā)過程中重要的度量指標(biāo),具體包括語(yǔ)句覆蓋、分支覆蓋、條件覆蓋等。覆蓋率測(cè)試[5]作為一種白盒測(cè)試,其主要作用包括:a)評(píng)估測(cè)試質(zhì)量,根據(jù)軟件代碼的覆蓋率報(bào)告,發(fā)現(xiàn)漏測(cè)場(chǎng)景,為測(cè)試人員及時(shí)補(bǔ)充新的測(cè)試用例提供指導(dǎo);b)幫助識(shí)別冗余代碼,對(duì)程序代碼進(jìn)行優(yōu)化與重構(gòu)。

        1.2 單元測(cè)試工具

        Testbed是一款專業(yè)的軟件測(cè)試工具,可用于生成和維護(hù)測(cè)試腳本,編譯并運(yùn)行測(cè)試可執(zhí)行程序,查看測(cè)試結(jié)果和覆蓋率數(shù)據(jù)。其中,Testbed/TBrun模塊可執(zhí)行軟件的單元測(cè)試[6]。該模塊可以在運(yùn)行測(cè)試用例對(duì)軟件功能進(jìn)行測(cè)試的同時(shí),分析得出軟件單元相應(yīng)代碼的測(cè)試覆蓋情況,評(píng)估測(cè)試狀態(tài),從而為設(shè)計(jì)新的測(cè)試用例提供指導(dǎo)。

        2 測(cè)試用例的設(shè)計(jì)

        2.1 測(cè)試用例生成基礎(chǔ)

        (1)單元測(cè)試環(huán)境

        為了方便對(duì)嵌入式軟件進(jìn)行單元測(cè)試,在測(cè)試前首先要去除代碼中的硬件相關(guān)部分,將其移植到Testbed相應(yīng)的測(cè)試環(huán)境中。移植的過程不會(huì)影響軟件的功能,測(cè)試環(huán)境與現(xiàn)實(shí)環(huán)境差異不大,能夠確保測(cè)試的有效性和可靠性。

        單元測(cè)試的對(duì)象是不可獨(dú)立運(yùn)行的函數(shù)單元。測(cè)試時(shí)需要建立兩種輔助測(cè)試模塊:驅(qū)動(dòng)模塊(driver)和樁模塊(stub)。驅(qū)動(dòng)模塊用于模擬被測(cè)函數(shù)的上層模塊,樁模塊用于模擬被測(cè)函數(shù)在執(zhí)行過程中所調(diào)用的其他函數(shù),以保證被測(cè)單元能完整閉合地運(yùn)行。在單元測(cè)試中,被測(cè)函數(shù)可能調(diào)用多個(gè)其他函數(shù),故可能存在多個(gè)樁函數(shù)。

        (2)樁函數(shù)

        樁函數(shù)是根據(jù)測(cè)試需要編寫的,用于替代被測(cè)函數(shù)調(diào)用的函數(shù)。樁函數(shù)有兩種情況:一是該樁函數(shù)在被測(cè)函數(shù)中不需要返回特定值,不需要作其他處理;二是該樁函數(shù)在被測(cè)函數(shù)中需要返回特定值,不同返回值會(huì)影響代碼運(yùn)行與輸出結(jié)果,需要根據(jù)測(cè)試需求,在Testbed/TBrun模塊中進(jìn)行相應(yīng)的返回值設(shè)置。

        在樁函數(shù)中設(shè)置返回值時(shí),通常只支持輸入變量激勵(lì)的一次性靜態(tài)賦值,在代碼的運(yùn)行過程中不能進(jìn)行修改。由于這一局限,導(dǎo)致無法直接對(duì)在單次執(zhí)行過程中需多次變更輸入變量激勵(lì)的函數(shù)進(jìn)行測(cè)試。同時(shí)這一問題會(huì)在覆蓋率測(cè)試中反映,由于對(duì)應(yīng)的分支和語(yǔ)句無法被執(zhí)行,所以覆蓋率測(cè)試也無法完全完成。為了解決這一問題,需要分析進(jìn)入不同分支的變量激勵(lì)的更新要求,并設(shè)計(jì)可動(dòng)態(tài)更新的樁函數(shù)返回值,來模擬進(jìn)入相應(yīng)分支的條件,完成測(cè)試。

        以某數(shù)字信號(hào)處理軟件為例,測(cè)試其誤差處理函數(shù)DJDMBJC時(shí),需要調(diào)用函數(shù)Find Max-Point來獲取并返回最大值變量max_data。在測(cè)試軟件運(yùn)行過程中,函數(shù)Find Max Point中變量max_data的值會(huì)在執(zhí)行過程中動(dòng)態(tài)更新,軟件通過判斷變量值所在范圍,進(jìn)入相應(yīng)程序分支,相關(guān)程序流程如圖1所示。

        圖1 誤差處理函數(shù)測(cè)試程序流程圖

        由圖1可知,該段代碼調(diào)用了兩次函數(shù)Find-MaxPoint,并讀取max_data的值,判斷該值并進(jìn)入對(duì)應(yīng)的執(zhí)行語(yǔ)句。對(duì)函數(shù)DJDMBJC進(jìn)行測(cè)試時(shí),若要到達(dá)第二個(gè)判斷框,則需在第一個(gè)判斷處進(jìn)入“否”分支,即滿足max_data≤12。在該前提下,若max_data的值無法更新,則只能進(jìn)入第二個(gè)判斷框的“否”分支,而無法進(jìn)入與“執(zhí)行語(yǔ)句2”對(duì)應(yīng)的“是”分支,無法對(duì)該段代碼完成測(cè)試覆蓋。因此,在測(cè)試中,需要研究樁函數(shù)返回值的設(shè)置方法,實(shí)現(xiàn)輸入變量激勵(lì)的動(dòng)態(tài)更新。

        2.2 樁函數(shù)返回值賦值法

        為了解決2.1節(jié)中由于被測(cè)單元函數(shù)所調(diào)用樁函數(shù)的輸入變量激勵(lì)值無法更新,導(dǎo)致覆蓋率測(cè)試不能完成的問題,提出一種樁函數(shù)返回值動(dòng)態(tài)賦值方法。根據(jù)Testbed/TBrun模塊中樁函數(shù)的代碼運(yùn)行方式,在樁函數(shù)的后臺(tái)代碼段中構(gòu)造并聲明一個(gè)整型變量count,用來記錄不同賦值點(diǎn)的位置。位置i對(duì)應(yīng)的返回值ai即為該時(shí)刻的變量值,當(dāng)函數(shù)運(yùn)行到count值所對(duì)應(yīng)的位置i時(shí),將返回值ai賦值給變量max_data,從而實(shí)現(xiàn)被調(diào)用的樁函數(shù)輸入變量激勵(lì)的動(dòng)態(tài)更新。具體實(shí)現(xiàn)過程如圖2所示,其中n代表變量激勵(lì)動(dòng)態(tài)更新的次數(shù)。

        將上述方法應(yīng)用于2.1節(jié)函數(shù)DJDMBJC的測(cè)試用例設(shè)計(jì)。執(zhí)行改進(jìn)后的測(cè)試用例,將兩次調(diào)用樁函數(shù)后的變量max_data激勵(lì)值從11更新為13,即可先進(jìn)入圖1中的第一個(gè)“否”語(yǔ)句,再進(jìn)入第二個(gè)“是”語(yǔ)句,實(shí)現(xiàn)不同分支的全部執(zhí)行。

        圖2 樁函數(shù)返回值動(dòng)態(tài)賦值程序流程圖

        2.3 測(cè)試用例的設(shè)計(jì)實(shí)現(xiàn)

        本文被測(cè)軟件中,變量max_data的取值范圍為0~25。由判定條件max_data>12可知,12為判斷邊界值,即該變量的邊界值為0,12和25。對(duì)變量進(jìn)行等價(jià)類與邊界值分析,結(jié)果如表1所示。

        表1 等價(jià)類與邊界值分析

        由圖1可知,當(dāng)max_data≤12時(shí),程序會(huì)進(jìn)入第一個(gè)“否”分支,然后對(duì)已更新的變量max_data值進(jìn)行第二次判斷。因此,在進(jìn)行邊界值測(cè)試時(shí),要考慮兩次函數(shù)調(diào)用時(shí)變量的判斷邊界。結(jié)合變量max_data的判斷邊界,對(duì)測(cè)試用例進(jìn)行覆蓋有效等價(jià)類和邊界值測(cè)試與覆蓋無效等價(jià)類和邊界值測(cè)試分類,實(shí)現(xiàn)程序邊界的完整分析與覆蓋,測(cè)試用例設(shè)計(jì)如表2所示。其中max_data_1和max_data_2分別代表第一和第二個(gè)判斷框?qū)?yīng)的max_data的值。通過對(duì)兩處的max_data進(jìn)行分類賦值,即可達(dá)到函數(shù)功能以及語(yǔ)句與分支的全部覆蓋。

        執(zhí)行改進(jìn)的測(cè)試用例前后,函數(shù)DJDMBJC的測(cè)試覆蓋率如表3所示。在函數(shù)DJDMBJC的測(cè)試過程中,執(zhí)行改進(jìn)的測(cè)試用例,語(yǔ)句與分支判定的覆蓋率分別由90%、93%提高到100%,解決了函數(shù)測(cè)試分支無法到達(dá)的問題,實(shí)現(xiàn)了該函數(shù)的覆蓋率測(cè)試,提升了測(cè)試質(zhì)量。

        表2 測(cè)試用例表

        表3 函數(shù)DJDMBJC測(cè)試覆蓋率 %

        3 結(jié)論

        本文以Testbed軟件為測(cè)試工具,提出了變量激勵(lì)可動(dòng)態(tài)更新的樁函數(shù)返回值設(shè)計(jì)方法,解決了單元測(cè)試中語(yǔ)句和分支覆蓋率測(cè)試不全的問題。結(jié)合等價(jià)類劃分與邊界值測(cè)試,設(shè)計(jì)全面且高效的測(cè)試用例,有效地精簡(jiǎn)了測(cè)試用例個(gè)數(shù),提高了測(cè)試用例設(shè)計(jì)的準(zhǔn)確性和測(cè)試效率,對(duì)提升測(cè)試質(zhì)量具有重要的積極意義。

        猜你喜歡
        邊界值單元測(cè)試測(cè)試用例
        基于SmartUnit的安全通信系統(tǒng)單元測(cè)試用例自動(dòng)生成
        如何設(shè)計(jì)好的測(cè)試用例
        巧用洛必達(dá)法則速解函數(shù)邊界值例讀
        讀寫算(2019年11期)2019-08-29 02:04:19
        基于混合遺傳算法的回歸測(cè)試用例集最小化研究
        基于依賴結(jié)構(gòu)的測(cè)試用例優(yōu)先級(jí)技術(shù)
        一年級(jí)上冊(cè)第五單元測(cè)試
        一年級(jí)上冊(cè)一、二單元測(cè)試
        一類帶有Dirichlet邊界值條件的橢圓型方程正解的存在性
        序半群中有邊界值的直覺模糊理想
        第五單元測(cè)試卷
        国产精品国产三级久久| 久久国产成人午夜av影院| 男人的天堂av一二三区| 亚洲自拍偷拍一区二区三区 | 最新国产不卡在线视频| 免费a级作爱片免费观看美国 | 国产av一区二区制服丝袜美腿| 国产精品亚洲一区二区三区| 一本色综合久久| 欧美亚洲韩国国产综合五月天| 国内精品女同一区二区三区| 影音先锋久久久久av综合网成人| 日本人与黑人做爰视频网站| 亚洲成人免费无码| 一区二区三区国产天堂| 国产成人无码a在线观看不卡| 影视先锋av资源噜噜| 国产成人精品日本亚洲直播| 国产91极品身材白皙| 久久亚洲精品成人无码| 国产真人无遮挡作爱免费视频| 人妻丝袜中文字幕久久| 国产一区二区三区仙踪林| 中文字幕久久精品一二三区| 产国语一级特黄aa大片| 人妻体体内射精一区中文字幕| 帅小伙自慰videogay男男| 欧美国产成人精品一区二区三区| 亚洲一区丝袜美腿在线观看| 精品人妻一区二区三区在线观看| 精品成人av一区二区三区| 亚洲AV无码专区国产H小说| 国产色第一区不卡高清| 蜜臀性色av免费| 一本大道香蕉视频在线观看| 亚洲天堂av在线免费看| 国产av熟女一区二区三区| 亚洲欧美日韩国产综合一区二区| 日韩精品中文字幕 一区| 一区二区三区高清在线观看视频| 老外和中国女人毛片免费视频|