陳天樂++李海峰
摘 要
軟件測試工作是軟件開發(fā)過程的一個(gè)重要組成部分。在軍品嵌入式軟件開發(fā)過程中,特別是在并行工程中,無法按常規(guī)的軟件工程方法開展軟件測試工作,需對軟件測試工作流程重新進(jìn)行策劃和設(shè)計(jì),以適應(yīng)軍品嵌入式軟件開發(fā)過程的特殊性。本文提出了嵌入式軟件開發(fā)過程軟件測試流程的一種思路。
【關(guān)鍵詞】嵌入式 軟件 測試 流程
隨著軟件規(guī)模和結(jié)構(gòu)復(fù)雜度的提高,軟件開發(fā)過程存在的問題逐年上升,在近幾年的軍品軟件研制過程中,軟件開發(fā)過程延期、經(jīng)費(fèi)開支超出預(yù)算等情況比比皆是,甚至出現(xiàn)項(xiàng)目失敗的極端情況,交付產(chǎn)品存在的軟件缺陷和軟件質(zhì)量問題也時(shí)常出現(xiàn)。軟件開發(fā)過程質(zhì)量控制已成為系統(tǒng)中風(fēng)險(xiǎn)最大的問題。近年來,軟件工程方法在軍品軟件開發(fā)過程中的重要性逐步被人們所認(rèn)識,其中重要的一項(xiàng)質(zhì)量控制手段就是由專門的軟件測試人員開展的獨(dú)立于開發(fā)部門的軟件測試工作。通過軟件測試來發(fā)現(xiàn)軟件開發(fā)過程中的缺陷和問題,并通過各種軟件缺陷和問題的解決以及相應(yīng)的回歸測試來提高軟件質(zhì)量。實(shí)踐證明軟件測試工作是提高軟件質(zhì)量水平的一種十分有效的方法。
由于軍品實(shí)時(shí)處理等特殊性,嵌入式軟件越來越多地用于軍用裝備中。嵌入式軟件開發(fā)過程是一個(gè)軟硬件相互支持相互作用的復(fù)雜過程,系統(tǒng)軟件功能和性能的實(shí)現(xiàn)與硬件功能和性能的實(shí)現(xiàn)是捆綁在一起的,且當(dāng)前軍品研制過程大部分采取的是并行工程,軟件開發(fā)過程中硬件平臺開發(fā)過程同步進(jìn)行,有時(shí)甚至軟件編碼完成時(shí)硬件還未完成研制?,F(xiàn)有的軟件測試程序和辦法主要針對的硬件平臺明確的獨(dú)立軟件產(chǎn)品,不能很好地解決嵌入式系統(tǒng)中軟件硬件功能實(shí)現(xiàn)上相互作用的問題。因此需針對軍品開發(fā)特點(diǎn)進(jìn)一步明確嵌入式軟件開發(fā)過程中軟件測試工作的流程、要求和規(guī)范,以適應(yīng)軍品并行工程中嵌入式軟件開發(fā)過程的特殊性。
1 嵌入式軟件的特點(diǎn)
嵌入式系統(tǒng)開發(fā)過程通常是先分別進(jìn)行軟硬件的獨(dú)立開發(fā),硬件部分獨(dú)立開發(fā)形成裸機(jī)平臺,軟件部分獨(dú)立進(jìn)行單元、部件、配置項(xiàng)開發(fā)編程,硬件平臺測試通過后,將相應(yīng)開發(fā)的軟件在該硬件平臺上進(jìn)行集成,開展各項(xiàng)功能和性能調(diào)試。
在嵌入式系統(tǒng)開發(fā)過程中底層驅(qū)動程序、操作系統(tǒng)和應(yīng)用程序的界線是不清晰的,根據(jù)需要甚至混編在一起。系統(tǒng)功能和性能要求必須在軟硬件共同作用下才能實(shí)現(xiàn),因此嵌入式軟件開發(fā)過程是軟硬件之間相互協(xié)調(diào)、互相反饋和互相測試的過程。同時(shí)由于嵌入式系統(tǒng)中軟件對硬件的依賴性,軟硬件開發(fā)各項(xiàng)功能和性能要求的實(shí)現(xiàn)需軟件和硬件結(jié)合才能得到結(jié)果,這就使得嵌入式軟件功能和性能的實(shí)現(xiàn)與外部硬件和設(shè)備聯(lián)系緊密,在大部分情況下嵌入式軟件缺乏繼承性,軟件與硬件形成一對一的關(guān)系,隨著硬件的不斷升級,必須不斷地重新開發(fā)相應(yīng)的軟件。造成軟件編程工作量大,繼承性差,另一方面,由于硬件更新速度快,又存在著軟件編制過程中缺乏硬件平臺支持的問題,往往軟件編程完成時(shí)硬件還在研發(fā)過程中,軟件編程完成后還不能確定是否能實(shí)現(xiàn)產(chǎn)品的功能和性能要求,需要在硬件平臺上完成相互的聯(lián)調(diào)測試后才能最終確定嵌入式系統(tǒng)基本的功能、性能要求是否能實(shí)現(xiàn)。
2 軟件測試過程中遇到的問題
從預(yù)防為主的角度出發(fā),軟件測試工作開展得越早對軟件的質(zhì)量控制越有利。
傳統(tǒng)的軟件測試工作分為單元測試、部件測試、配置項(xiàng)測試、系統(tǒng)集成測試四個(gè)層次,對可以脫離硬件平臺的純軟件產(chǎn)品,這一測試方法無疑是可以實(shí)現(xiàn)的,但在嵌入式軟件開發(fā)過程中,如何開展軟件測試工作遇到了一些問題,主要問題有:
(1)在嵌入式軟件開發(fā)過程中,由于產(chǎn)品功能性能的實(shí)現(xiàn)是軟硬件相互結(jié)合的過程,在軟硬件結(jié)合過程中會根據(jù)軟硬件的實(shí)際情況進(jìn)行大量的調(diào)整,在沒有通過硬件平臺驗(yàn)證以前單純對軟件進(jìn)行正式合格性測試是沒有意義的,但在貫徹預(yù)防為主的軟件質(zhì)量管理過程中又要求盡早安排軟件測試工作,如何協(xié)調(diào)這一矛盾需要進(jìn)一步的明確。
(2)對于重大修改或新研設(shè)備,由于算法、功能、性能要求沒有在實(shí)際平臺上進(jìn)行驗(yàn)證,產(chǎn)品功能性能需進(jìn)一步驗(yàn)證,其新開發(fā)的軟件一些算法、性能需要在整機(jī)功能性能試驗(yàn)期間確定、驗(yàn)證;另一方面在C3I等控制軟件開發(fā)過程中,由于各設(shè)備與指控中心均為獨(dú)立開發(fā),往往由于對接口協(xié)議理解的不一致性或協(xié)議的周全性不夠,在系統(tǒng)對接聯(lián)調(diào)過程中對軟件進(jìn)行較大改動,用早期的軟件版本進(jìn)行測試對實(shí)際軟件質(zhì)量起不到太大作用。
(3)在軟件測試工作中單元測試、部件測試、配置項(xiàng)測試、系統(tǒng)集成測試等,每項(xiàng)測試中均包含有功能測試和性能測試內(nèi)容,但在嵌入式軟件實(shí)際開發(fā)過程中由于絕大多數(shù)裝備在軟件開發(fā)過程中只有單臺套裝備,沒有測試平臺,因此對嵌入式系統(tǒng)軟件的功能測試和性能測試的安排在實(shí)際工作中無法實(shí)現(xiàn),造成了諸多矛盾。
種種矛盾和問題使嵌入式軟件測試成了無從下手的死循環(huán):一方面要求軟件必須經(jīng)過單元、部件和配置項(xiàng)測試才能與硬件結(jié)合開展調(diào)試工作,另一方面由于軟件單元、部件和配置項(xiàng)沒有裝入硬件實(shí)際平臺的測試,又無法最終確認(rèn)軟件的功能性能是否符合要求,無法完成軟件測試工作。
3 對嵌入式軟件開發(fā)過程軟件測試工作的過程分解
為解決這一問題,在貫徹海軍裝備軟件質(zhì)量管理要求和軟件質(zhì)量測試實(shí)施細(xì)則過程中,本著預(yù)防為主、實(shí)事求是的原則,針對嵌入式軟件開發(fā)的特殊情況,綜合考慮測試成本、時(shí)間、有效性,重新明確軟件測試階段與硬件研制階段的對應(yīng)關(guān)系,在軟件開發(fā)過程中,根據(jù)軟件開發(fā)過程實(shí)際情況,在承制單位軟件測試工作中軟件測試內(nèi)容重新劃分,打破單元、部件、配置項(xiàng)測試界限,各類測試不一刀切,各部分交叉分批進(jìn)行,以推進(jìn)軟件測試工作的進(jìn)展,提高軟件開發(fā)質(zhì)量水平和過程控制能力。
具體方法和思路:
(1)對軟件測試項(xiàng)目分類,打破原先單元、部件、配置項(xiàng)測試的過程模式,除按軟件測試要求中將軟件測試工作分為單元測試、部件測試、配置項(xiàng)測試、系統(tǒng)集成測試四個(gè)過程外,再將單元測試、部件測試按靜態(tài)測試、動態(tài)測試兩部分進(jìn)行區(qū)分,具體分類見表1。
(2)對單元測試、部件測試中凡能脫離硬件平臺進(jìn)行的軟件測試工作,如文檔審查、代碼審查等,統(tǒng)稱為靜態(tài)測試,這部分測試內(nèi)容均應(yīng)盡量安排在軟硬件聯(lián)調(diào)前進(jìn)行并完成回歸。
(3)對在單元測試、部件測試中需結(jié)合硬件真實(shí)環(huán)境進(jìn)行測試的內(nèi)容如性能測試等,統(tǒng)稱為動態(tài)測試,這部分測試內(nèi)容根據(jù)設(shè)備是否存在硬件平臺,是否屬成熟產(chǎn)品等實(shí)際情況,可以安排在前期進(jìn)行,也可與配置項(xiàng)測試、系統(tǒng)集成測試內(nèi)容一起安排在軟硬件調(diào)試完成,通過相關(guān)試驗(yàn)驗(yàn)證功能性能達(dá)到要求后開始。
各部分軟件測試工作具體開展時(shí)機(jī)見表2。
4 結(jié)語
要做好嵌入式軟件測試工作,即要貫徹預(yù)防為主的方針,按軟件工程的方法開展軟件開發(fā)和測試工作,又要綜合考慮軟件測試的成本、進(jìn)度、風(fēng)險(xiǎn)、有效性等因素,以保證測試的可靠性。在實(shí)際工作中我們根據(jù)實(shí)際產(chǎn)品特點(diǎn)和軟件開發(fā)過程,對通用的軟件測試過程重新進(jìn)行了分解和細(xì)化,將事前預(yù)防和提高軟件測試質(zhì)量,減少重復(fù)性勞動,提高工作效率等有機(jī)地結(jié)合起來,我們認(rèn)為這會有助于進(jìn)一步縮短開發(fā)時(shí)間,減少開發(fā)成本,進(jìn)一步提高軍品軟件質(zhì)量水平。
作者單位
1.海軍駐南京九二四廠軍事代表室 江蘇省南京市 211100
2.海軍駐北京地區(qū)電子設(shè)備代表室 北京市 100000