1 引言
高可靠性軟件泛指一類(lèi)軟件:該類(lèi)軟件運(yùn)行過(guò)程中若出現(xiàn)故障會(huì)引發(fā)重大災(zāi)難性事故或經(jīng)濟(jì)損失。通常航天型號(hào)軟件、銀行系統(tǒng)軟件、醫(yī)療行業(yè)軟件、通訊行業(yè)軟件等均屬此范疇。目前,越來(lái)越多的軟件企業(yè)涉及高可靠性軟件項(xiàng)目,如何保證軟件質(zhì)量成為眾多企業(yè)面臨的一個(gè)很重要的課題。這篇文章結(jié)合某航天項(xiàng)目地面應(yīng)用系統(tǒng)模型(本文命名為CraftGS),重點(diǎn)討論如何從軟件測(cè)試的角度保證此類(lèi)產(chǎn)品的軟件質(zhì)量。
2 CraftGS項(xiàng)目簡(jiǎn)介
CraftGS是一個(gè)很經(jīng)典的衛(wèi)星地面應(yīng)用系統(tǒng)模擬項(xiàng)目。它分為5個(gè)子系統(tǒng):數(shù)據(jù)接收子系統(tǒng)(DAS)、數(shù)據(jù)預(yù)處理子系統(tǒng)(DPS)、運(yùn)行管理子系統(tǒng)(OMS)、數(shù)據(jù)管理子系統(tǒng)(DMS)以及數(shù)據(jù)產(chǎn)品實(shí)現(xiàn)(DPRS)子系統(tǒng)。CraftGS的總體可靠度要求是0.95。各分系統(tǒng)分配到的可靠度指標(biāo)是如下:
分系統(tǒng)名 可靠度指標(biāo)
DAS 0.99994
DPS 0.99865
OMS 0.99910
DMS 0.99950
DPRS 0.99502
CraftGS的業(yè)務(wù)邏輯是Data Package從衛(wèi)星傳入DAS,DAS負(fù)責(zé)解包,將解包后數(shù)據(jù)傳入OMS及DPS,OMS通過(guò)DAS傳來(lái)的數(shù)據(jù)檢測(cè)衛(wèi)星是否正常運(yùn)行并負(fù)責(zé)衛(wèi)星飛行姿態(tài)調(diào)整;DPS負(fù)責(zé)調(diào)制DAS傳來(lái)的數(shù)據(jù),轉(zhuǎn)換成有意義的邏輯數(shù)據(jù)。DPS處理后的邏輯數(shù)據(jù)傳入DMS以及DPRS。其中DMS負(fù)責(zé)數(shù)據(jù)備份、數(shù)據(jù)查詢(xún)及數(shù)據(jù)鏈路維護(hù)等操作;DPRS負(fù)責(zé)將DPS處理過(guò)的邏輯數(shù)據(jù)分門(mén)別類(lèi)地轉(zhuǎn)換成數(shù)據(jù)產(chǎn)品,并封裝發(fā)布。
考慮到項(xiàng)目固有的可靠性安全性要求,CraftGS系統(tǒng)采用Java+Unix技術(shù)架構(gòu)實(shí)現(xiàn)。該架構(gòu)從編程語(yǔ)言級(jí)和系統(tǒng)級(jí)對(duì)軟件產(chǎn)品質(zhì)量做了保證。為了控制軟件產(chǎn)品開(kāi)發(fā)過(guò)程中的質(zhì)量,筆者推薦采用如下軟件測(cè)試方案。
3 測(cè)試方案:軟件驗(yàn)證技術(shù)+軟件確認(rèn)技術(shù)+軟件測(cè)試管理
CraftGS系統(tǒng)的軟件測(cè)試方案由三個(gè)部分組成,即軟件驗(yàn)證技術(shù)、軟件確認(rèn)技術(shù)和軟件測(cè)試管理技術(shù)。它們內(nèi)涵及相互之間的關(guān)系如下圖所示:YSR中國(guó)可靠性資源網(wǎng)
CraftGS測(cè)試方案
測(cè)試技術(shù)層面 測(cè)試管理層面
軟件驗(yàn)證技術(shù) 需求規(guī)格說(shuō)明驗(yàn)證 軟件測(cè)試團(tuán)隊(duì)組織管理
設(shè)計(jì)規(guī)格說(shuō)明驗(yàn)證
代碼驗(yàn)證 軟件測(cè)試計(jì)劃管理
交付驗(yàn)證
軟件確認(rèn)技術(shù) 單元測(cè)試 軟件缺陷(錯(cuò)誤)跟蹤管理
集成測(cè)試
系統(tǒng)測(cè)試 軟件測(cè)試件管理
交付測(cè)試
YSR中國(guó)可靠性資源網(wǎng)
其中,軟件驗(yàn)證技術(shù)著眼于排除軟件開(kāi)發(fā)文檔中的錯(cuò)誤。驗(yàn)證活動(dòng)涉及的文檔按開(kāi)發(fā)流程主要涉及需求規(guī)格說(shuō)明、設(shè)計(jì)規(guī)格說(shuō)明(包括概要設(shè)計(jì)規(guī)格說(shuō)明、詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明、數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)格說(shuō)明)、編碼規(guī)格說(shuō)明、產(chǎn)品交付文檔等一系列書(shū)面材料。目前驗(yàn)證技術(shù)的實(shí)施在很大程度上是依靠測(cè)試人員手工完成的。驗(yàn)證活動(dòng)視實(shí)際需要有時(shí)還會(huì)涉及到開(kāi)發(fā)人員和目標(biāo)客戶(hù),需要得到他們必要的理解和支持。驗(yàn)證測(cè)試采用的主要測(cè)試手段有:面對(duì)面質(zhì)詢(xún)、文檔抽查、非正式會(huì)議、同行評(píng)審等等。
相對(duì)于軟件驗(yàn)證技術(shù),軟件確認(rèn)技術(shù)則主要著眼于排除程序代碼中的錯(cuò)誤。活動(dòng)涉及的對(duì)象主要是程序部件的代碼或軟件成品。在實(shí)施過(guò)程中,常常按被測(cè)代碼的規(guī)模和測(cè)試所處的層次將軟件確認(rèn)測(cè)試分為四個(gè)階段,即:?jiǎn)卧獪y(cè)試(也叫類(lèi)測(cè)試)、集成測(cè)試(也叫組裝測(cè)試)、系統(tǒng)測(cè)試和交付測(cè)試。確認(rèn)測(cè)試基本上由軟件測(cè)試人員對(duì)照相關(guān)開(kāi)發(fā)文檔運(yùn)行程序獨(dú)立完成的。必要時(shí),也可讓設(shè)計(jì)人員帶領(lǐng)測(cè)試人員閱讀程序代碼共同發(fā)現(xiàn)其中的錯(cuò)誤,(即所謂代碼評(píng)審會(huì))。有意見(jiàn)認(rèn)為,在單元測(cè)試(或類(lèi)測(cè)試)階段,應(yīng)該有軟件編碼人員參與,這樣能減輕測(cè)試人員閱讀代碼障礙。原則上,測(cè)試?yán)碚摬惶岢绦蜃髡哓?fù)責(zé)把關(guān)自己編寫(xiě)的程序的質(zhì)量。在實(shí)際實(shí)施過(guò)程中,可視實(shí)際情況靈活處理。(如成對(duì)編程可能會(huì)較好的處理單元測(cè)試這個(gè)難題,上面提到的代碼評(píng)審會(huì)也是為應(yīng)對(duì)這個(gè)難題而想出的一個(gè)好辦法。),軟件確認(rèn)技術(shù)目前已經(jīng)部分地實(shí)現(xiàn)了測(cè)試工具的自動(dòng)化,市面上已有不少自動(dòng)化工具能在測(cè)試人員的輔助下完成相應(yīng)的測(cè)試工作(例如用于Java代碼單元測(cè)試的Junit工具,又如用于GUI測(cè)試的Rational Visual Test工具,等等)。
軟件驗(yàn)證技術(shù)和軟件確認(rèn)技術(shù)均屬于測(cè)試技術(shù)層面的東西。然而對(duì)于工程質(zhì)量的保證而言,光靠軟件測(cè)試技術(shù)還遠(yuǎn)遠(yuǎn)不夠,還需要技術(shù)管理層面上的東西。軟件測(cè)試管理技術(shù)的誕生正是為彌補(bǔ)這個(gè)不足。按照管理的對(duì)象不同,測(cè)試管理技術(shù)大致涵蓋軟件測(cè)試團(tuán)隊(duì)組織管理、軟件測(cè)試計(jì)劃管理、軟件缺陷(錯(cuò)誤)跟蹤管理以及軟件測(cè)試件管理四大部分。下面,筆者將結(jié)合CraftGS項(xiàng)目對(duì)該測(cè)試方案做一個(gè)詳細(xì)的詮釋。
4 在CraftGS項(xiàng)目中具體應(yīng)用上述測(cè)試方案
CraftGS五個(gè)分系統(tǒng)的開(kāi)發(fā)過(guò)程均在CraftGS測(cè)試團(tuán)隊(duì)的質(zhì)量控制下有序進(jìn)行,嚴(yán)格地實(shí)施了上述測(cè)試方案。經(jīng)專(zhuān)家評(píng)定,各分系統(tǒng)及最后集成后的系統(tǒng)總體均達(dá)到了任務(wù)書(shū)中所分配的可靠性指標(biāo)。
4.1 在CraftGS項(xiàng)目中應(yīng)用軟件驗(yàn)證技術(shù)
CraftGS項(xiàng)目中應(yīng)用的軟件驗(yàn)證技術(shù)主要包括需求規(guī)格說(shuō)明驗(yàn)證、設(shè)計(jì)規(guī)格說(shuō)明驗(yàn)證、代碼驗(yàn)證以及交付驗(yàn)證。以下逐一說(shuō)明。
需求規(guī)格說(shuō)明驗(yàn)證的主要任務(wù)是保證用戶(hù)的功能需求、業(yè)務(wù)需求、以及其他的一些需求(如非功能性需求、約束性需求等等)都已經(jīng)被分配到軟件需求規(guī)格說(shuō)明的各需求項(xiàng)中。
設(shè)計(jì)規(guī)格說(shuō)明驗(yàn)證相對(duì)需求規(guī)格說(shuō)明驗(yàn)證而言,稍微復(fù)雜些,它包括3個(gè)部分的內(nèi)容:即概要設(shè)計(jì)規(guī)格說(shuō)明驗(yàn)證、詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明驗(yàn)證以及數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)格說(shuō)明驗(yàn)證。其中概要設(shè)計(jì)規(guī)格說(shuō)明驗(yàn)證的主要任務(wù)是確保軟件需求規(guī)格說(shuō)明中的需求項(xiàng)全部已經(jīng)分配到了概要設(shè)計(jì)規(guī)格說(shuō)明的各軟件模塊之中并且無(wú)多余物,詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明驗(yàn)證的主要任務(wù)是確保概要設(shè)計(jì)規(guī)格說(shuō)明中的模塊已經(jīng)全部分配到詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明的各軟件單元之中并且無(wú)多余物,數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)格說(shuō)明雖然從范疇上講應(yīng)該屬于詳細(xì)設(shè)計(jì)規(guī)格說(shuō)明范疇,但筆者認(rèn)為因改把它獨(dú)立出來(lái)實(shí)施驗(yàn)證活動(dòng)。(數(shù)據(jù)庫(kù)設(shè)計(jì)和軟件設(shè)計(jì)畢竟有很多不同之處。)數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)格說(shuō)明驗(yàn)證的重點(diǎn)任務(wù)是驗(yàn)證數(shù)據(jù)庫(kù)與外部應(yīng)用程序的接口是否正確、數(shù)據(jù)操作實(shí)現(xiàn)界面是否清晰、數(shù)據(jù)庫(kù)整體設(shè)計(jì)是否合理、數(shù)據(jù)表設(shè)計(jì)是否符合3NF要求(如違反范式要說(shuō)明詳細(xì)理由)以及數(shù)據(jù)表中的字段(鍵)和索引的設(shè)計(jì)是否高效合理等等。完成設(shè)計(jì)規(guī)格說(shuō)明以后,下一步要做代碼驗(yàn)證。
代碼驗(yàn)證的內(nèi)容包括:代碼編寫(xiě)規(guī)范審查、代碼審查和代碼靜態(tài)分析三個(gè)部分。代碼編寫(xiě)規(guī)范審查主要是審核代碼排版的格式以及注解的格式是否符合開(kāi)發(fā)團(tuán)隊(duì)的相應(yīng)規(guī)范;代碼審查的任務(wù)主要是驗(yàn)證詳細(xì)設(shè)計(jì)中的軟件單元是否都已被代碼覆蓋并正確實(shí)現(xiàn),并且代碼中不含冗余物;代碼靜態(tài)分析技術(shù)主要任務(wù)是檢查變量或標(biāo)號(hào)的定義與使用、表達(dá)式運(yùn)算以及程序的流程設(shè)計(jì)上是否存在缺陷或錯(cuò)誤。
做完代碼驗(yàn)證以后,軟件系統(tǒng)需要依次做單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試,這部分內(nèi)容屬軟件確認(rèn)技術(shù)范疇,下面有專(zhuān)門(mén)的論述。軟件系統(tǒng)在做完系統(tǒng)測(cè)試后,就面臨著交付使用的問(wèn)題,在系統(tǒng)正式移交給用戶(hù)之前,還需要做交付驗(yàn)證和交付測(cè)試。交付測(cè)試技術(shù)下文有專(zhuān)門(mén)的論述,不贅述,這里主要談交付驗(yàn)證技術(shù)。交付驗(yàn)證包括安裝驗(yàn)證和使用驗(yàn)證兩部分內(nèi)容。其中,安裝驗(yàn)證的主要任務(wù)是保證程序能按照用戶(hù)手冊(cè)的提示正確安裝到目標(biāo)機(jī)器上,使用驗(yàn)證的主要任務(wù)是確保程序能按照用戶(hù)手冊(cè)的提示的操作正確完成某項(xiàng)功能或事務(wù)處理。這兩部分工作通常是由測(cè)試人員完成的,用以核實(shí)相關(guān)安裝和使用手冊(cè)是否正確無(wú)誤。
評(píng)論