徐白 余慧敏 周楷林 李芳芳
摘要:該文從一般性代碼審查出發(fā),對代碼審查過程進(jìn)行論述,指出嵌入式彈載軟件著重需要考慮的審查內(nèi)容和方法,對發(fā)現(xiàn)軟件問題,提升測試效果,提高軟件質(zhì)量有一定的參考價(jià)值。
關(guān)鍵詞:嵌入式彈載軟件,軟件測試,代碼審查
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)10-0240-02
Abstract: This paper shows how to do document inspection and code review, demonstrates steps in designing test cases for initialization, system fuction, interface, boundary, surplus, security and strength. In particular, it highlights the points that should pay more attention to in the testing of embeded software running on missiles and the corresponding test method. These have some referential value in debuging and in improving the quality of software.
Key words: embeded Missile-loaded software; software testing; code review
1 概述
軟件測試是將軟件交付給客戶之前所必須完成的重要步驟,在軟件的正確性證明尚未得到根本驗(yàn)證情況下,軟件測試仍是發(fā)現(xiàn)軟件錯(cuò)誤(缺陷)的重要手段[1-2]。通過測試發(fā)現(xiàn)軟件缺陷,為產(chǎn)品質(zhì)量和評價(jià)提供依據(jù)。對于嵌入式軟件,代碼審查是發(fā)現(xiàn)軟件問題的重要手段,而且代碼審查實(shí)現(xiàn)在動(dòng)態(tài)測試之前,從節(jié)約測試資源和提高測試效率來看,做好代碼審查工作,是發(fā)現(xiàn)軟件問題,提高軟件質(zhì)量的重要環(huán)節(jié)。
在航天航空領(lǐng)域產(chǎn)品中,同一系列的軟件有著相同或相似的專業(yè)背景,可應(yīng)用于不同型號,軟件的代碼可重用率較高,或者是實(shí)現(xiàn)的功能類似可借鑒率比較高。在一個(gè)型號做完代碼審查后發(fā)現(xiàn)的錯(cuò)誤,可以舉一反三應(yīng)用于其他項(xiàng)目中[3],從而對同一領(lǐng)域中的代碼審查工作進(jìn)行相關(guān)總結(jié),對后續(xù)其他項(xiàng)目的開展來說,可一定程度提高效率。
2 代碼審查過程
一般性代碼審查:作為嵌入式軟件特別是彈載軟件測評,代碼審查是檢驗(yàn)軟件問題的重要手段之一,主要檢查代碼和設(shè)計(jì)是否一致,并配合靜態(tài)分析工具進(jìn)行相應(yīng)靜態(tài)分析,從某種程度上篩選一定量的代碼錯(cuò)誤。
彈載軟件的代碼審查工作一般結(jié)合代碼審查單進(jìn)行審查,可從以下幾點(diǎn)易出錯(cuò)的情況檢查代碼的正確合理規(guī)范性:企圖讀取未初始化的變量,對空指針和越界指針的引用,對超界限數(shù)組的訪問,非法的算數(shù)運(yùn)算(除零錯(cuò)誤,負(fù)數(shù)開方,)整數(shù)和浮點(diǎn)數(shù)的上溢出或下溢出。多線程應(yīng)用中未保護(hù)數(shù)據(jù)的訪問沖突,不可達(dá)到的代碼。
在彈載軟件測評中代碼審查除進(jìn)行一般性代碼審查外,還需要結(jié)合彈載軟件特性,有針對性地進(jìn)行特定審查,可從如下幾方面考慮。
1)初始化檢查
初始化若不正確,定將影響到后面具體功能。初始化工作包括CPU初始化,外設(shè)初始化,數(shù)據(jù)初始化。
定時(shí)器初始化,查看定時(shí)器控制寄存器配置,周期配置是否正確;
關(guān)鍵變量初始化:各關(guān)鍵變量初始值設(shè)置是否合理,比如系統(tǒng)默認(rèn)工作參數(shù)初始值,故障標(biāo)志位初始值等;
中斷初始化:包括中斷觸發(fā)方式,中斷優(yōu)先級,中斷使能,中斷通道映射等設(shè)置是否正確。
接口初始化:對于彈載軟件可從串口通信、CAN接口通訊、1553通訊進(jìn)行審查。 串口通訊查看波特率、字符格式和校驗(yàn)位初始設(shè)置是否正確。CAN接口查看接口參數(shù)中CAN控制器設(shè)置是否正確(BasicCAN模式和PeliCAN模式)。1553通訊中查看發(fā)送、接收地址,發(fā)送接收傳輸方式設(shè)置是否正確。
其他初始化要求:若需求中有對初始化的量值的具體描述,需按要求一一審查,比如對D/A,D/O,RS422,GB289A等初始化特殊要求輸出。
2)系統(tǒng)功能代碼審查
系統(tǒng)功能的代碼審查是指依據(jù)設(shè)計(jì)方給的需求、任務(wù)書、數(shù)學(xué)模型等,從功能方面檢查軟件的實(shí)現(xiàn)是否與需求和任務(wù)書中要求的一致。這個(gè)是整個(gè)彈載軟件測試的核心和重點(diǎn),依據(jù)軟件不同功能,基本可分為彈前自檢、準(zhǔn)備、激活、發(fā)射階段的功能檢查和彈離架后飛行控制功能檢查。在整個(gè)飛行過程的各階段還需驗(yàn)證軟件和各子系統(tǒng)數(shù)據(jù)交互是否正確,且與任務(wù)書和數(shù)學(xué)模型及接口協(xié)議等要求保持一致。
3)通信接口代碼檢查,
接口代碼審查的工作主要在于外部接口,外部接口指系統(tǒng)外部和其他設(shè)備有通訊的接口。主要依據(jù)設(shè)計(jì)方出具的接口協(xié)議,進(jìn)行一一檢查。包括數(shù)據(jù)交互速率、波特率、數(shù)據(jù)交互周期、交互吞吐量確認(rèn)其設(shè)置是否正確;
對于異常數(shù)據(jù)包處理,查看軟件在異常幀情況下是否處理得當(dāng),軟件是使用默認(rèn)值還是使用上拍保留值。
對于幀頭,若接收緩存為循環(huán)隊(duì)列時(shí)查看是否使用長幀頭,或幀頭是否設(shè)置合理。對于幀長度,若有定義則建議識別,需注意接收緩存的數(shù)組長度定義的匹配性,以防止溢出。對于幀內(nèi)容主要指命令字信息和數(shù)據(jù)信息檢查,接收數(shù)據(jù)時(shí)審查數(shù)組數(shù)據(jù)計(jì)數(shù)變量的復(fù)位、清零等是否合理。對協(xié)議中各字段字節(jié)內(nèi)容,所表達(dá)的定義,比例尺、量程,進(jìn)行逐一驗(yàn)證,查看數(shù)據(jù)內(nèi)容和比例尺是否能正確表示數(shù)據(jù)量程,注意數(shù)據(jù)接收后拼接過程是否能正確表達(dá)正負(fù)數(shù)、小數(shù),是否能表達(dá)所要求的最大量程并符合協(xié)議的要求。還需特別注意數(shù)據(jù)是否需要限幅。對于幀校驗(yàn),需查看檢驗(yàn)方式是否正確,雙方對于數(shù)據(jù)校驗(yàn)的約定是否一致;起算位是否一致。對于通信周期,需注意用戶自定義通信數(shù)據(jù)包周期需與硬件環(huán)境相匹配。
4)性能方面檢查
性能方面的檢查包括任務(wù)書需求等要求的時(shí)間特性以及超時(shí)處理的相關(guān)安全處理措施的檢查。
對于時(shí)間特性,很多情況下按照周期次數(shù)實(shí)現(xiàn)的,比如彈動(dòng)后x(ms)進(jìn)行某操作,主函數(shù)一個(gè)調(diào)用周期為y(ms),那么在程序中實(shí)現(xiàn)為x/y次,在邊界處理上要留心細(xì)致。在使用周期計(jì)算時(shí),要注意具體使用的哪個(gè)周期,從而判定是否符合具體要求的時(shí)間界定。對于含中斷的彈載軟件,需要檢查定時(shí)中斷的周期等重要參數(shù)。
5)邊界點(diǎn)檢查
對于彈載軟件的邊界點(diǎn)檢查可從以下兩方面出發(fā),關(guān)鍵狀態(tài)轉(zhuǎn)換邊界的檢查:比如點(diǎn)火條件,離架條件;功能界限的邊界檢查:如彈飛后轉(zhuǎn)階段的各條件邊界,它是考察的彈載重要指標(biāo)和條件。
6)安全性檢查
數(shù)據(jù)安全性檢查:檢查軟件對關(guān)鍵數(shù)據(jù)進(jìn)行校驗(yàn)、保護(hù),如防除零保護(hù),剔野保護(hù),輸出參數(shù)保護(hù)如舵輸出、各電壓值輸出等以防止損害硬件;
功能安全性檢查:對于嵌入式彈載軟件著重查看彈動(dòng)保護(hù),點(diǎn)火保護(hù),火工品保護(hù)等重要處理是否設(shè)計(jì)正確合理,對關(guān)鍵信號是否進(jìn)行了復(fù)位操作;為防止軟件跑飛,查看軟件相應(yīng)看門狗保護(hù)。
接口的安全性檢查:檢查是否有通信握手,通訊超時(shí)處理、通訊周期匹配,通訊故障設(shè)置是否正確。
3 工程應(yīng)用
項(xiàng)目組使用本文提出的代碼審查方法與傳統(tǒng)的方法進(jìn)行對比,通過對多個(gè)型號彈載計(jì)算機(jī)軟件進(jìn)行測試,對比結(jié)果如下表所示:
通過對比可以看出,本文所提出的代碼審查方法可明顯提高測試質(zhì)量和測試效率。
4 結(jié)束語
以上就系統(tǒng)初始化,系統(tǒng)功能,接口、性能、邊界、安全性對嵌入式彈載軟件中代碼審查工作作了論述,有利于測試人員在測試過程更快適應(yīng)相關(guān)型號測評工作,從而進(jìn)一步做好嵌入式彈載軟件測試,以提高軟件質(zhì)量及其可靠性。
參考文獻(xiàn):
[1] Ron Patto.軟件測試[M]. 張小松, 王玨, 曹躍, 等,譯. 北京: 機(jī)械工業(yè)出版社, 2006.
[2] 柳純錄. 軟件評測師教程[M]. 北京: 清華大學(xué)出版社, 2005.
[3] 張建飛.基于航空領(lǐng)域嵌入式軟件代碼審查的研究[J]. 科技創(chuàng)新與生產(chǎn)力, 2015(10): 108-109.