国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種Java代碼覆蓋率工具的應(yīng)用研究

2020-04-24 14:50:40陳小雁李雨江
電腦知識(shí)與技術(shù) 2020年5期
關(guān)鍵詞:測試用例軟件測試

陳小雁 李雨江

摘要:為提高軟件測試效率,分析了代碼覆蓋率種類,探討了Java代碼覆蓋率工具ElcEmma的工作原理,并將其應(yīng)用到Ja-va游戲?qū)嵗?。?yīng)用情況表明,ElcEmma能有效地從不同層面定位代碼的覆蓋及未覆蓋情況,幫助開發(fā)人員設(shè)計(jì)出高質(zhì)量的測試用例,有助于保障軟件測試工作的充分性。

關(guān)鍵詞:軟件質(zhì)量;軟件測試;代碼覆蓋率;白盒測試;測試用例

中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1009-3044(2020)05-0065-02

開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

隨著現(xiàn)代信息技術(shù)的飛速發(fā)展,軟件普遍深入到人類日常生活的各個(gè)領(lǐng)域,發(fā)揮著重要的作用。與此同時(shí),人們對(duì)軟件質(zhì)量也越來越重視。軟件質(zhì)量是軟件產(chǎn)品的生命線[1]。然而隨著軟件規(guī)模的不斷增長,程序復(fù)雜度不斷提高,由于不合理的設(shè)計(jì)和軟件開發(fā)人員的疏忽而致使軟件中隱藏的缺陷也越來越多,由此引發(fā)的軟件故障給國家、給企業(yè)帶來了不可估量的損失[2]。

在軟件開發(fā)領(lǐng)域中,軟件測試作為保證軟件質(zhì)量的重要手段[3],貫穿于整個(gè)軟件的生命周期,發(fā)揮著越來越重要的作用。統(tǒng)計(jì)表明,在典型的軟件開發(fā)項(xiàng)目中,軟件測試的工作量往往占據(jù)軟件開發(fā)總工作量的40%以上,而在軟件開發(fā)總成本中,用在測試上的開銷高達(dá)30%_40%[4]。為了保證軟件質(zhì)量,通常使用手工測試或自動(dòng)化測試來運(yùn)行并驗(yàn)證某個(gè)應(yīng)用系統(tǒng)的過程是否滿足規(guī)定的需求,并了解預(yù)期結(jié)果和實(shí)際結(jié)果之間的差異。

由于軟件測試工作在軟件生產(chǎn)過程中的重要地位,軟件測試得到了軟件工程研究人員和從業(yè)人員的廣泛關(guān)注,很多軟件自動(dòng)化測試工具應(yīng)運(yùn)而生。根據(jù)測試應(yīng)用的角度的不同,一般可分為白盒測試工具(動(dòng)態(tài)測試,靜態(tài)測試)、黑盒測試工具(功能測試,性能測試)、測試管理(測試流程管理、缺陷跟蹤管理、測試用例管理)等幾大類[5]。這些軟件自動(dòng)化測試工具能提高軟件測試的速度和效率,節(jié)省軟件測試成本,縮短產(chǎn)品發(fā)布周期,同時(shí)可以減少人工干預(yù),避免人為原因給測試工作帶來的誤差,因而在軟件開發(fā)領(lǐng)域得到了廣泛應(yīng)用[6-7]。本文探討了基于白盒測試技術(shù)的軟件自動(dòng)化測試工具ElcEmma的原理和實(shí)際應(yīng)用。

1 代碼覆蓋率分析

在軟件測試工作中,代碼覆蓋測試是測試的底線,能明顯提高軟件的可靠性,從而保證軟件的質(zhì)量[8]。代碼覆蓋測試是軟件白盒測試的主要方法,利用它可在代碼層面定位測試過程中所找出的缺陷,發(fā)現(xiàn)被測程序的邏輯結(jié)構(gòu)異常等缺陷信息,檢驗(yàn)軟件測試充分性,是保證測試質(zhì)量的有效方法之一[9]。該覆蓋測試技術(shù)采用代碼覆蓋率代表被測代碼的覆蓋程度,用于檢驗(yàn)測試的完整性和充分性。代碼覆蓋率由測試過程中已被執(zhí)行過的源代碼的數(shù)目來衡量,其值等于至少被執(zhí)行一次的項(xiàng)目數(shù)/軟件中的項(xiàng)目總數(shù)。

代碼覆蓋程度的度量方式有很多種,如語句覆蓋、判定覆蓋、條件覆蓋和路徑覆蓋等。其中,語句覆蓋用于判斷軟件中的每條可執(zhí)行代碼是否都被執(zhí)行,不考慮分支和條件表達(dá)式的各種組合。判定覆蓋用于判斷軟件中的每一條判定分支是否被執(zhí)行,它把所測試的判定分支作為一個(gè)整體,僅判斷該整體的真假值是否被測試到。條件覆蓋則用于判斷每一條判定分支中的每個(gè)子表達(dá)式(如果存在)的真假值是否被執(zhí)行,但不考慮每個(gè)子表達(dá)式的真假值所構(gòu)成的排列和組合。路徑覆蓋用于判斷函數(shù)的每一個(gè)分支是否都被執(zhí)行,當(dāng)函數(shù)有多個(gè)分支嵌套時(shí),需要對(duì)多個(gè)分支進(jìn)行排列組合。顯然,路徑覆蓋能將所有可能的分支都執(zhí)行一遍,是這四種覆蓋中粒度最細(xì)的覆蓋。

2 ElcEmma工作原理

目前,主流程序開發(fā)語言C、C++、Ja-va、PHP等都有相應(yīng)的代碼覆蓋率工具。其中,ElcEmma是一款基于Emma的Java代碼覆蓋率搜集及報(bào)告生成工具。它以Eclipse插件的形式在工作平臺(tái)中啟動(dòng),提供了很多與Eclipse緊密結(jié)合的功能。它既支持各種不同級(jí)別的代碼覆蓋,也支持與其他技術(shù)集成,因此廣泛應(yīng)用于大型企業(yè)級(jí)別的項(xiàng)目中。

Emma提供了兩種方式來對(duì)被執(zhí)行的代碼進(jìn)行修改,即預(yù)插入模式和即時(shí)插入模式。EcIEmma僅使用了Emma的預(yù)插入模式來工作,即通過Emma定制的Class-loader類載入器對(duì)代碼進(jìn)行修改,而不必提前修改軟件代碼和執(zhí)行任何安裝。El-cEmma能夠直接分析代碼的覆蓋情況并在Java源代碼編輯器中高亮顯示,且能生成詳盡的覆蓋測試報(bào)告,使得開發(fā)人員能夠直觀、簡潔地掌握具體測試結(jié)果。

EcIEmma的具體工作過程為:首先把統(tǒng)計(jì)代碼插入已經(jīng)編譯好的“.class”文件,生成“coverage.em”文件,自動(dòng)搜集軟件中已測試代碼和未測試代碼的具體情況,從而計(jì)算出代碼覆蓋率的各項(xiàng)相關(guān)數(shù)據(jù)。接著在這些代碼覆蓋率數(shù)據(jù)的基礎(chǔ)上生成“coverage. ec”文件。最后根據(jù)coverage. em”文件和“coverage. ec”文件,生成HTML、XML、Text和Emma Session這些不同格式的代碼覆蓋率報(bào)告,以滿足測試人員的多種需要。

3 實(shí)例應(yīng)用

本文應(yīng)用EcIEmma工具對(duì)一個(gè)由JAVA語言開發(fā)的“貪吃蛇”游戲來進(jìn)行代碼覆蓋測試。該游戲包含類和相關(guān)函數(shù)共計(jì)395行。首先設(shè)置測試用例1:一直使用右方向鍵,使蛇往右移動(dòng)直到撞墻導(dǎo)致游戲結(jié)束。對(duì)應(yīng)的EcIEmma代碼覆蓋率報(bào)告如圖1所示。

由圖1可以清楚、準(zhǔn)確地看出整個(gè)類和各個(gè)函數(shù)的代碼覆蓋率、已覆蓋代碼行數(shù)和未覆蓋代碼行數(shù)等信息。其中,整個(gè)SnakxxGame類的覆蓋率為79.2%,而keyPressed函數(shù)的覆蓋率僅為41.5%,該函數(shù)尚有24行代碼未被覆蓋。雙擊圖1中的keyPressed函數(shù),可以深入查看該函數(shù)的具體覆蓋情況,結(jié)果如圖2所示。

EcIEmma軟件將不同的覆蓋情況分別用不同的顏色高亮顯示。圖2中的綠色高亮顯示的代碼已經(jīng)被完全被執(zhí)行,黃色高亮顯示的代碼僅是部分被執(zhí)行,紅色高亮顯示的代碼尚未被執(zhí)行。從圖2可以直觀看出keyPressed函數(shù)未被測試用例1完全覆蓋到的相關(guān)代碼。

針對(duì)該情況,設(shè)置測試用例2:反復(fù)循環(huán)使用上下左右四個(gè)方向鍵,直到蛇撞墻導(dǎo)致游戲結(jié)束。用例2對(duì)應(yīng)的EcIEmma代碼覆蓋率報(bào)告如圖3所示。

由圖3可知,keyPressed函數(shù)達(dá)到1000-/0的覆蓋率,而此時(shí)整個(gè)SnakeGame類的覆蓋率明顯增高,達(dá)到了95.4%。

4 結(jié)束語

本文研究了針對(duì)Java語言的代碼覆蓋率工具ElcEmma的工作原理,并以普及化的“貪吃蛇”游戲?yàn)槔?,根?jù)EclEmma提供的代碼覆蓋率報(bào)告和代碼運(yùn)行結(jié)果,有針對(duì)性地設(shè)置測試用例,顯著提高了游戲的代碼覆蓋率。實(shí)例應(yīng)用結(jié)果表明,El-cEmma工具能有效地從不同層面定位代碼的覆蓋及未覆蓋情況,幫助開發(fā)人員準(zhǔn)確地定位到那些特殊的、只有在特定情況下才被觸發(fā)的代碼,有助于開發(fā)人員設(shè)計(jì)出高質(zhì)量的測試用例,切實(shí)提高軟件代碼覆蓋率,從而為軟件測試的完整性和充分性提供保障。

參考文獻(xiàn):

[1]李舟軍,張俊賢,廖湘科,等.軟件安全漏洞檢測技術(shù)[J].計(jì)算機(jī)學(xué)報(bào),2015,38(4):717-732.

[2]李麗媛,江國華.一種面向軟件缺陷預(yù)測的特征聚類選擇方法[J].計(jì)算技術(shù)與自動(dòng)化,2018,37(2):126-131.

[3]史嬌嬌,姜淑娟,韓寒,等.自適應(yīng)粒子群優(yōu)化算法及其在測試 數(shù)據(jù)生成中的應(yīng)用研究[J].電子學(xué)報(bào),2013,8(8):1555-1559.

[4]劉琪,趙東東.高負(fù)荷條件下MBMS-GW功能測試的研究[J].電子測量技術(shù),2014,37(7):27-31.

[5]鄧青華.軟件自動(dòng)化測試工具研究[Jl.同濟(jì)大學(xué)軟件院,2011,10(1):57-59.

[6]朱少民,軟件測試方法和技術(shù)[M].北京:清華大學(xué)出版社,2014:1-90.

[7]牛璐.手機(jī)軟件自動(dòng)化測試方法研究與應(yīng)用[D].鄭州:信息工程大學(xué),2012.

[8]浦云明,張杰敏,林穎賢.代碼覆蓋測試技術(shù)在MODE-S應(yīng)答機(jī)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2008,25(7):131-133,148.

[9]馬云云,張弛,王金波,等.嵌入式航天軟件匯編代碼覆蓋測試方案[Jl.航天控制,2017,5(35):68-73.

【通聯(lián)編輯:梁書】

作者簡介:陳小雁(1996-),女,廣東汕頭人,嶺南師范學(xué)院數(shù)學(xué)與統(tǒng)計(jì)學(xué)院本科生,主要研究方向?yàn)檐浖こ?李雨江,通訊作者。

猜你喜歡
測試用例軟件測試
基于SmartUnit的安全通信系統(tǒng)單元測試用例自動(dòng)生成
基于OBE的軟件測試課程教學(xué)改革探索
航天軟件測試模型構(gòu)建與應(yīng)用
軟件(2020年3期)2020-04-20 01:45:34
基于MBD模型自動(dòng)生成測試用例的軟件測試方法
EXCEL和VBA實(shí)現(xiàn)軟件測試記錄管理
電子制作(2018年16期)2018-09-26 03:27:18
基于混合遺傳算法的回歸測試用例集最小化研究
關(guān)于軟件測試技術(shù)應(yīng)用與發(fā)展趨勢研究
電子測試(2017年15期)2017-12-18 07:19:20
基于需求模型的航天軟件測試用例生成方法
基于依賴結(jié)構(gòu)的測試用例優(yōu)先級(jí)技術(shù)
智能電能表軟件測試技術(shù)概述
依安县| 屏东市| 长沙县| 方正县| 聂荣县| 灵武市| 宜兰市| 澄江县| 成都市| 抚顺市| 高尔夫| 仪陇县| 上蔡县| 永靖县| 克东县| 克山县| 运城市| 嘉祥县| 贡觉县| 独山县| 中西区| 呼伦贝尔市| 樟树市| 上虞市| 鄂伦春自治旗| 平乡县| 康乐县| 沂源县| 秀山| 黄平县| 漯河市| 全州县| 将乐县| 手机| 洛隆县| 沙田区| 巍山| 新河县| 大城县| 石景山区| 曲阳县|