張金環(huán),田洪濤
(中國電子科技集團公司第四十五研究所,北京,100176)
淺析設(shè)備軟件測試與質(zhì)量保證
張金環(huán),田洪濤
(中國電子科技集團公司第四十五研究所,北京,100176)
介紹了設(shè)備軟件測試目的和意義,以及傳統(tǒng)設(shè)備軟件測試存在的誤區(qū),分析了設(shè)備軟件測試各階段應(yīng)遵循的原則和保證設(shè)備軟件質(zhì)量應(yīng)在軟件開發(fā)各階段遵循的管理過程。
設(shè)備軟件測試;軟件質(zhì)量;單元測試;集成測試;系統(tǒng)測試;驗收測試
在設(shè)備制造行業(yè),為按合同及時向客戶發(fā)貨,往往留給軟件調(diào)試的時間很短,甚至沒有軟件測試的時間,然而軟件是一臺設(shè)備的靈魂,若軟件質(zhì)量得不到保證,設(shè)備質(zhì)量便得不到保證。那么,在客戶對設(shè)備質(zhì)量和服務(wù)要求越來越高的今天,設(shè)備軟件測試與質(zhì)量保證就顯得尤為重要。
設(shè)備軟件是指應(yīng)用于設(shè)備中實現(xiàn)數(shù)據(jù)采集、運動控制、數(shù)據(jù)交互及管理等功能的計算機軟件。隨著計算機技術(shù)的發(fā)展,在一個大型復(fù)雜設(shè)備中,計算機軟件所占的比例越來越高,軟件所實現(xiàn)的功能越來越強大。同時,隨著軟件的復(fù)雜程度不斷提高,設(shè)備中所暴露的缺陷也就越多。因此,軟件測試是軟件開發(fā)不可缺少的一部分,更是提高其質(zhì)量的重要手段,其目的在于:
(1)盡可能多地發(fā)現(xiàn)軟件中潛在的錯誤以及漏洞,通過檢測來排除各種錯誤和漏洞,從而避免軟件投用后由于潛在錯誤或漏洞所帶來的風(fēng)險。
(2)對軟件質(zhì)量進行檢測和評估,確定軟件可以執(zhí)行預(yù)期的要求或者軟件以正確的方式來執(zhí)行要求,以驗證軟件的質(zhì)量是否滿足用戶的需求。
(3)對軟件的生命周期進行質(zhì)量把控,通過測試來分析發(fā)生錯誤和漏洞區(qū)域以及發(fā)生的原因,測試可為軟件開發(fā)人員提供后續(xù)風(fēng)險評估所需的信息,從而幫助軟件開發(fā)者或者項目管理人員改進軟件開發(fā)過程及提高軟件質(zhì)量。
軟件測試不僅僅是對軟件本身的測試,還包括軟件開發(fā)的各環(huán)節(jié)。也就是說軟件測試的最終目的是保證整個軟件開發(fā)過程以及提交給用戶的軟件系統(tǒng)是高質(zhì)量的。
(1)軟件測試工作在軟件編碼基本結(jié)束才開始進行。一直以來多數(shù)設(shè)備軟件開發(fā)都是采用瀑布模型,如圖1所示,軟件開發(fā)人員根據(jù)設(shè)備設(shè)計方案先后做軟件需求分析、概要設(shè)計、詳細(xì)設(shè)計、編碼,完成編碼后開始測試及整機調(diào)試,設(shè)備驗收后發(fā)貨。這個模式的缺點在于測試工作往往在編碼完成之后。這樣的測試流程對整個軟件開發(fā)工作都是不利的,這使軟件人員在本來就很短的合同期限內(nèi),感覺軟件測試時間非常緊張,甚至已經(jīng)沒有了軟件的調(diào)試時間。而且隨著軟件項目規(guī)模的增大,軟件中潛在的缺陷被發(fā)現(xiàn)的越晚,后續(xù)的修改與補救成本就越高,同時也會延誤項目的開發(fā)期限,增加最終測試的難度。
(2)認(rèn)為軟件測試是為了表明軟件的正確性,只是證明軟件是否以正確的方式執(zhí)行了預(yù)期功能。如果為了表明程序是正確的而測試,就會設(shè)計一些不易暴露錯誤的測試方案;相反,如果測試是為了發(fā)現(xiàn)程序中的錯誤,就會力求設(shè)計出最能暴露錯誤的測試方案。
(3)認(rèn)為軟件測試僅僅是測試人員的事情,與參與開發(fā)的其他人員無關(guān)。大多數(shù)軟件開發(fā)人員都寧愿做編程也不愿意做測試。而事實上,測試和開發(fā)同為一個軟件項目開發(fā)中的部分,二者應(yīng)該是緊密聯(lián)系的,軟件測試同樣是開發(fā)人員的責(zé)任。一個成功的軟件測試是離不開測試人員與開發(fā)人員的交流與協(xié)商,以及系統(tǒng)分析師的配合,這樣才能提高測試的工作效率與質(zhì)量,從而提高軟件質(zhì)量。
圖1 傳統(tǒng)的瀑布模型
(4)對軟件的測試不充分,缺乏測試標(biāo)準(zhǔn)和測試工具。目前大多數(shù)軟件測試都與硬件一起進行,在軟件的驗收工作中,所謂的測試也僅僅是對預(yù)先設(shè)定的功能進行測試,而并非根據(jù)軟件開發(fā)階段進行單元測試、集成測試、系統(tǒng)測試和驗收測試等,這樣的測試達(dá)不到軟件測試的根本目的,造成軟件遺留的缺陷多、漏洞多。
現(xiàn)代的測試?yán)碚撜J(rèn)為,軟件測試要伴隨著軟件生存周期的每一個階段,是軟件生存周期的一個全過程測試。高質(zhì)量的軟件必須要經(jīng)過單元測試、集成測試、系統(tǒng)測試和驗收測試。因此,軟件測試適合采用W模型,如圖2所示,軟件開發(fā)人員在需求分析階段就為驗收測試做準(zhǔn)備,在系統(tǒng)設(shè)計、概要設(shè)計以及詳細(xì)設(shè)計階段分別為系統(tǒng)測試、集成測試和單元測試做準(zhǔn)備,做出相應(yīng)的測試計劃以及測試用例。在編碼的同時就進行單元測試,在集成、實施、交付階段分別進行集成測試、系統(tǒng)測試和驗收測試。
圖2 軟件測試W模型
單元測試是驗證軟件單元的實現(xiàn)是否和該單元的說明完全一致的相關(guān)聯(lián)的測試活動。在結(jié)構(gòu)化語言中,一般認(rèn)為一個函數(shù)就是一個單元;在面向?qū)ο笳Z言中,一個類或類方法就是一個單元。根據(jù)詳細(xì)設(shè)計階段依據(jù)軟件單元說明文檔編寫的測試用例,對重要的接口、局部數(shù)據(jù)結(jié)構(gòu)、邊界條件、獨立路徑和錯誤處理路徑,通過代碼檢查或執(zhí)行測試用例有效的進行測試。單元測試不僅要檢測代碼的錯誤,還需要測試代碼編寫是否根據(jù)詳細(xì)設(shè)計進行,其目的在于驗證代碼是否與設(shè)計相符合,跟蹤需求和實際的實現(xiàn)是否一致,發(fā)現(xiàn)設(shè)計和需求中存在的錯誤,發(fā)現(xiàn)在編碼過程中引入的錯誤。有研究表明,有效的單元測試可以發(fā)現(xiàn)70%的缺陷,越早發(fā)現(xiàn)并排除錯誤,后階段測試的工作量就越少。
集成測試是在單元測試基礎(chǔ)之上,將所有模塊按照概要設(shè)計要求組織成子系統(tǒng)或系統(tǒng)進行測試。其主要關(guān)注模塊間的數(shù)據(jù)傳遞是否正確,一個模塊的功能是否會對另外一個模塊的功能產(chǎn)生錯誤的影響,全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問題,會不會被異常修改,模塊組合起來的功能能否滿足要求,各模塊積累的誤差是否會達(dá)到不可接受的程度。簡單的說集成測試的目的是揭示構(gòu)建互操作性的錯誤,這樣系統(tǒng)測試就可以在最少可能被中斷的情況下進行。
系統(tǒng)測試是通過與系統(tǒng)的需求定義作比較,發(fā)現(xiàn)軟件與系統(tǒng)定義不符合或與之矛盾的地方,以驗證軟件系統(tǒng)的功能和性能等滿足其規(guī)格說明的要求。系統(tǒng)測試用例應(yīng)根據(jù)需求分析說明書來設(shè)計,并在實際使用環(huán)境下來運行。
驗收測試是用戶或用戶代表根據(jù)自己之前提出的要求進行檢測的過程,也就是說驗收測試并不是一項綜合性的測試,它是向用戶和用戶代表表明需求得到了滿足。同時這也是整個測試過程中的最后一個階段。
軟件工程認(rèn)為,軟件開發(fā)質(zhì)量是由軟件開發(fā)過程進行保證的。而目前在很多設(shè)備軟件開發(fā)項目中,我們都幾乎看不到完整準(zhǔn)確的客戶需求說明書,且客戶的需求經(jīng)常發(fā)生變化,追求高質(zhì)量的軟件似乎變得不太可能。因為需求說明書是引入或者產(chǎn)生缺陷最多的地方,這類文件是內(nèi)部開發(fā)人員設(shè)計開發(fā)的基礎(chǔ),也是后期軟件測試的重要標(biāo)準(zhǔn),更是設(shè)備用戶使用參考的依據(jù)??梢酝ㄟ^如圖3所示的軟件缺陷構(gòu)成比例示意圖大致說明各階段產(chǎn)生錯誤的比例,由此也看出軟件開發(fā)各階段都有可能引入缺陷,并且每個階段引入的缺陷都會對下一階段產(chǎn)生影響,在下一階段傳播演變成其他缺陷。而且越早引入的缺陷,給后期測試和修復(fù)帶來的工作量就越大,最后造成損失也就越大。
圖3 軟件缺陷構(gòu)成比
因此,我們有必要對設(shè)備軟件開發(fā)各階段做嚴(yán)格的質(zhì)量管理。
(1)在需求分析階段做需求說明和需求管理,需求說明就是執(zhí)行需求分析,定義需求說明書和驗收標(biāo)準(zhǔn),然后評審需求分析說明書和測試計劃;需求管理要做的是記錄變更請求,分析受影響的組件、估算需求變更成本,然后重新估算所有產(chǎn)品的交付日期和時間、評審受影響的組件,最后獲得客戶的批準(zhǔn)。此階段產(chǎn)生的質(zhì)量文檔應(yīng)包括軟件需求規(guī)格說明書、變更需求跟蹤記錄表、驗收測試標(biāo)準(zhǔn)、測試計劃等。
(2)在設(shè)計階段要做概要設(shè)計和詳細(xì)設(shè)計,概要設(shè)計就是要進行結(jié)構(gòu)設(shè)計和邏輯設(shè)計,然后定義包括開發(fā)標(biāo)準(zhǔn)和編碼標(biāo)準(zhǔn)在內(nèi)的項目標(biāo)準(zhǔn),創(chuàng)建系統(tǒng)和集成測試計劃,最后進行評審設(shè)計;詳細(xì)設(shè)計就是要進行類、函數(shù)、數(shù)據(jù)結(jié)構(gòu)設(shè)計,然后創(chuàng)建單元測試計劃,最后對詳細(xì)設(shè)計進行評審設(shè)計。此階段產(chǎn)生的質(zhì)量文檔應(yīng)包括概要設(shè)計說明書、詳細(xì)設(shè)計說明書,測試計劃包括系統(tǒng)測試、集成測試和單元測試,項目標(biāo)準(zhǔn)包括設(shè)計和編碼標(biāo)準(zhǔn)等。
(3)在編碼階段要制定編碼計劃、認(rèn)真閱讀開發(fā)規(guī)范、做編碼準(zhǔn)備、理解詳細(xì)設(shè)計說明書、請專家指導(dǎo),然后編寫代碼,之后進行代碼審查和代碼單元測試,最后提交代碼和更改代碼。此階段產(chǎn)生的質(zhì)量文檔應(yīng)包括編碼計劃、開發(fā)規(guī)范建議書、詳細(xì)設(shè)計疑問列表、代碼審查檢查列表、代碼審查記錄、代碼測試記錄等。
(4)在測試階段依次進行單元測試、集成測試、系統(tǒng)測試和驗收測試,單元測試實際上在編碼的同時就開始了。軟件測試是軟件質(zhì)量保證的關(guān)鍵元素,代表了規(guī)約、設(shè)計和編碼的最終檢查。此階段產(chǎn)生的質(zhì)量文檔應(yīng)包括單元測試報告、集成測試報告、系統(tǒng)測試報告、驗收測試報告等。
為了避免設(shè)備軟件缺陷,提高軟件質(zhì)量,我們應(yīng)該在設(shè)備軟件開發(fā)各階段進行質(zhì)量管理,嚴(yán)格按照W模型對軟件進行測試,讓測試工作與開發(fā)工作同時進行,要在各階段制定評審機制,嚴(yán)格審查各階段的產(chǎn)物是否與用戶要求保持一致,確保軟件質(zhì)量和設(shè)備質(zhì)量。
[1]張海藩.軟件工程導(dǎo)論(第四版)[M].北京:北京清華大學(xué)出版社,2003.
[2]袁玉宇.軟件測試與質(zhì)量保證[M].北京:北京郵電大學(xué)出版社,2008.
[3]王軼辰,殷永峰,劉斌.航電設(shè)備軟件系統(tǒng)測試過程研究[J].測控技術(shù),2004,23(8):53-55.
[4]葉皚.自動售檢票軟件測試方法及其工具應(yīng)用研究[D].上海:東華大學(xué),2010.
Analysis of Equipment Software Testing and Quality Assurance
ZHANG Jinhuan,TIAN Hongtao
(The 45thResearch Institute of CETC,Beijing 100176,China)
This paper introduces the purpose and significance of the software testing in the equipment,and the errors in the traditional software testing,and analyzes the principles to be followed and the management process to ensure the quality of equipment software in each stage of software development.
The software of equipment testing;Software quality;Unit testing;Ntegration testing;System testing;Acceptance testing
TP306
B
1004-4507(2016)01-0039-04
2015-12-04