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

        ?

        自動(dòng)化技術(shù)在Klocwork測(cè)試中的應(yīng)用

        2010-06-14 01:38:26羅春雷于紅增盧華斌
        無(wú)線電工程 2010年1期
        關(guān)鍵詞:自動(dòng)測(cè)試腳本流程

        羅春雷,于紅增,盧華斌

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

        0 引言

        在軟件開發(fā)與維護(hù)的全生命周期,各類角色的項(xiàng)目相關(guān)活動(dòng)在很大程度上是重復(fù)性勞動(dòng),為了適應(yīng)軟件企業(yè)快速發(fā)展的需要,提高軟件過(guò)程效率,計(jì)算機(jī)輔助及自動(dòng)完成這些重復(fù)勞動(dòng)的自動(dòng)化技術(shù)在許多現(xiàn)代軟件研發(fā)企業(yè)得到普遍應(yīng)用。自動(dòng)化已成為現(xiàn)代軟件企業(yè)的重要標(biāo)志,相關(guān)技術(shù)也成為企業(yè)重要的IT基礎(chǔ)設(shè)施。

        Klocwork是一款優(yōu)秀的源代碼靜態(tài)分析工具,支持缺陷檢查、代碼質(zhì)量度量和編碼規(guī)范檢查,在軟件研發(fā)過(guò)程中很好地應(yīng)用此工具可以使代碼的質(zhì)量和軟件穩(wěn)定性得到很大的提高。該工具提供了GUI和命令行2種操作界面,GUI界面操作簡(jiǎn)單,可以完成大部分測(cè)試功能;而命令行界面不僅可以完成全部測(cè)試功能,也便于實(shí)現(xiàn)過(guò)程自動(dòng)化。Klocwork自身并沒(méi)有提供自動(dòng)測(cè)試框架或腳本供用戶使用,一般要借助于持續(xù)集成工具來(lái)實(shí)現(xiàn)自動(dòng)化測(cè)試。本文提出一種基于Windows Shell腳本的Klocwork自動(dòng)測(cè)試的技術(shù)框架,并給出了組建自動(dòng)測(cè)試系統(tǒng)的實(shí)例。

        1 Klocwork自動(dòng)測(cè)試方法探討

        自動(dòng)化針對(duì)一個(gè)可重復(fù)性過(guò)程,并對(duì)其進(jìn)行改善。因此,要從軟硬件設(shè)施和制度上保證軟件過(guò)程活動(dòng)的最大可重復(fù)性。

        企業(yè)內(nèi)部實(shí)現(xiàn)自動(dòng)化測(cè)試的進(jìn)程如下:

        ①依靠版本管理系統(tǒng),搭建測(cè)試所需的軟硬件環(huán)境;

        ②梳理測(cè)試步驟,規(guī)范測(cè)試流程;

        ③進(jìn)行自動(dòng)化腳本設(shè)計(jì);

        ④編寫、調(diào)試測(cè)試腳本,實(shí)現(xiàn)自動(dòng)測(cè)試;

        ⑤完善測(cè)試腳本,實(shí)現(xiàn)制度化的自動(dòng)化測(cè)試。

        其中進(jìn)程④和⑤在一定時(shí)期內(nèi)可能會(huì)有反復(fù)。

        1.1 測(cè)試環(huán)境設(shè)計(jì)

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

        圖1 基于Subversion的K8測(cè)試環(huán)境

        1.2 測(cè)試流程設(shè)計(jì)

        軟件測(cè)試流程在GUI操作界面和命令行操作界面中是不同的,自動(dòng)化測(cè)試流程必須基于命令行操作界面來(lái)設(shè)計(jì),并根據(jù)需要定制工作流程和添加自己的流程節(jié)點(diǎn)(比如獲取版本庫(kù)代碼、生成離線測(cè)試報(bào)告、測(cè)試狀態(tài)通知等)。

        命令行界面中進(jìn)行K8測(cè)試的基本流程如下:

        ①創(chuàng)建被測(cè)C/C++項(xiàng)目的構(gòu)建規(guī)范文件;

        ②創(chuàng)建與被測(cè)C/C++項(xiàng)目對(duì)應(yīng)的K8工程;

        ③設(shè)置K8工程屬性;

        ④執(zhí)行構(gòu)建和缺陷檢查;

        ⑤加載缺陷檢查結(jié)果;

        ⑥生成離線報(bào)告。

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

        將K8測(cè)試流程和版本管理工具結(jié)合起來(lái),并考慮測(cè)試過(guò)程的意外情況處理,K8缺陷檢查流程如圖2所示,從等待版本庫(kù)準(zhǔn)備好開始,到被測(cè)代碼沒(méi)有缺陷或沒(méi)有關(guān)注缺陷時(shí)結(jié)束。

        從計(jì)劃和質(zhì)量管理角度講,工程項(xiàng)目軟件的測(cè)試要按照軟件測(cè)試計(jì)劃進(jìn)行,并需要在檢測(cè)后生成檢測(cè)報(bào)告,這超出了本文的探討范疇,不再討論。

        圖2 K8缺陷檢查流程

        1.3 測(cè)試命令選擇

        Klocwork命令行界面提供了很多命令,其中與C/C++項(xiàng)目有關(guān)的命令包括:

        ①Kwadmin,用于管理K8工程,包括創(chuàng)建、刪除和屬性設(shè)置等;

        ②KwDspParser,為VC++6.0工程創(chuàng)建構(gòu)建規(guī)范.out文件;

        ③KwVcprojParser,為VC++.net工程創(chuàng)建構(gòu)建規(guī)范.out文件;

        ④Kwinject,為makefile工程創(chuàng)建構(gòu)建規(guī)范.out文件;

        ⑤Kwbuildproject,按照構(gòu)建規(guī)范(.out文件)進(jìn)行構(gòu)建和缺陷檢查;

        ⑥Kwinspecttrport,生成離線報(bào)告。

        1.4 測(cè)試腳本架構(gòu)設(shè)計(jì)

        按照上述K8軟件測(cè)試流程,可以設(shè)計(jì)出3個(gè)WSH腳本模塊或腳本文件:FindAllPrj.cmd、KwCheckAll.cmd和KwCheckPrj.cmd,分別完成不同的任務(wù),共同構(gòu)成一個(gè)自動(dòng)化測(cè)試框架。

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

        KwCheckAll.cmd工具實(shí)現(xiàn)測(cè)試所需環(huán)境變量初始化,并對(duì)PrjList.txt中工程列表進(jìn)行遍歷,遍歷時(shí)通過(guò)調(diào)用KwCheckPrj.cmd完成對(duì)單個(gè)工程的測(cè)試。

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

        2 測(cè)試腳本的開發(fā)

        2.1 測(cè)試腳本的編寫

        2.1.1 設(shè)置關(guān)注缺陷集

        通過(guò)一次性設(shè)置好的缺陷類型列表,所有新建的缺陷檢查工程都將按照這個(gè)關(guān)注缺陷列表進(jìn)行代碼缺陷檢查。

        通過(guò)設(shè)置系統(tǒng)關(guān)注缺陷列表,在每個(gè)K8工程創(chuàng)建時(shí)將默認(rèn)按照它設(shè)置關(guān)注缺陷集,所有項(xiàng)目記錄在名為problems_default. pconf.xml的文件中,它是XML格式的,可以逐項(xiàng)設(shè)置。

        2.1.2 獲取工程的默認(rèn)配置

        不管是哪種C++工程,獲取工程的默認(rèn)目標(biāo)是正確分析源代碼的關(guān)鍵,不同的編譯目標(biāo)往往對(duì)應(yīng)著不同的目標(biāo)系統(tǒng)和軟件環(huán)境配置。

        2.1.3 項(xiàng)目屬性設(shè)置

        必須針對(duì)每個(gè)項(xiàng)目進(jìn)行正確的屬性設(shè)置,以提高測(cè)試效率,方便結(jié)果查詢,配置結(jié)果都將存放在Projects服務(wù)器上。具體設(shè)置可以參考手冊(cè)中kwadmin set-project-property的幫助信息來(lái)獲得,也可以通過(guò)查看已有工程配置的方式來(lái)獲取。

        2.1.4 實(shí)現(xiàn)遍歷

        Windows的for/F命令可遍歷一個(gè)集合并對(duì)其中的每一個(gè)成員執(zhí)行需要的命令集。

        限于篇幅,下面給出添加注釋后的測(cè)試腳本KwCheckPrj.cmd的實(shí)現(xiàn)片段,從中可以看出它覆蓋了設(shè)計(jì)的測(cè)試流程。KwCheckPrj.cmd如下:

        ::創(chuàng)建一個(gè)K8工程

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

        ::設(shè)置K8工程屬性

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

        ……

        ::得到一個(gè)VC++6.0項(xiàng)目的構(gòu)建文件

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

        ::基于構(gòu)建文件進(jìn)行K8測(cè)試

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

        ::將測(cè)試結(jié)果加載到K8工程數(shù)據(jù)庫(kù)

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

        ::生成離線測(cè)試報(bào)告

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

        ::利用ipmsg工具進(jìn)行測(cè)試結(jié)果通知

        ipmsg/msg%DstHost%″%~n2測(cè)試完成.″

        2.2 腳本調(diào)試與過(guò)程優(yōu)化

        在腳本調(diào)試過(guò)程中,通過(guò)顯示腳本命令本身及命令輸出信息,可以及時(shí)發(fā)現(xiàn)并改正編碼錯(cuò)誤和環(huán)境設(shè)置問(wèn)題。

        另外,K8測(cè)試是實(shí)踐性很強(qiáng)的工作,通過(guò)以下措施可以將測(cè)試過(guò)程進(jìn)一步優(yōu)化:

        ①進(jìn)行K8檢查需要大量的磁盤空間,要將Project_root 設(shè)置到空閑空間較大的分區(qū)上,以免自動(dòng)測(cè)試過(guò)程因?yàn)榇疟P空間不足而意外中斷;

        ②K8默認(rèn)最大需要1 024 MB的物理內(nèi)存,當(dāng)機(jī)器的物理內(nèi)存較少時(shí),應(yīng)該修改安裝目錄中java_wrappers.conf中JVM的有關(guān)參數(shù),設(shè)置為一個(gè)合理的數(shù)值,否則測(cè)試過(guò)程會(huì)因?yàn)轭l繁的內(nèi)存頁(yè)面切換而影響測(cè)試效率;

        ③確保測(cè)試機(jī)器上的軟件環(huán)境符合編譯需求,不能通過(guò)編譯的程序?qū)⒉荒苓M(jìn)行測(cè)試;

        ④K8支持多CPU與多核CPU,可以實(shí)現(xiàn)多任務(wù)并行測(cè)試,提高測(cè)試效率。

        ⑤利用命令行界面的即時(shí)聊天工具(如ipmsg、FeiQ等),在軟件檢測(cè)的過(guò)程中,可以用來(lái)遠(yuǎn)程報(bào)告軟件測(cè)試的結(jié)果和通知當(dāng)前測(cè)試的工作進(jìn)度。

        2.3 執(zhí)行測(cè)試

        假設(shè)C++工程列表文件為PrjList.txt(可通過(guò)人工或用FindAllPrj命令來(lái)自動(dòng)生成),進(jìn)行缺陷檢測(cè)的命令為:

        E:>KwCheckAll zywg PrjList.txt

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

        3 效果與分析

        3.1 測(cè)試能力對(duì)比

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

        3.2 測(cè)試效率對(duì)比

        采用本文設(shè)計(jì)的自動(dòng)化框架進(jìn)行K8測(cè)試,可以自動(dòng)完成對(duì)一系列C/C++項(xiàng)目的測(cè)試,即使僅僅是一個(gè)C/C++項(xiàng)目,由于免去了測(cè)試過(guò)程中的大量人工選擇與錄入工作,效率的提升也很明顯。

        表1摘錄了某項(xiàng)目一次自動(dòng)測(cè)試過(guò)程的部分測(cè)試記錄。

        表1 自動(dòng)測(cè)試記錄

        這個(gè)項(xiàng)目在集成與系統(tǒng)調(diào)試階段需要每周對(duì)47個(gè)VC工程(其中有十幾大型的CORBA應(yīng)用)進(jìn)行一次K8測(cè)試。如果按照常規(guī),采用人工方式,測(cè)試師就要不間斷地重復(fù)創(chuàng)建一個(gè)工程,啟動(dòng)對(duì)它的測(cè)試,并等待測(cè)試結(jié)束,以開始對(duì)下一個(gè)工程的測(cè)試,直到完成所有的測(cè)試工作,每一輪測(cè)試沒(méi)有2個(gè)工作日是很難完成的。而改用了本文設(shè)計(jì)的自動(dòng)化框架和工具后,在單核CPU環(huán)境中測(cè)試過(guò)程縮減到不足7個(gè)小時(shí),在雙核CPU下甚至僅需2個(gè)多小時(shí)。

        總之,自動(dòng)化的效益非常可觀,不僅基本杜絕了過(guò)程中的人為失誤,而且可以大幅度提高生產(chǎn)效率。另外,自動(dòng)化可以采用大量的腳本技術(shù)增強(qiáng)測(cè)試工具的適應(yīng)能力和表現(xiàn)能力,使測(cè)試過(guò)程更加人性化,更好地滿足測(cè)試工作的需要。

        4 結(jié)束語(yǔ)

        根據(jù)軟件企業(yè)的發(fā)展需要,逐步實(shí)現(xiàn)構(gòu)建、打包、安裝和測(cè)試等方面的自動(dòng)化,或者更進(jìn)一步,借助敏捷過(guò)程工具 (如 Electric Cloud、Bamboo、CruiseControl等)整合企業(yè)的軟件過(guò)程,最大化過(guò)程的自動(dòng)化,大大降低過(guò)程的人工依賴,企業(yè)將具有更強(qiáng)的生命力,科研生產(chǎn)能力必將達(dá)到一個(gè)新的水平。

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

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

        [3]杜會(huì)斌,吳曉娟,周 旭.自動(dòng)測(cè)試在軍事電子技術(shù)中的應(yīng)用[J].無(wú)線電工程,2005,35(9):61-64.

        猜你喜歡
        自動(dòng)測(cè)試腳本流程
        酒駕
        吃水果有套“清洗流程”
        安奇奇與小cool 龍(第二回)
        JXG-50S型相敏軌道電路接收器自動(dòng)測(cè)試臺(tái)
        數(shù)據(jù)庫(kù)系統(tǒng)shell腳本應(yīng)用
        可并行測(cè)試的電磁兼容自動(dòng)測(cè)試系統(tǒng)的實(shí)現(xiàn)
        關(guān)于某型雷達(dá)自動(dòng)測(cè)試系統(tǒng)的幾點(diǎn)認(rèn)識(shí)和建議
        電子制作(2018年11期)2018-08-04 03:26:00
        違反流程 致命誤判
        快樂(lè)假期
        本刊審稿流程
        偷拍网日本一区二区三区| 无码国产69精品久久久久孕妇| 国产成人无码一区二区在线观看| 久久久久亚洲女同一区二区| 中文字幕成人精品久久不卡| 亚洲精品一区二区高清| 国产一区二区三区在线电影| 久久夜色撩人精品国产小说| 日韩精品欧美激情国产一区| 中文字幕av素人专区| 五月丁香六月综合缴清无码| 亚洲中文有码字幕青青| yy111111少妇影院| 午夜理论片日本中文在线| av色欲无码人妻中文字幕| 亚洲中文久久精品无码ww16| 亚洲在战AV极品无码| 日韩免费精品在线观看| 国产精品免费_区二区三区观看| 国产精品第一二三区久久蜜芽| 米奇亚洲国产精品思久久| 中文字幕亚洲综合久久综合| 一本久久伊人热热精品中文字幕 | 精品久久综合一区二区| 青青草免费观看视频免费| 国产免费久久精品99久久| 国产超碰人人做人人爱ⅴa| 欧洲亚洲色一区二区色99| av手机免费在线观看高潮| 中文字幕人妻中文| 欧美a视频在线观看| 日本高清一区二区三区不卡| 中文字幕免费在线观看动作大片 | 色播久久人人爽人人爽人人片av| 亚洲男人天堂av在线| 亚洲女同免费在线观看| 国产一区二区三区在线电影| 狠狠狠色丁香婷婷综合激情| 亚洲色图偷拍自拍亚洲色图| 亚洲a∨无码精品色午夜| 中文字幕亚洲乱码熟女在线萌芽|