宋潔 戴成華 李鋒 靳青梅 王晉安 陳茜



摘要:本文以某測速與裝定軟件為測試實例,用專業測試工具Testbed進行靜態分析測試,詳細闡述了該工具的測試步驟,并展示了測試結束后產生的代碼評審報告、度量報告等結果,最終測試結果必須結合人工審查分析,排除測試工具可能出現的誤判錯誤,確保最終結果準確可靠。
關鍵詞:Testbed;靜態分析;人工審查
引言
隨著計算機技術在軍用裝備軟件中的應用發展,軟件測試在整個軟件開發過程中占有非常突出的重要位置,軟件測試是一項很復雜費時的工作,僅僅依靠測試人員手工完成很困難,好的測試工具能夠提高測試效率從而降低測試成本,選擇更高的測試充分性標準進行測試從而提高軟件質量。
1 系統架構
某自行高炮測速與裝定系統由炮口裝置和炮口信號處理裝置組成。主要用于實現彈丸炮口初速測量、定向集束穿甲彈丸飛行時間修正量解算、彈丸起爆時間裝定等功能。其中炮口信號處理裝置主要由初速板、DSP板、發射板等組成,用于完成初速信號處理與計算、引信定時時間解算與編碼、編碼信號功率放大與發射、同步信號接收、系統故障診斷與CAN總線通信功能。炮口裝置包含測速線圈1、測速線圈2、裝定線圈等,用于實現彈丸出炮口感應及引信裝定功能,測速與裝定系統組成框圖如圖1所示。
測速與裝定軟件是以炮口信號處理裝置內的DSP板為硬件基礎、TMS320C6416為運行平臺、Quartus 13.1為軟件開發平臺。該軟件采用C語言作為開發語言,主要功能有實現彈丸炮口初速解算、引信定時時間解算、引信定時時間編碼控制、總線通信、自檢、故障診斷、靶距設置與查詢及彈種選擇功能。其軟件功能模塊多,接口之間數據通信較復雜,因此本次使用專業軟件測試工具Testbed來進行靜態測試分析。
2 測試概要
2.1靜態測試的概念和方法
靜態測試是一種不需要執行被測軟件的軟件測試方法,在不運行軟件的情況下對軟件進行測試,通過對程序代碼和文檔進行檢查,以發現可能存在的錯誤。靜態測試可以從編碼規則檢查、代碼結構分析和代碼評審三個方面來進行。執行靜態測試,需要軟件需求規格說明、源程序代碼以及其他軟件設計說明和用戶手冊等相關文檔,通常還需要一個或多個靜態測試工具,以盡可能多地發現程序中的隱藏錯誤,提高測試的準確率和工作效率。
2.2 Testbed靜態測試方法
Testbed是由LDRA公司開發的一款專業性軟件測試工具,具有靜態分析和動態分析功能。這里我們只對靜態分析功能進行研究。僅輸入源代碼文件,就可以根據質量模型對代碼進行分析和檢查,具體內容包括編程標準驗證、軟件度量分析和質量標準驗證、靜態數據流分析、信息流分析和交叉索引分析。
3 靜態測試
3.1 測試步驟
首先要根據相關軍用軟件測試標準和裝備軟件的軟件任務書和軟件需求規格說明等文件制定一份代碼檢查單,這是本次靜態分析的重要依據,具體內容也要結合測試工具的可分析內容來定。
選擇好要分析的源文件后,創建一個文件集,根據代碼檢查單和相關軍用軟件測試標準及規定制定好編碼規則,然后選擇要做的靜態分析項。根據本項目的測試需求分析我們選擇了列表的前四項做靜態分析,分別為主靜態分析、復雜度分析、靜態數據流分析和交叉索引,也可直接選擇快捷鍵BS、QS,將得到代碼的完整性及基本屬性的分析情況,如代碼評審報告、質量評審和設計評審等方面內容,對代碼的合規性、可維護性及可測試性進行檢查分析。確定好分析選項后就可以開始進行靜態分析測試。
3.2靜態分析結果
(a)代碼評審報告
待靜態分析過程結束后,可通過操作查看代碼評審報告。報告提供了被選編碼標準的違反情況,并用紅色顯示在源代碼中違反某條規則有多少處,可以鏈接到違反的源代碼行和對每條規則的詳細解釋,以及以函數為單位顯示違反編碼規則的條數和有多少處違反編碼規則的地方。報告單詳情如圖2所示。
(b)軟件度量分析
軟件度量分析包含McCabe圈復雜度、基本McCabe圈復雜度、HALSTEAD科學度量、扇入/扇出、代碼行注釋比例、可執行代碼行數等指標。靜態分析完成后可在質量評審報告中查看各度量元的分析結果,從各度量元的清晰性、維護性和可測性等三方面進行分析。本次總共有三個程序需要分析,分別是CANsys.c、MEMORY.c、TL16c550Test.c,具體操作步驟是選擇Individual Results→Text Results→Quality Review Report(HTML)。報告顯示三個程序均通過了測試,具體單個文件的圈復雜度等指標如圖3所示。
(c)調用關系與控制流程分析
支持圖形化方式顯示軟件調用關系與每個子程序的控制流程。通過代碼分析可得到程序模塊之間的調用關系,具體操作是選擇Set Results→Graphical Results→Static Callgraph,查看函數靜態調用關系圖,如圖4所示。
函數靜態調用關系圖反映了程序模塊之間的層次關系,從調用關系圖中可以顯示模塊的類型、調用層次和調用關系,在所要定位的模塊上右鍵選擇highligh選項,可以定位該模塊的調用模塊和被調用模塊;選擇需要查看的函數單擊,圖形化顯示控制流圖。
4 人工審查分析
根據前面制定的代碼檢查單,測試人員還需要進行人工審查判斷,對以上獲得的測試報告內容進行分析和處理。為了消除誤報的情況,需要人工核對報告來檢查代碼源,通過對報告提示的違反規則與代碼檢查單進行對照分析,為最后生成問題報告單提供有力依據。經考核,該測速與裝定軟件每千行代碼缺陷為:發現問題數/代碼總行數=8/1.512=5個,不超過每千行10個的代碼缺陷率,符合通過要求。
5 結論
本文以某測速與裝定軟件為測試對象,應用專業測試工具Testbed對主靜態分析、復雜度分析、靜態數據流分析和交叉索引等四個指標做了靜態測試分析,并對測試生成的報告結果進行了人工審查判斷。使用專業的測試工具可以直接提升測試工作效率,也可以增強軟件的可靠性和健壯性,但是測試報告結果也不能直接采納,必須進行人工審查分析,排除可能出現的誤判錯誤,確保最終結果準確可靠。
參考文獻:
[1]Testbed靜態分析使用指南.上海創景計算機系統有限公司.
[2]周培.基于LDRA Testbed的民用機載軟件靜態測試方法.[J]計算機測量與控制.2019.27(7)
[3]周永健,范明,張森,趙東旭..LDRA TestBed在CTCS2-200C擴展單元軟件測試中的應用.[J]機車電傳動.2016.05