摘 要:信息技術(shù)的發(fā)展日新月異,現(xiàn)代雷達(dá)系統(tǒng)變得日益復(fù)雜,雷達(dá)系統(tǒng)軟件測試直接影響到裝備的可靠性和質(zhì)量,使用合理的軟件測試模型可以提高測試效率。本文對典型V模型進(jìn)行了分析與研究,將敏捷方法應(yīng)用到雷達(dá)系統(tǒng)軟件測試V模型的研究與改進(jìn)中,改進(jìn)模型將軟件測試貫穿雷達(dá)系統(tǒng)軟件開發(fā)周期的各個(gè)階段,能夠盡早地發(fā)現(xiàn)軟件中的錯(cuò)誤,更好地保證軟件測試的充分性、有效性和產(chǎn)品質(zhì)量。
關(guān)鍵詞:軟件測試;雷達(dá)系統(tǒng);敏捷;V模型
隨著計(jì)算機(jī)技術(shù)以及現(xiàn)代雷達(dá)技術(shù)的迅速發(fā)展,雷達(dá)系統(tǒng)中軟件的比重越來越大,保證雷達(dá)系統(tǒng)質(zhì)量、提高系統(tǒng)可靠性成為人們關(guān)注的焦點(diǎn)。軟件測試對于雷達(dá)軟件質(zhì)量的保證、雷達(dá)系統(tǒng)可靠性的提高具有重要意義[1-2],是軟件質(zhì)量保證的一項(xiàng)關(guān)鍵活動(dòng),是最有效的排除和防止軟件缺陷與故障的手段[3-4]。本文通過研究典型的雷達(dá)系統(tǒng)軟件測試V模型以及敏捷方法的觀點(diǎn)與原則,提出一種改進(jìn)的雷達(dá)系統(tǒng)軟件測試模型,以期通過軟件測試更早發(fā)現(xiàn)問題、發(fā)現(xiàn)并解決更多的問題,保證雷達(dá)系統(tǒng)軟件質(zhì)量。
1 軟件測試模型
軟件測試是貫穿于整個(gè)軟件開發(fā)生命周期中的對軟件分析、設(shè)計(jì)以及程序進(jìn)行驗(yàn)證(verification)和確認(rèn)(validation)的活動(dòng)過程。軟件測試的原則包括以下幾點(diǎn):
⑴盡早地和不斷地進(jìn)行軟件測試(Check early, check often);
⑵測試用例應(yīng)由測試輸入數(shù)據(jù)和對應(yīng)的預(yù)期輸出結(jié)果這兩部分組成;
⑶程序員應(yīng)避免檢查自己的程序;
⑷在設(shè)計(jì)測試用例時(shí),應(yīng)當(dāng)包括合理的輸入條件和不合理的輸入條件;
⑸充分注意測試中的群集現(xiàn)象;
⑹嚴(yán)格執(zhí)行測試計(jì)劃,排除測試的隨意性;
⑺應(yīng)當(dāng)對每一個(gè)測試結(jié)果做全面檢查;
⑻妥善保存測試計(jì)劃、測試用例、出錯(cuò)統(tǒng)計(jì)和最終分析報(bào)告,為維護(hù)提供方便。
軟件測試發(fā)展至今,比較典型的測試模型有V模型、W模型、H模型。其中V模型是最具有代表性的測試模型[5],也被廣泛應(yīng)用于雷達(dá)系統(tǒng)測試過程,意在改進(jìn)軟件開發(fā)的效率和效果。如圖1所示,V模型從左到右從上至下地描述了基本的開發(fā)行為和測試過程,箭頭代表了時(shí)間方向,左邊下降的是開發(fā)過程各個(gè)階段,相對應(yīng)的是右邊上升的部分,即測試過程的各個(gè)階段。以編碼為分界把開發(fā)和測試兩個(gè)過程劃開,表達(dá)了這種模型下測試與開發(fā)相分離的思想。
V模型指出,單元測試和集成測試主要作用是驗(yàn)證程序設(shè)計(jì),開發(fā)人員和測試人員應(yīng)檢測程序的執(zhí)行是否滿足軟件設(shè)計(jì)的要求[6];而系統(tǒng)測試主要作用是驗(yàn)證系統(tǒng)設(shè)計(jì),檢驗(yàn)系統(tǒng)功能、性能的質(zhì)量是否達(dá)到系統(tǒng)設(shè)計(jì)的指標(biāo);由測試人員和用戶進(jìn)行軟件的確認(rèn)測試和驗(yàn)收測試,以確定軟件的實(shí)現(xiàn)是否滿足用戶需求或合同的要求[7]。
然而雷達(dá)系統(tǒng)軟件測試V模型存在測試起始時(shí)間晚[8]、釆用串行的測試過程以及將測試與開發(fā)分開進(jìn)行等不足。V模型僅僅把測試過程作為在需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)及編碼之后的階段,容易讓人理解為測試是軟件開發(fā)的最后一個(gè)階段,主要是針對程序進(jìn)行測試來發(fā)現(xiàn)錯(cuò)誤,而需求分析階段沒有發(fā)現(xiàn)的錯(cuò)誤一直到后期驗(yàn)證測試才被發(fā)現(xiàn)。測試的開始時(shí)間規(guī)定為編碼結(jié)束之后,這大大增加了前期錯(cuò)誤的隱藏時(shí)間,不符合盡早發(fā)現(xiàn)錯(cuò)誤的原則。
2 敏捷方法的觀點(diǎn)及原則
敏捷開發(fā)(agile development)的概念從2004年初開始流行起來,它是一種以人為本、通過迭代、循序漸進(jìn)的軟件開發(fā)方法。在2001年2月,17位軟件開發(fā)領(lǐng)域的大師發(fā)表了敏捷宣言[9],在宣言中明確提出敏捷的價(jià)值觀:個(gè)體與交互重于過程和工具;可用的軟件重于完備的文檔;客戶協(xié)作重于合同談判;響應(yīng)變化重于遵循計(jì)劃。
敏捷聯(lián)盟同時(shí)發(fā)表了敏捷的十二條原則[10],歸納這些原則,可以分析出敏捷過程具有以下幾個(gè)要點(diǎn):
⑴通過頻繁迭代與客戶形成早期的良好合作,及時(shí)反饋提高產(chǎn)品質(zhì)量。敏捷小組關(guān)注完成和交付具有用戶價(jià)值的功能,而不是孤立的任務(wù)。即使到了開發(fā)的后期,也歡迎改變需求,敏捷過程利用變化來為客戶創(chuàng)造競爭優(yōu)勢;
⑵客戶、需求人員、開發(fā)人員之間必須進(jìn)行有意義的、頻繁的交互,這樣就可以在早期及時(shí)的發(fā)現(xiàn)并解決問題;
⑶衡量功能是否實(shí)現(xiàn)的唯一標(biāo)準(zhǔn)是該功能的開發(fā)和測試均已完成,并且測試通過;
⑷使用更好的設(shè)計(jì)模式,或者輔助工具來加強(qiáng)團(tuán)隊(duì)敏捷能力。不斷學(xué)習(xí)新的技能,使得敏捷運(yùn)行得更加順暢。
敏捷方法在幾周或者幾個(gè)月的時(shí)間內(nèi)完成相對較小的功能,強(qiáng)調(diào)盡早的將可能小的并且可用的功能交付給用戶使用,并在整個(gè)項(xiàng)目周期中持續(xù)改善和增強(qiáng)。敏捷方法重視頻繁的功能交付、重視交流與溝通,并以迭代方式強(qiáng)調(diào)對變化的快速響應(yīng)能力。
3 基于敏捷方法的V模型改進(jìn)
通過對典型的雷達(dá)系統(tǒng)軟件測試模型的研究分析,在改進(jìn)和設(shè)計(jì)新模型時(shí),應(yīng)遵循以下設(shè)計(jì)原則[11]:(1)使軟件設(shè)計(jì)中的錯(cuò)誤盡可能早地暴露出來;(2)采用測試與開發(fā)并行的測試模式;(3)簡單實(shí)用原則。
針對V模型的不足,結(jié)合雷達(dá)系統(tǒng)軟件的特點(diǎn),本文基于敏捷方法的觀點(diǎn)與原則對雷達(dá)系統(tǒng)軟件測試V模型進(jìn)行改進(jìn),如圖2所示,它可以更好地滿足測試的原則,具有以下特點(diǎn)。
⑴在初始階段進(jìn)行計(jì)劃和測試設(shè)計(jì),驗(yàn)證雷達(dá)系統(tǒng)需求與設(shè)計(jì)。雷達(dá)系統(tǒng)軟件測試需要針對軟件的不同特點(diǎn),結(jié)合測試需求分析和風(fēng)險(xiǎn)分析,確定測試策略。改進(jìn)模型中測試活動(dòng)從可行性分析文檔、需求文檔的撰寫階段開始部署測試,從需求的可實(shí)現(xiàn)性考慮,進(jìn)行需求分析和設(shè)計(jì)邏輯分析,盡早發(fā)現(xiàn)設(shè)計(jì)錯(cuò)誤。
⑵將雷達(dá)系統(tǒng)軟件開發(fā)過程和測試過程并行化,測試過程與開發(fā)過程緊密結(jié)合。這使得軟件測試的各個(gè)環(huán)節(jié)不再是軟件編碼工作之后串行的后續(xù)內(nèi)容,而是與其它開發(fā)環(huán)節(jié)并行的獨(dú)立流程,這樣有利于針對雷達(dá)系統(tǒng)軟件的功能和特點(diǎn)設(shè)計(jì)高效的測試用例。強(qiáng)調(diào)測試應(yīng)和設(shè)計(jì)同時(shí)進(jìn)行,從而可以提高雷達(dá)系統(tǒng)軟件開發(fā)和測試的效率。
⑶對每一個(gè)可交付產(chǎn)品進(jìn)行測試。改進(jìn)模型的測試內(nèi)容不只包括程序的源代碼及基本的功能。重要的測試文檔,包括可行性分析文檔、需求分析文檔也需要進(jìn)行完備而有效的測試,以保證這些文檔的正確性以及可靠性。
⑷軟件的開發(fā)過程是一個(gè)循環(huán)往復(fù)的過程,相應(yīng)地軟件測試也是一個(gè)循環(huán)往復(fù)的過程,不斷修改測試設(shè)計(jì)并重新執(zhí)行測試的過程。
⑸不斷回顧、維護(hù)原有的測試用例。測試人員在編寫測試用例的同時(shí),可以編寫測試用例跟蹤矩陣(Test Case Matrix),標(biāo)注測試用例已覆蓋的功能、每個(gè)具體功能對應(yīng)的測試用例編號等,明晰測試用例覆蓋率,從而及時(shí)發(fā)現(xiàn)覆蓋率不足的功能點(diǎn),便于提高測試效率。
4 結(jié)束語
面對軟件高度集成的現(xiàn)代雷達(dá)系統(tǒng),軟件測試作為必不可少的環(huán)節(jié),對提高產(chǎn)品質(zhì)量具有重要的意義。V模型是雷達(dá)系統(tǒng)軟件測試常用模型,但存在不足之處。在測試過程中使用基于敏捷方法改進(jìn)的雷達(dá)系統(tǒng)軟件測試V模型,對雷達(dá)系統(tǒng)進(jìn)行規(guī)范、系統(tǒng)的測試,能夠及早發(fā)現(xiàn)問題并解決問題,有利于提高軟件測試效率,降低發(fā)現(xiàn)問題成本,保證雷達(dá)系統(tǒng)軟件測試的充分性、有效性和產(chǎn)品質(zhì)量。
[參考文獻(xiàn)]
[1]張玉彬.軍用軟件測試現(xiàn)狀及對策[J].裝甲兵工程學(xué)院學(xué)報(bào).2008(05):66-70.
[2]姚有文.軍用軟件質(zhì)量及其測試的探討[J].艦船電子工程.2005(4):38-41.
[3]WANG Desheng, GONG Yunzhan.On software defects[J].Application Research of Computers,2008,25(12):3531-3533(in Chinese).
[4]Paul C Jorgensen.軟件測試[M].北京:機(jī)械工業(yè)出版社.2003.
[5]戴莉萍,熊小勇.基于敏捷開發(fā)的X測試模型的研究與改進(jìn)[J].計(jì)算機(jī)工程與設(shè)計(jì).2007(9).
[6]Brain Marick.New Models for Testing Development.http://www.testing.com,Quality Week,2006.
[7]周學(xué)海,陳蓓蓓.軟件測試過程模型的改進(jìn)—并行V模型.計(jì)算機(jī)工程與應(yīng)用.2005,21(10):16-18.
[8]王元珍,付新,李東.基于并行工程的軟件測試模型研究.計(jì)算機(jī)工程.2002,2(5):45-47.
[9]The Agile Alliance.(2001).“The Agile Manifesto”,Available on-line:http://www.agilemanifesto.org/.
[10]A.Hunt,D.Thomas.The Pragmatic Programmer[M].北京:中國電力出版社.2003:124-157.
[11]James Bach. Good Enough Quality Beyond the Buzzword. IEEE Computer Society,2010:96-98.