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

C++Test在核電數據庫軟件單元測試中的應用研究

2019-06-01 10:06:30王飛向嫄
電腦知識與技術 2019年12期

王飛 向嫄

摘要:軟件單元測試是軟件測試的基礎,是保證軟件質量的一個重要階段,同時也是發現軟件缺陷的關鍵步驟,在核電數據庫軟件的測試以及范圍更廣泛的驗證和確認工作中占有重要地位。本文從單元測試的基本概念入手,介紹了單元測試的方法,然后重點闡述了利用自動化測試工具C++Test對核電數據庫軟件進行單元測試的過程。

關鍵詞:軟件單元測試;C++Test;數據庫軟件

中圖分類號:TP271 文獻標識碼:A

文章編號:1009-3044(2019)12-0001-03

開放科學(資源服務)標識碼(OSID):

The Research Application of C++ Test in Database Software of Nuclear Power Unit Testing

WANG Fei, XIANG Yuan

(China Nuclear Control System Engineering Co LTD, Beijing 100176, China)

Abstract: Software unit testing is the foundation of software testing and an important stage of software quality assurance. It is a key step in finding software defects and plays an important role in the testing of database software of the nuclear power plant and in the wider scope of the verification and validation. At first, this article gives a short introduction of unit testing and introduces the method of unit testing. Then it goes deeper into how to use C++Test to do unit testing in database software of nuclear power plant.

Key words: software unit testing; C++Test; database software

核電數據庫軟件是核電廠數字化儀控系統的重要組成部分,它相當于一個數據處理中心,起到數據交換區的作用。數據庫軟件的質量和可靠性是保障核電廠正常運轉的關鍵,而對數據庫軟件的測試是達到軟件質量目標的一個重要手段。在軟件工程實踐中,測試有助于軟件滿足核電標準中的質量和可靠性要求。作為軟件測試中一個不可或缺的組成部分,單元測試是各層次測試的基礎,是軟件驗證和確認的大框架中的一項重要活動。

本文研究了基于測試工具C++Test的軟件單元測試,主要介紹了單元測試的方法,并著重闡述了利用C++Test測試工具對核電數據庫軟件進行單元測試的方法及流程,并對測試結果進行了分析,給出了測試報告。

1 單元測試

單元測試采用的測試技術分為兩種:靜態測試和動態測試。動態測試的方法又分為白盒測試和黑盒測試,其中白盒測試為主,黑盒測試為輔。

1.1 靜態測試方法

代碼的靜態測試是單元測試的第一步,目的是盡量通過人工檢查來發現代碼的錯誤,以最小成本保證代碼中算法的邏輯正確性、清晰性、規范性、一致性、算法高效性。

靜態測試的過程:

1) 準備:測試負責人向測試人員分發代碼規范、審查標準、軟件詳細設計說明書和單元測試計劃等文檔,確定測試的代碼版本和測試環境等;

2) 代碼審查:依據相應的審查標準,仔細閱讀代碼,對照相關材料,發現和記錄問題;

3) 形成報告:將發現的問題形成(也可由測試工具輸出)靜態分析報告。

1.2 動態測試方法

動態測試的方法分為白盒測試和黑盒測試。黑盒測試又稱為功能測試、數據測試或規格測試。在不需要了解測試對象內部情況下,依據詳細設計說明書/需求規格說明書中的功能來設計和執行測試用例。白盒測試又稱結構、邏輯測試或程序測試。這種測試需要了解程序的內部情況,并依據內部構造設計和執行測試用例。單元測試時一般采用白盒測試。白盒測試測試方法有邏輯覆蓋法和基本路徑法。

2 C++Test測試工具

C++Test是一款針對C/C++的單元測試工具,使用C++Test進行單元測試,測試流程分為建立測試工程、靜態測試、動態測試和生成測試報告。每個流程都需要進行相應的配置和一些需要注意的事項。

(1)建立測試工程

建立測試工程的關鍵步驟是配置編譯器,須在Project Configuration中進行編譯器的配置,這一步非常關鍵,因為編譯器配置錯誤將導致整個測試無法進行。由于C++Test能和多種開發環境相集成,所以具體的配置應該和用戶開發環境的編譯器相一致。

(2)靜態測試

C++Test對每個規范都給出了詳細的說明和示例,通過對每一個檢測到的沖突進行分析,可以提高靜態分析的效率和正確性。但是C++Test的靜態測試只是使用編程規范對源文件進行掃描,規范不同,得到的結果也不同。因此我們應該根據項目的實際需要選擇和配置合適的測試規范,不然有可以能遺漏不少問題,另一方面,盲目的擴大測試規范可能產生大量冗余的測試結果,這也會增加測試人員的分析工作量。

(3)動態測試

C++Test能對被測單元進行詳盡的邏輯覆蓋測試,包括行覆蓋率,語句覆蓋率,塊覆蓋率,分支覆蓋率,路徑覆蓋率,條件覆蓋率,可變條件覆蓋率;同時通過將黑盒測試的大部分操作形成自動化,大大減輕了黑盒測試的負擔。

進行動態測試時,測試用例的設計應充分與覆蓋率相結合,系統分析測試用例的設計的合理性和充分性,并根據覆蓋率適當增加測試用例。

3 利用C++Test對核電數據庫軟件進行單元測試

應用上述討論的軟件單元測試方法,利用C++Test測試工具完成了核電廠數據庫軟件的單元測試。下面以核電廠數據庫軟件中添加標簽點函數AddTag.cpp為例,詳細說明C++Test進行單元測試的實現過程,并對結果進行分析。

示例程序AddTag.cpp是數據庫軟件在添加標簽點時獲取標簽ID的函數。軟件的源代碼如下:

nicInt32 CTagVector::AddTag(nicOUT nicUInt32* pTagId)

{

if (Size_ < nCapacity_)

{

*pTagId = (nicUInt32)Size_;

Size_++;

}

else if (DeletedHead_ == nicTagId_Unused)

{

nicInt32 nRet = ReAlloc();

if (nicErr(nRet))

{

return nRet;

}

*pTagId = (nicUInt32)Size_;

Size_++;

}

else

{

*pTagId = DeletedHead_;

DeletedHead_ = pData_[DeletedHead_].ParentId;

if (DeletedHead_ == nicTagId_Unused)

{

DeletedTail_ = nicTagId_Unused;

}

else

{

ACE_ASSERT(DeletedTail_ != * pTagId);

ACE_ASSERT(IsDeleted(DeletedHead_));

}

}

InitRecord(* pTagId);

++nCurTagCount_;

IsChange_ = 1;

return nicRET_OK;

}

程序的流程圖如下圖1所示。

3.1 靜態測試及結果分析

輸入新建工程名,導入工程文件,進行編譯器配置,讀取源文件,配置測試規范,進行靜態分析。。C++Test列出了源文件與規范不符的所有地方,并給出了很多詳細的信息,對其進行分析能幫助我們較快的定位錯誤和進行改進。

3.2 動態測試及結果分析

選中添加標簽點(AddTag)函數,會自動生成測試用例。自動生成的測試用例,無法滿足對代碼覆蓋率的要求,要在此基礎上對測試用例進行修改和添加[6]。如圖1所示,示例程序的代碼流程中有4個分支點,需要設計測試用例使每個分支點取真(T)、取假(F)各1次,同時由于函數調用了ReAlloc()用于分配空間的函數,需要在設計用例時對其打樁,因此,設計了7個測試用例,每個測試用例的內容和測試的分支點總結列于表1中。測試用例建立并編輯完成后,C++Test可自動依次執行每個測試用例。在測試用例執行過程中,C++Test會檢查單元模塊的實際輸出結果是否與期望值一致,統計執行每個測試用例時軟件覆蓋情況。如果測試用例中存在設計輸出值與期望值不符,則說明該單元模塊代碼存在功能錯誤;如果測試結果未實現100%覆蓋,則說明對該單元模塊的邏輯結構沒有實現完全測試[7]。從圖中可以看到測試用例對代碼的語句覆蓋、塊覆蓋、路徑覆蓋、決策覆蓋均達到了100%。

3.3 生成測試報告

C++Test的測試報告可以生成文本,以及自定義的HTML報告。這些報告將促使測試人員對軟件測試的進度進行控制,以及判斷軟件執行的對錯。

4 結論

單元測試是軟件測試的基礎,其重要性得到了廣泛的認可。C++Test是當前較為實用的單元測試軟件。本文通過運行C++Test測試工具對核電數據庫軟件進行單元測試,重點闡述了測試方法及測試流程。運用C++Test測試工具,提高了工作效率,完備了單元測試的完整性,有效地保證了核電數據庫軟件開發的代碼質量。

參考文獻:

[1] 劉樂,張奇.核電廠安全系統軟件單元測試的安全審評[J].核安全,2013:74-78.

[2] 張巍,尹海波.軟件的單元測試方法[J].光電技術應用,2006,21(2):36238.

[3] IEEE Std 610.12-1990“IEEE Standard Glossary of Software Engineering Terminology”.

[4] 朱少民.軟件測試方法和技術[M].清華大學出版社,2010:30-62.

[5] 徐宏革,郭慶,雷濤,等.白盒測試之道—C++test[M].北京航空航天大學出版社,2011:63-64.

[6] 張志成.數字化安全系統軟件單元測試中的測試用例設計策略[J].第一屆中國(國際)核電儀控技術大會,2011.

[7] 李鐸,張良駒,馮俊婷.安全軟件驗證與確認中的單元模塊測試技術[J].原子能科學技術,2008,42(6).

【通聯編輯:梁書】

主站蜘蛛池模板: 欧美在线国产| 国产成年女人特黄特色大片免费| 一级毛片免费观看久| 69av在线| 青青热久麻豆精品视频在线观看| 国产精品手机在线播放| 免费午夜无码18禁无码影院| 永久免费无码日韩视频| 一区二区在线视频免费观看| 午夜福利网址| 国产尤物视频在线| 色噜噜在线观看| 少妇高潮惨叫久久久久久| 三区在线视频| 日本免费一级视频| 亚洲AV成人一区二区三区AV| 日韩精品无码一级毛片免费| 最新日韩AV网址在线观看| 一级毛片免费不卡在线| 亚洲色欲色欲www在线观看| 久一在线视频| 五月婷婷综合色| 亚洲日韩高清在线亚洲专区| 国产精品美人久久久久久AV| 99久久精品免费看国产免费软件 | 久久久久久午夜精品| 午夜无码一区二区三区| 国产一级α片| 理论片一区| 久久综合丝袜日本网| 不卡视频国产| 欧美午夜精品| 亚洲91精品视频| 久久男人资源站| 亚洲天堂网在线观看视频| 国产精品私拍在线爆乳| 青青青草国产| 国产69精品久久| 欧美在线天堂| 色综合网址| 思思99热精品在线| 欧美性色综合网| 国产啪在线| 中文字幕在线视频免费| 成人福利在线看| 欧美中文字幕在线二区| 国精品91人妻无码一区二区三区| 99久久精品久久久久久婷婷| 美女啪啪无遮挡| 亚洲欧美一级一级a| 毛片在线播放网址| AV无码无在线观看免费| 中文字幕波多野不卡一区| 久久精品欧美一区二区| 国产波多野结衣中文在线播放| 亚洲精品卡2卡3卡4卡5卡区| 国产丝袜一区二区三区视频免下载| 另类综合视频| 日韩不卡高清视频| 2022国产91精品久久久久久| 波多野结衣亚洲一区| 久久精品电影| 成人a免费α片在线视频网站| 99这里只有精品在线| 午夜视频免费试看| 欧美一区二区自偷自拍视频| 麻豆精品在线视频| 中日韩欧亚无码视频| av免费在线观看美女叉开腿| 国产在线视频导航| 免费人成网站在线观看欧美| 免费一级成人毛片| 亚洲欧洲自拍拍偷午夜色无码| 日本午夜三级| 精品国产三级在线观看| 国产一区二区视频在线| 97超碰精品成人国产| 中文字幕亚洲精品2页| 大香网伊人久久综合网2020| 综合五月天网| 试看120秒男女啪啪免费| 国产精品午夜福利麻豆|