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

自動化技術在Klocwork測試中的應用

2010-06-14 01:38:26羅春雷于紅增盧華斌
無線電工程 2010年1期
關鍵詞:設置工程

羅春雷,于紅增,盧華斌

(中國電子科技集團公司第五十四研究所,河北石家莊050081)

0 引言

在軟件開發與維護的全生命周期,各類角色的項目相關活動在很大程度上是重復性勞動,為了適應軟件企業快速發展的需要,提高軟件過程效率,計算機輔助及自動完成這些重復勞動的自動化技術在許多現代軟件研發企業得到普遍應用。自動化已成為現代軟件企業的重要標志,相關技術也成為企業重要的IT基礎設施。

Klocwork是一款優秀的源代碼靜態分析工具,支持缺陷檢查、代碼質量度量和編碼規范檢查,在軟件研發過程中很好地應用此工具可以使代碼的質量和軟件穩定性得到很大的提高。該工具提供了GUI和命令行2種操作界面,GUI界面操作簡單,可以完成大部分測試功能;而命令行界面不僅可以完成全部測試功能,也便于實現過程自動化。Klocwork自身并沒有提供自動測試框架或腳本供用戶使用,一般要借助于持續集成工具來實現自動化測試。本文提出一種基于Windows Shell腳本的Klocwork自動測試的技術框架,并給出了組建自動測試系統的實例。

1 Klocwork自動測試方法探討

自動化針對一個可重復性過程,并對其進行改善。因此,要從軟硬件設施和制度上保證軟件過程活動的最大可重復性。

企業內部實現自動化測試的進程如下:

①依靠版本管理系統,搭建測試所需的軟硬件環境;

②梳理測試步驟,規范測試流程;

③進行自動化腳本設計;

④編寫、調試測試腳本,實現自動測試;

⑤完善測試腳本,實現制度化的自動化測試。

其中進程④和⑤在一定時期內可能會有反復。

1.1 測試環境設計

基于配置管理設施搭建測試環境,在版本管理工具和軟件測試工具之間建立起穩固的聯系,既便于自動化,也可以保證被測軟件版本的正確。一個典型的基于開源Subversion源碼版本管理工具的K8(Klocwork 8.0,以下同)測試環境如圖1所示,考慮到一般情況,開發分為內場(主要開發場地)和外場(聯試或用戶現場),K8軟件測試服務器部署在內場。

圖1 基于Subversion的K8測試環境

1.2 測試流程設計

軟件測試流程在GUI操作界面和命令行操作界面中是不同的,自動化測試流程必須基于命令行操作界面來設計,并根據需要定制工作流程和添加自己的流程節點(比如獲取版本庫代碼、生成離線測試報告、測試狀態通知等)。

命令行界面中進行K8測試的基本流程如下:

①創建被測C/C++項目的構建規范文件;

②創建與被測C/C++項目對應的K8工程;

③設置K8工程屬性;

④執行構建和缺陷檢查;

⑤加載缺陷檢查結果;

⑥生成離線報告。

在這些流程節點中,由于C/C++項目有VC++6.0、VC++.net、GNU C/C++和其他 makefile等多種工程類型,要用不同的K8命令創建它們的構建規范文件,并且針對這些不同的工程類型,相應K8工程的屬性集也有差異。因此,步驟①和③有多種情況需要考慮,而其他流程節點是一致的。

將K8測試流程和版本管理工具結合起來,并考慮測試過程的意外情況處理,K8缺陷檢查流程如圖2所示,從等待版本庫準備好開始,到被測代碼沒有缺陷或沒有關注缺陷時結束。

從計劃和質量管理角度講,工程項目軟件的測試要按照軟件測試計劃進行,并需要在檢測后生成檢測報告,這超出了本文的探討范疇,不再討論。

圖2 K8缺陷檢查流程

1.3 測試命令選擇

Klocwork命令行界面提供了很多命令,其中與C/C++項目有關的命令包括:

①Kwadmin,用于管理K8工程,包括創建、刪除和屬性設置等;

②KwDspParser,為VC++6.0工程創建構建規范.out文件;

③KwVcprojParser,為VC++.net工程創建構建規范.out文件;

④Kwinject,為makefile工程創建構建規范.out文件;

⑤Kwbuildproject,按照構建規范(.out文件)進行構建和缺陷檢查;

⑥Kwinspecttrport,生成離線報告。

1.4 測試腳本架構設計

按照上述K8軟件測試流程,可以設計出3個WSH腳本模塊或腳本文件:FindAllPrj.cmd、KwCheckAll.cmd和KwCheckPrj.cmd,分別完成不同的任務,共同構成一個自動化測試框架。

FindAllPrj.cmd是一個C/C++工程文件搜索工具,完成對待檢測C/C++工程文件的搜索,并生成工程文件清單PrjList.txt。

KwCheckAll.cmd工具實現測試所需環境變量初始化,并對PrjList.txt中工程列表進行遍歷,遍歷時通過調用KwCheckPrj.cmd完成對單個工程的測試。

KwCheckPrj.cmd工具是測試功能的核心模塊,用于對單個的C/C++工程進行缺陷檢查,記錄測試過程起止時間,并分別生成txt格式和xml格式的離線測試報告。其中,VC、VC.net和Tornado工程文件的擴展名分別為dsp、sln和wpj,腳本能夠進行自動識別,并作不同的處理。在創建Klocwork工程時它以項目縮寫前綴(由KwCheckAll工具設置并在調用KwCheckPrj時傳入)來區分不同項目中的C/C++工程或測試師。

2 測試腳本的開發

2.1 測試腳本的編寫

2.1.1 設置關注缺陷集

通過一次性設置好的缺陷類型列表,所有新建的缺陷檢查工程都將按照這個關注缺陷列表進行代碼缺陷檢查。

通過設置系統關注缺陷列表,在每個K8工程創建時將默認按照它設置關注缺陷集,所有項目記錄在名為problems_default. pconf.xml的文件中,它是XML格式的,可以逐項設置。

2.1.2 獲取工程的默認配置

不管是哪種C++工程,獲取工程的默認目標是正確分析源代碼的關鍵,不同的編譯目標往往對應著不同的目標系統和軟件環境配置。

2.1.3 項目屬性設置

必須針對每個項目進行正確的屬性設置,以提高測試效率,方便結果查詢,配置結果都將存放在Projects服務器上。具體設置可以參考手冊中kwadmin set-project-property的幫助信息來獲得,也可以通過查看已有工程配置的方式來獲取。

2.1.4 實現遍歷

Windows的for/F命令可遍歷一個集合并對其中的每一個成員執行需要的命令集。

限于篇幅,下面給出添加注釋后的測試腳本KwCheckPrj.cmd的實現片段,從中可以看出它覆蓋了設計的測試流程。KwCheckPrj.cmd如下:

::創建一個K8工程

kwadmin create-project%1_%~n2-langu age c,cxx—copy-sources

::設置K8工程屬性

kwadmin—host localhost set-project-property%1_%~n2 jobs_number auto

……

::得到一個VC++6.0項目的構建文件

kwDspParser%2-c Debug-o%OUTDIR%\%~n2.out

::基于構建文件進行K8測試

kwbuildproject-S%1_%~n2-o″%table%″%OUTDIR%\%~n2.out

::將測試結果加載到K8工程數據庫

kwadmin load%1_%~n2″%table%″

::生成離線測試報告

kwinspectreport—project%1_%~n2—build build 1—xml%Report%\%~n2.xml

::利用ipmsg工具進行測試結果通知

ipmsg/msg%DstHost%″%~n2測試完成.″

2.2 腳本調試與過程優化

在腳本調試過程中,通過顯示腳本命令本身及命令輸出信息,可以及時發現并改正編碼錯誤和環境設置問題。

另外,K8測試是實踐性很強的工作,通過以下措施可以將測試過程進一步優化:

①進行K8檢查需要大量的磁盤空間,要將Project_root 設置到空閑空間較大的分區上,以免自動測試過程因為磁盤空間不足而意外中斷;

②K8默認最大需要1 024 MB的物理內存,當機器的物理內存較少時,應該修改安裝目錄中java_wrappers.conf中JVM的有關參數,設置為一個合理的數值,否則測試過程會因為頻繁的內存頁面切換而影響測試效率;

③確保測試機器上的軟件環境符合編譯需求,不能通過編譯的程序將不能進行測試;

④K8支持多CPU與多核CPU,可以實現多任務并行測試,提高測試效率。

⑤利用命令行界面的即時聊天工具(如ipmsg、FeiQ等),在軟件檢測的過程中,可以用來遠程報告軟件測試的結果和通知當前測試的工作進度。

2.3 執行測試

假設C++工程列表文件為PrjList.txt(可通過人工或用FindAllPrj命令來自動生成),進行缺陷檢測的命令為:

E:>KwCheckAll zywg PrjList.txt

其中zywg為項目或測試師名稱縮寫,這樣在生成的K8項目工程中,工程名將帶有“zywg_”的前綴,以區分不同項目或測試師。

3 效果與分析

3.1 測試能力對比

雖然Klocwork可以對VC++6.0/VC++.net工程、Tornado工程、C/C++的Makefile工程、C#工程、Java Ant工程、C/C++目錄等進行測試,但是它的GUI操作界面并不能完成全部這些功能,對C/C++的Makefile工程、C/C++目錄等的測試必須首先在命令行界面中生成build規范文件后,才能在GUI界面中繼續測試。而通過本文設計的自動化測試腳本,可以通過一個命令完成全部測試任務,這種能力是Klocwork軟件本身所不具備的。

3.2 測試效率對比

采用本文設計的自動化框架進行K8測試,可以自動完成對一系列C/C++項目的測試,即使僅僅是一個C/C++項目,由于免去了測試過程中的大量人工選擇與錄入工作,效率的提升也很明顯。

表1摘錄了某項目一次自動測試過程的部分測試記錄。

表1 自動測試記錄

這個項目在集成與系統調試階段需要每周對47個VC工程(其中有十幾大型的CORBA應用)進行一次K8測試。如果按照常規,采用人工方式,測試師就要不間斷地重復創建一個工程,啟動對它的測試,并等待測試結束,以開始對下一個工程的測試,直到完成所有的測試工作,每一輪測試沒有2個工作日是很難完成的。而改用了本文設計的自動化框架和工具后,在單核CPU環境中測試過程縮減到不足7個小時,在雙核CPU下甚至僅需2個多小時。

總之,自動化的效益非常可觀,不僅基本杜絕了過程中的人為失誤,而且可以大幅度提高生產效率。另外,自動化可以采用大量的腳本技術增強測試工具的適應能力和表現能力,使測試過程更加人性化,更好地滿足測試工作的需要。

4 結束語

根據軟件企業的發展需要,逐步實現構建、打包、安裝和測試等方面的自動化,或者更進一步,借助敏捷過程工具 (如 Electric Cloud、Bamboo、CruiseControl等)整合企業的軟件過程,最大化過程的自動化,大大降低過程的人工依賴,企業將具有更強的生命力,科研生產能力必將達到一個新的水平。

[1]羅時飛.敏捷持續集成(CruiseControl版):高效研發之道.北京:電子工業出版社,2008.

[2]高如莎.一種軟件單元測試策略[J].無線電工程,2007,37(8):54-57.

[3]杜會斌,吳曉娟,周 旭.自動測試在軍事電子技術中的應用[J].無線電工程,2005,35(9):61-64.

猜你喜歡
設置工程
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
7招教你手動設置參數
子午工程
太空探索(2016年6期)2016-07-10 12:09:06
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
工程
工程
艦船人員編制的設置與控制
工程
工程
主站蜘蛛池模板: 久久久精品无码一二三区| 国产视频久久久久| 亚洲国产成人久久精品软件| A级全黄试看30分钟小视频| 国产成人综合久久精品下载| 欧美午夜在线观看| 亚洲一区毛片| 精品亚洲国产成人AV| 99精品在线视频观看| 亚洲精品自在线拍| 国产精品开放后亚洲| 日本在线视频免费| 国产免费羞羞视频| 四虎综合网| 日韩AV无码一区| 国产精品不卡永久免费| 亚洲综合在线网| 小13箩利洗澡无码视频免费网站| 欧美另类视频一区二区三区| 欧洲免费精品视频在线| 五月激情综合网| a毛片在线| 欧美另类视频一区二区三区| 欧美高清三区| 欧美a在线| 成人精品视频一区二区在线| 四虎永久在线| 国产精品美乳| 免费午夜无码18禁无码影院| 亚洲第一福利视频导航| 996免费视频国产在线播放| 亚洲国产成人超福利久久精品| 久久精品最新免费国产成人| 中文字幕va| 日本久久久久久免费网络| 美女一区二区在线观看| 亚洲视频在线观看免费视频| 亚洲—日韩aV在线| 亚洲一区第一页| 成年人国产网站| 国产免费a级片| 真人免费一级毛片一区二区 | 国产自无码视频在线观看| 久久久久青草大香线综合精品| 色偷偷综合网| 国产av无码日韩av无码网站| 亚洲精品国产精品乱码不卞| 欧美午夜网| 亚洲av片在线免费观看| 亚洲无码视频喷水| 欧美日韩理论| 视频一本大道香蕉久在线播放| av手机版在线播放| 亚洲天堂日本| 伊人久久福利中文字幕| 日本一本在线视频| 天天干天天色综合网| 成人日韩视频| 亚洲欧美自拍中文| 国产成人在线无码免费视频| 婷婷开心中文字幕| 国产黄在线免费观看| 风韵丰满熟妇啪啪区老熟熟女| 黄色网在线免费观看| 97亚洲色综久久精品| 亚洲天堂网在线观看视频| 中文无码精品a∨在线观看| 午夜综合网| 中文字幕久久波多野结衣| 无码一区二区三区视频在线播放| 久久a毛片| 国内精品九九久久久精品 | 日韩国产另类| 久久久久免费精品国产| 国产成人av一区二区三区| 中文字幕在线免费看| 欧美成人午夜在线全部免费| 久久人与动人物A级毛片| 国产第一页免费浮力影院| 国产成人成人一区二区| 欧美成人精品在线| 久久免费观看视频|