999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VisualUnit的Linux項目單元測試方法研究

2017-07-31 19:22:50唐躍川彭汝鳳涂小麗
微處理機 2017年2期

唐躍川 彭汝鳳 涂小麗

(重慶金美通信有限責任公司,重慶,400030)

基于VisualUnit的Linux項目單元測試方法研究

唐躍川 彭汝鳳 涂小麗

(重慶金美通信有限責任公司,重慶,400030)

首先介紹了VisualUnit的功能特色,然后詳細介紹了使用該工具構建Linux項目測試工程的方法,最后對使用過程中的技巧和使用過程中發現的工具本身的問題進行了總結和分析。該工具已經應用到了多個項目的測試中并取得了良好效果。

可視化測試;嵌入式系統;單元測試;白盒測試;測試工程;測試工具

1 引言

伴隨著嵌入式軟件行業的規模壯大并逐步成熟,嵌入式軟件測試也在不斷發展,而嵌入式Linux就是其中的佼佼者[1]。從最初的開發人員逐行調試向越來越規范化、流程化的方向發展。其活動過程也變得越來越復雜,如果不借助測試工具,則不僅效率低下、工作量巨大,甚至可能出現無法解決的問題,導致無法進行測試[2]。而單元測試又對測試人員的從業素質提出了更高要求。鑒于以上問題,利用一套好的單元測試工具來幫助軟件測試人員提高工作效率和工作質量是非常必要的[3]。

Visual Unit(簡稱VU)是由廣州凱樂軟件公司研發的一款C/C++單元測試、可視編程工具[4]。對于軟件開發來說,其支持eTDD開發模式(易行測試驅動開發),能夠提升開發人員代碼的質量及開發效率;對于軟件測試來說,它可以完成100%的語句、條件、分支、路徑覆蓋,并提供詳盡的測試報告和測試數據[5]。

2 功能特色

VU提供了以下一些特色功能:

(1)自動生成樁代碼、驅動代碼、用例代碼和用例框架;

(2)使用表格編輯測試用例數據;

(3)提供依據有效值范圍、分段點、指定組合等方式生成用例;

(4)提供底層函數輸入、局部靜態變量及終端模擬功能;

(5)提供用例設計器,自動找出遺漏用例、邊界用例,實現全面、高效的覆蓋;

(6)支持內部輸出的自動判斷。

3 環境搭建

對于Linux項目來說,為了提供交叉編譯環境,必須先安裝Cygwin。

完整的Cygwin可以從官網進行下載,目前有12G,這里使用VU技術支持提供的較低版本,它只包含VU需要使用的庫文件和頭文件等內容,只有120M左右,安裝過程如圖1所示。

圖1 cygwin安裝方法

安裝完成后,會形成一個C:cygwin目錄文件夾。

4 構建VU工程

這里,用某型通信控制器的一部分源代碼為例,來說明構建Linux項目測試工程的方法。

這也是VU的一個特點,只要提供一個能編譯通過的C/C++文件,就可以使用它進行單元測試,這就為某些大型項目在集成代碼之前進行單元測試提供了基礎,也為測試工程師從某些大型項目中挑選測試價值高的部分代碼進行測試提供了有效手段[6]。

第二步,啟動VU4,選擇Linux項目模板,如圖2所示。

圖2 項目模板選擇

然后,在“常規”面板中的“產品項目根目錄”中選擇需要測試的項目源文件,如圖3所示。

其它選擇默認,一直“下一步”到VU自動進行項目編譯,可以得到如圖4所示的編譯結果:

圖3 項目源文件選擇

圖4 初次編譯結果

5 解決編譯問題

由于Cygwin、Linux、VU4這三個軟件的版本均較多,所以,它們之間兼容性很差。

同時,VU是不能指定編譯器的,它使用VC6-Mini編譯器來編譯Linux項目,會產生很多編譯問題,解決這些問題是單元測試能做得下去的前提[7]。

切換到Build Error界面,先來看第一個錯誤,如圖5所示。

可以看到,錯誤類型是:外部申明函數clock_gettime()的類型有沖突。由于它是一個外部申明函數,其功能顯然并不會影響對這個C文件進行單元測試,所以,解決問題的方式是:直接屏蔽該行代碼,使用VU的自動生成莊代碼功能來替代這個函數。如圖6所示。

圖5 類型沖突錯誤

圖6 屏蔽外部函數

重新編譯后,該錯誤消失,重新編譯得到結果,如圖7所示。

圖7 修改源文件代碼

直接在測試文件中增加預處理命令#include<linux/ip.h>,重新編譯后,可以看到該類型的錯誤消失了,得到圖8所示的錯誤報告。

圖8 符號未定義錯誤

這是一個符號未定義錯誤,AF_PACKET這個符號,可以采用上面的方法,從.h文件里面找到這個符號的定義,然后添加這個頭文件。然而,VU還提供一種更簡單的解決方案,找到這個常量的定義之后,直接在測試文件中定義這個常量,這是為了避免在包含了這個符號定義的頭文件之后,會引出更多的頭文件包含,由于第5節開篇所說的原因,可能會引起更多的編譯錯誤,使單元測試沒法進行下去。而直接定義這個常量不會影響到測試結果,所以,這是一個比較好的解決方式。如圖9所示。

圖9 修改測試文件

保存之后重新編譯,這個錯誤類型消失了,但是,會出現亂碼提示的錯誤信息。這個時候,可以采用一種比較暴力的解決方式。首先,分析一下源代碼,可以看出,這行語句是屬于某一個語句塊的中間代碼,它并不包含任何的判斷/條件,那就意味著,屏蔽這行代碼之后,不會對這個函數的單元測試過程和結果造成任何影響;其次,這只是一個單獨的錯誤,屏蔽它的工作量很小,不需要整篇代碼去查找類似的錯誤并且作屏蔽工作,所以,可以直接屏蔽代碼,然后重新編譯。可以看到,這個錯誤已經消失了,并且沒有引入新的錯誤,如圖10-11所示。

圖10 無效代碼錯誤

圖11 無效代碼錯誤

現在報告的3個錯誤類型雖然不一樣,但是其實質是一樣的,都是由于中間屏蔽了部分測試代碼,造成這些測試代碼無效,那么,既然是無效的測試代碼,直接刪除就行了。將以上3個錯誤報告出現的測試代碼刪除后,重新編譯,得到如圖12所示的結果。

圖12 得到正確結果

至此,表示編譯鏈接順利通過,已經可以開始表格驅動數據的測試用例設計了。

6 VU本身的問題

通過這個過程,可以總結出VU本身存在的一些BUG或者是使用上不太方便的地方,同時,在實際使用過程中,還發現一些VU存在的問題,下面分別列舉:

(1)編譯結果的錯誤提示中有亂碼。

(2)不支持自選編譯器,所有的嵌入式項目默認都使用VC-Mini編譯器。

(3)測試VS系列項目時,使用導入工程文件的方式導入項目數據會丟失resouce.h文件。

(4)VU的多文件搜索功能不能準確定位查找目標。

(5)VU可能會自動導入多余的LIB庫。

7 結束語

綜合來講,VU具備兩個功能,其一是支持eTDD(易行測試驅動開發),其二是支持各種嵌入式項目、Linux項目、VC系列項目等的C/C++單元測試,且其覆蓋標準為目前單元測試中最嚴格的歐美航空標準——MC/DC覆蓋[8]。雖然其本身還存在很多BUG,對Linux項目的支持也不是很好,但是,所有的問題VU基本都提供了對應的解決方法,使得單元測試可以做得下去,較好的解決了單元測試“落地”的問題。同時,對于一直以來困擾企業單元測試實踐的幾個核心問題,諸如:編寫測試代碼花銷較高、高標準的測試覆蓋難以實現等等,都提供了對應的解決方法,使得其對提高代碼質量和開發效率及測試效率、降低測試成本有很大的促進作用。

[1]余艷.軟件單元測試技術研究[D].武漢:華中科技大學,2004. Yu Yan.Software unit testing technology research[D].Wuhan: HuazhongUniversityofScience and Technology,2004.

[2]黃錚.基于Junit的自動單元測試環境開發及應用研究[D].上海:上海交通大學,2005. Huang Zheng.Based on the development and application of the automatic test environment unit Junit[D].Shanghai: Shanghai JiaoTongUniversity,2005.

[3]豐勵.單元測試技術研究與應用[D].武漢:華中師范大學,2008.Feng Li.Research and application of unit testing technology [D].Wuhan:HuazhongNormal University,2008.

[4]陳靜.單元測試在軟件開發過程中的作用[J].艦船電子對抗2006,6(4):31-32. Chen Jing.The role of unit testing in software development [J].shipboard electronic warfare 2006,6(4):31-32.

[5]聚光科技.單元測試指導手冊[J].聚光科技股份有限公司,2010,13(1):19-20. Focusing technology.Unit test guidance manual[J].spotlight Polytron Research ofTechnologies Inc,2010,13(1):19-20

[6]王陳,左雪梅,黃燁明.實時嵌入式系統平臺自動測試工具[J].計算機應用,2004,23(29):7-8. Wang Chen,Zuo Xuemei,Huang Yeming.Automatic testing tool for real-time embedded system platform[J].computer application,2004,23(29):7-8.

[7]CemKamer,Jack FaIk,HungQuoc Nguye,著.計算機軟件測試[M].王峰,陳杰,喻琳,譯.北京:機械工業出版社2004. Cem Kamer,Jack FaIk,Hung Quoc Nguyen Write,.Computer software testing[M].Wang Feng,Chen Jie,Yu Lin translation.Beijing:Mechanical IndustryPress,2004.

[8]趙斌.軟件測試技術經典教程[M].北京:科學出版社,2007. Zhao Bin.Software testing technology classic tutorial[M]. Beijing:Science Press,2007.

Research on Linux Project Unit Testing Method Based on VisualUnit

Tang Yuechuan,Peng Rufeng,Tu Xiaoli
(Chongqing Jinmei Communication Co.,Ltd.,Chongqing 400030,China)

This article firstly introduces basic features of VisualUnit,and then particularly details the methods of building Linux project test engineering by the tool.Finally,the author summarizes and analyses techniques and problems of the tool in using.The tool is applied to project tests and achieves good results.

Visual testing;Embedded system;Unit test;White-box test;Test project;Test instrument

10.3969/j.issn.1002-2279.2017.02.012

TP311

B

1002-2279-(2017)02-0052-04

唐躍川(1983-),男,重慶市人,軟件工程碩士,主研方向:軟件測試。

2016-10-25

主站蜘蛛池模板: 欧美精品H在线播放| 老司机久久精品视频| 女人毛片a级大学毛片免费| 国产美女91视频| 人妻精品久久无码区| 国产成人一区| 国产一区二区三区日韩精品| 一级毛片高清| 欧美精品另类| 中文字幕丝袜一区二区| 亚洲—日韩aV在线| 国产成熟女人性满足视频| 高清无码一本到东京热| 日韩精品成人网页视频在线| 青青青国产视频| 中文字幕 日韩 欧美| 精品国产www| 亚洲免费三区| 国产另类视频| 亚洲热线99精品视频| 91精品啪在线观看国产91九色| 久久香蕉国产线看精品| 日韩中文字幕免费在线观看 | 在线毛片免费| 91av成人日本不卡三区| 99久久精品国产综合婷婷| 欧美在线中文字幕| 国产亚洲精品yxsp| 97超碰精品成人国产| 免费在线国产一区二区三区精品| 久久综合伊人 六十路| 久久综合色播五月男人的天堂| 久久国语对白| 欧美成人aⅴ| 制服丝袜一区| 九九热精品在线视频| 欧美在线精品一区二区三区| 无码一区二区波多野结衣播放搜索| 久久精品免费国产大片| 国产一区二区色淫影院| 亚洲性网站| 亚洲a级在线观看| 国产又粗又猛又爽| 久操中文在线| 综合色婷婷| 中文字幕人成乱码熟女免费| 综合久久五月天| 亚洲欧美另类色图| 国产成人夜色91| 亚洲无卡视频| 一级爱做片免费观看久久| 国产欧美一区二区三区视频在线观看| 国产白浆一区二区三区视频在线| 色哟哟国产成人精品| 尤物亚洲最大AV无码网站| 久久夜色精品国产嚕嚕亚洲av| 国产后式a一视频| 午夜国产在线观看| 久久久亚洲色| 国产欧美日韩资源在线观看| 依依成人精品无v国产| 高清码无在线看| 中文毛片无遮挡播放免费| 亚洲日本中文字幕天堂网| 国产亚洲视频在线观看| 草草影院国产第一页| 欧美日本在线播放| 亚欧美国产综合| 久久久久国产精品嫩草影院| 第九色区aⅴ天堂久久香| 国产精品美女在线| 超碰91免费人妻| 午夜免费小视频| 99精品高清在线播放| 国产精品综合久久久| 亚洲区一区| 国产浮力第一页永久地址| 黑色丝袜高跟国产在线91| 好久久免费视频高清| 在线观看亚洲天堂| 91av国产在线| 婷婷成人综合|