胡多海
(南京科瑞達(dá)電子裝備有限責(zé)任公司 江蘇省南京市 211100)
隨著信息化和電子對(duì)抗技術(shù)在戰(zhàn)場(chǎng)中的應(yīng)用越來(lái)越廣泛,嵌入在各種武器裝備和系統(tǒng)中的計(jì)算機(jī)越來(lái)越多。由于軟件在設(shè)計(jì)、更改上比硬件更靈活和方便,越來(lái)越多的本由硬件來(lái)實(shí)現(xiàn)的功能改成由軟件完成,各武器裝備和系統(tǒng)的功能和性能變得越來(lái)越依賴于軟件。因此,軟件的質(zhì)量已經(jīng)成為影響系統(tǒng)質(zhì)量的重要因素。
如何提高軟件的質(zhì)量已經(jīng)成為各研制單位和相關(guān)組織面臨的重要問(wèn)題。隨著軟件工程在國(guó)內(nèi)發(fā)展的幾十年過(guò)程中,政府組織和軟件企業(yè)開(kāi)始意識(shí)到其根本問(wèn)題是在于不能有效管理其軟件過(guò)程,在無(wú)序和混亂的項(xiàng)目狀態(tài)下,組織無(wú)法從先進(jìn)的技術(shù)、方法和工具中獲益。面對(duì)軟件開(kāi)發(fā)活動(dòng),首先需要解決的是無(wú)章可循、有章不循問(wèn)題,其過(guò)程通常是隨意的、無(wú)序的。從而進(jìn)行項(xiàng)目管理顯得尤為重要。
針對(duì)以上情況,中國(guó)人民解放軍總裝備部批準(zhǔn)發(fā)布了GJB5000A-2008,軍標(biāo)中將組織的軟件研制能力成熟度分為五個(gè)等級(jí),初始級(jí)(1 級(jí)),已管理級(jí)(2 級(jí)),已定義級(jí)(3 級(jí)),已定量管理級(jí)(4 級(jí)),優(yōu)化級(jí)(5 級(jí))[1]。如圖 1 所示。
2 級(jí)中MA 過(guò)程域的目的是開(kāi)發(fā)和保持測(cè)量能力,以支持管理信息的需要。MA 過(guò)程域必需實(shí)現(xiàn)的專用目標(biāo)和專用實(shí)踐如圖 2,“SG”表示專用目標(biāo),“SP”表示專用實(shí)踐。
軟件測(cè)試,是驗(yàn)證軟件及相關(guān)文檔是否滿足用戶或設(shè)計(jì)需求,并盡可能多的發(fā)現(xiàn)潛在的問(wèn)題。以通過(guò)測(cè)試發(fā)現(xiàn)問(wèn)題為手段,以提高軟件的質(zhì)量為目的,更好的滿足用戶需求,提高軟件的可靠性。軍用軟件的研制過(guò)程中,各大軍用標(biāo)準(zhǔn)明確軟件測(cè)試是必不可少的一部分。軟件測(cè)試一般都需要進(jìn)行測(cè)試策劃、測(cè)試設(shè)計(jì)和實(shí)現(xiàn)、測(cè)試執(zhí)行以及測(cè)試總結(jié)4 個(gè)步驟[2,3]。
測(cè)試策劃,這個(gè)過(guò)程要求測(cè)試分析人員依據(jù)開(kāi)發(fā)計(jì)劃和被測(cè)試軟件有關(guān)設(shè)計(jì)文檔對(duì)被測(cè)試軟件進(jìn)行分析,以確定測(cè)試的要求和終止條件,并滿足軟件特性,獲取測(cè)試資源,必要時(shí)開(kāi)發(fā)測(cè)試軟件等,并最終形成軟件測(cè)試計(jì)劃。
測(cè)試設(shè)計(jì)和實(shí)現(xiàn),這個(gè)過(guò)程一般要求由開(kāi)發(fā)人員輔助測(cè)試人員完成。一般根據(jù)軟件測(cè)試計(jì)劃、需求或其它開(kāi)發(fā)文檔進(jìn)行測(cè)試用例的設(shè)計(jì)、獲取測(cè)試數(shù)據(jù)、確定測(cè)試順序、獲取需要的測(cè)試資源、建立有效的測(cè)試環(huán)境以及需要時(shí)編寫(xiě)測(cè)試程序,最終形成軟件測(cè)試說(shuō)明。
測(cè)試執(zhí)行,這個(gè)過(guò)程要求測(cè)試員按照已經(jīng)編制的軟件測(cè)試計(jì)劃和軟件測(cè)試說(shuō)明的要求進(jìn)行測(cè)試。在執(zhí)行過(guò)程中,測(cè)試員如實(shí)地記錄測(cè)試過(guò)程、發(fā)現(xiàn)的軟件或文檔的錯(cuò)誤,并填寫(xiě)完整測(cè)試結(jié)果,最終形成測(cè)試記錄。
測(cè)試總結(jié),這個(gè)過(guò)程要求測(cè)試分析人員根據(jù)被測(cè)軟件的設(shè)計(jì)說(shuō)明、測(cè)試計(jì)劃和說(shuō)明、測(cè)試記錄和軟件問(wèn)題記錄等,對(duì)軟件測(cè)試進(jìn)行總結(jié),最終形成軟件測(cè)試報(bào)告。
表1:MA 專用目標(biāo)和專用實(shí)踐
圖1:軍用軟件研制能力成熟度的五個(gè)等級(jí)
圖2:MA 過(guò)程域
以上4 個(gè)測(cè)試過(guò)程形成的軟件測(cè)試計(jì)劃、軟件測(cè)試說(shuō)明以及軟件測(cè)試報(bào)告3 份文檔,充分體現(xiàn)了測(cè)量分析的專用目標(biāo)和專用實(shí)踐在軟件測(cè)試中的應(yīng)用。
測(cè)量與分析的目的是開(kāi)發(fā)和保持測(cè)量能力,以支持管理信息的需要。MA包含2個(gè)專用目標(biāo),共8個(gè)專用實(shí)踐。具體分布情況見(jiàn)表 1。
表2:SG1 的應(yīng)用
圖3:函數(shù)覆蓋率
圖4:MC/DC 分析圖
圖5:MC/DC 覆蓋率圖
(1)確定測(cè)量目標(biāo):根據(jù)已標(biāo)識(shí)的信息需要和目標(biāo),建立和維護(hù)測(cè)量目標(biāo)[1,4]。
從產(chǎn)品研制過(guò)程和項(xiàng)目管理角度,掌握產(chǎn)品質(zhì)量狀況和減少總的生存周期成本為已標(biāo)識(shí)的信息需要。那么建立改進(jìn)先前的質(zhì)量水平為測(cè)量目標(biāo),并進(jìn)行維護(hù),才可以滿足已標(biāo)識(shí)的信息需要。并且,盡早發(fā)現(xiàn)代碼中的缺陷,避免后期問(wèn)題追蹤的復(fù)雜性,從而能有效縮短軟件生存周期。
至于如何達(dá)到改進(jìn)先前的質(zhì)量水平這個(gè)測(cè)量目標(biāo),就需要指明測(cè)量項(xiàng)。通過(guò)測(cè)量項(xiàng)來(lái)統(tǒng)計(jì)分析是否滿足測(cè)量目標(biāo)。
(2)指明測(cè)量項(xiàng):指明涉及測(cè)量目標(biāo)的測(cè)量項(xiàng)[1,4]。
測(cè)量項(xiàng)一般包括基本測(cè)量項(xiàng)和導(dǎo)出測(cè)量項(xiàng)。注釋率、缺陷數(shù)這些數(shù)據(jù)由直接測(cè)量獲得,為基本測(cè)量項(xiàng)。語(yǔ)句覆蓋率、分支覆蓋率、缺陷密度,這些均是通過(guò)兩個(gè)或更多基本測(cè)量項(xiàng)組合而成,為導(dǎo)出測(cè)量項(xiàng)。
(3)指明數(shù)據(jù)采集和存儲(chǔ)規(guī)程:指明將如何獲得和存儲(chǔ)測(cè)量數(shù)據(jù)[1,4]。
確保恰當(dāng)?shù)夭杉秸_的數(shù)據(jù)就要明確采集方法,明確了采集方法才能幫助進(jìn)一步澄清信息需要和測(cè)量目標(biāo)。并規(guī)定通過(guò)何種手段獲得和存儲(chǔ)數(shù)據(jù)。
(4)指明分析規(guī)程:指明如何對(duì)測(cè)量數(shù)據(jù)進(jìn)行分析和報(bào)告[1,4]。
事先指明分析規(guī)程,確保能按文檔化的測(cè)量目標(biāo)進(jìn)行合格的分析和報(bào)告。這個(gè)方法也是對(duì)實(shí)際上是否采集了必要數(shù)據(jù)的一種查驗(yàn)。
綜合以上情況,假若當(dāng)前有兩個(gè)信息需要:掌握產(chǎn)品質(zhì)量狀況和減少總的生存周期成本,那么專用目標(biāo)1 的4 個(gè)專用實(shí)踐在軟件測(cè)試中的應(yīng)用情況可見(jiàn)表 2。
(1)采集測(cè)量數(shù)據(jù):獲得規(guī)定的測(cè)量數(shù)據(jù)[1,4]。
首先,獲得基本測(cè)量項(xiàng)的數(shù)據(jù)。如缺陷數(shù),執(zhí)行測(cè)試用例通過(guò)數(shù)和不通過(guò)數(shù),執(zhí)行不通過(guò)的測(cè)試用例要分析是軟件缺陷還是測(cè)試用例設(shè)計(jì)錯(cuò)誤。當(dāng)確定為缺陷后方可參與統(tǒng)計(jì),避免數(shù)據(jù)統(tǒng)計(jì)出現(xiàn)差錯(cuò)。其次,生成導(dǎo)出測(cè)量項(xiàng)數(shù)據(jù),導(dǎo)出測(cè)量項(xiàng)的數(shù)據(jù)值都是新計(jì)算得到的。比如缺陷密度是從基本測(cè)量項(xiàng)缺陷數(shù)和有效代碼行數(shù)通過(guò)計(jì)算衍生出的導(dǎo)出測(cè)量項(xiàng)。
(2)分析測(cè)量數(shù)據(jù):分析并解釋測(cè)量數(shù)據(jù)[1,4]。
對(duì)發(fā)現(xiàn)的缺陷從嚴(yán)重等級(jí)角度分析。嚴(yán)重等級(jí)從高到低分別是致命、嚴(yán)重、一般和輕微。若致命和嚴(yán)重缺陷占比較高,需要與利益相關(guān)方一起評(píng)審結(jié)果,并給出附加分析。如表3 是某型產(chǎn)品在配置項(xiàng)測(cè)試中問(wèn)題等級(jí)統(tǒng)計(jì)情況。
對(duì)表3 中數(shù)據(jù)可進(jìn)行以下分析;
1.從行數(shù)據(jù)分析,功能測(cè)試出現(xiàn)的問(wèn)題最多,占比高達(dá)69.17%,性能測(cè)試出現(xiàn)的問(wèn)題最少,占比僅4.5%。這說(shuō)明,開(kāi)發(fā)人員以后要注意對(duì)功能的實(shí)現(xiàn)情況,同時(shí)軟件測(cè)試人員需要更多關(guān)注功能,問(wèn)題越多的地方越需要更充分的測(cè)試,以發(fā)現(xiàn)更多潛在的問(wèn)題。
2.從列數(shù)據(jù)分析,致命問(wèn)題出現(xiàn)2 個(gè),一般問(wèn)題有107 個(gè),占比高達(dá)80.45%。致命問(wèn)題也就是導(dǎo)致軟件直接退出或卡死,無(wú)法繼續(xù)使用。需要同軟件開(kāi)發(fā)人員一同分析原因,舉一反三,避免類似問(wèn)題再次發(fā)生。一般問(wèn)題多數(shù)屬于開(kāi)發(fā)人員容易忽略的部分,一般常見(jiàn)的有輸入數(shù)據(jù)的有效性未判斷,長(zhǎng)度、字符類型、特殊字符等未進(jìn)行校驗(yàn)。
從缺陷類型角度分析,分別有設(shè)計(jì)缺陷、代碼缺陷、文檔缺陷及其它。一般情況代碼缺陷居多,若出現(xiàn)過(guò)多的設(shè)計(jì)缺陷,需要進(jìn)行分析并引起重視。如表4 是某產(chǎn)品在配置項(xiàng)測(cè)試中問(wèn)題類型統(tǒng)計(jì)情況。
表3:某型產(chǎn)品配置項(xiàng)測(cè)試問(wèn)題等級(jí)統(tǒng)計(jì)
表4:某產(chǎn)品配置項(xiàng)測(cè)試問(wèn)題類型統(tǒng)計(jì)
表5:某產(chǎn)品部分源代碼
對(duì)表4 中數(shù)據(jù)可進(jìn)行以下分析:
1.從行數(shù)據(jù)比較,此處分析可參考表3 的分析1。
2.從列數(shù)據(jù)分析,代碼問(wèn)題113 個(gè),占比84.96%,而設(shè)計(jì)問(wèn)題3 個(gè),無(wú)其他問(wèn)題。這說(shuō)明該軟件從設(shè)計(jì)上,基本滿足要求,是可信的。從設(shè)計(jì)到代碼實(shí)現(xiàn)過(guò)程,代碼問(wèn)題嚴(yán)重影響軟件的質(zhì)量,直接導(dǎo)致功能未實(shí)現(xiàn)或性能未達(dá)到指標(biāo)要求。需要開(kāi)發(fā)人員自身提高對(duì)代碼的質(zhì)量審查和調(diào)試,讓問(wèn)題盡量暴露,節(jié)約開(kāi)發(fā)成本和周期,從而提高軟件質(zhì)量。
(3)存儲(chǔ)數(shù)據(jù)和結(jié)果:管理和存儲(chǔ)測(cè)量數(shù)據(jù)、測(cè)量規(guī)格說(shuō)明和分析結(jié)果[1,4]。
目前可進(jìn)行軟件測(cè)試數(shù)據(jù)管理的相關(guān)軟件比較多。比如開(kāi)源的禪道集成運(yùn)行環(huán)境軟件可以實(shí)現(xiàn)對(duì)測(cè)試用例、執(zhí)行情況、缺陷等進(jìn)行管理。這些重要的測(cè)試數(shù)據(jù)均可在測(cè)試報(bào)告上進(jìn)行存儲(chǔ)和展示。
(4)交流結(jié)果:向所有利益相關(guān)方報(bào)告測(cè)量與分析活動(dòng)的結(jié)果[1,4]。
實(shí)現(xiàn)該專用實(shí)踐可通過(guò)評(píng)審測(cè)試報(bào)告方式,在一份有效的測(cè)試報(bào)告已存儲(chǔ)足夠的測(cè)試數(shù)據(jù),應(yīng)及時(shí)、有效的向利益相關(guān)方通報(bào)測(cè)量與分析過(guò)程的結(jié)果,以支持決策并幫助采取糾正措施。
綜上所述,對(duì)任何測(cè)量數(shù)據(jù)需要經(jīng)過(guò)采集、分析、存儲(chǔ)和交流4 個(gè)過(guò)程。下面以覆蓋率為例,通過(guò)LDRA Testbed 測(cè)試工具進(jìn)行分析。表5 為某產(chǎn)品部分源代碼。
通過(guò)盡可能多的設(shè)計(jì)測(cè)試用例,可實(shí)現(xiàn)源代碼的語(yǔ)句覆蓋(Statement Coverage)、分支覆蓋或判定覆蓋(Brach/Decision Coverage)以及修正條件判定覆蓋(Modifiеd Condition/Dеcision Coverage,簡(jiǎn)稱MC/DC)均達(dá)到100%的覆蓋率,如圖3 所示。
本案例中有邏輯判斷語(yǔ)句while((val1 < 0.0) && (val2 > 0.0)),存在MC/DC 覆蓋率。若記(val1 < 0.0)為條件C1,(val2 > 0.0)為條件C2。該邏輯判斷語(yǔ)句共存在4 種真值情況,要實(shí)現(xiàn)MC/DC 的覆蓋率100%的要求,只需滿足C1 和C2 條件。從圖中可看出滿足條件C1 需要設(shè)計(jì)1 和3 兩種情形,滿足條件C2 需要設(shè)計(jì)1 和2,綜合兩個(gè)條件,只需設(shè)計(jì)3 個(gè)用例分別滿足1、2 和3 的邏輯取值情況即能實(shí)現(xiàn)該語(yǔ)句的MC/DC 覆蓋率100%。
按照以上分析設(shè)計(jì)用例并執(zhí)行,通過(guò)查看動(dòng)態(tài)覆蓋分析報(bào)告,即可看到如圖5 實(shí)現(xiàn)情況,表明已滿足條件C1 和條件C2。
通過(guò)以上方法,設(shè)計(jì)用例實(shí)現(xiàn)對(duì)所有被測(cè)函數(shù)的覆蓋率。若存在無(wú)法達(dá)到100%的應(yīng)給出合理說(shuō)明,最后統(tǒng)計(jì)所有文件的每一個(gè)函數(shù)的覆蓋率情況,形成軟件測(cè)試報(bào)告。
本文首先介紹了GJB5000A 的相關(guān)背景及軟件測(cè)試的一般過(guò)程。然后對(duì)MA 過(guò)程域的各專用目標(biāo)和專用實(shí)踐如何在軟件測(cè)試中的實(shí)施展開(kāi)了詳細(xì)討論。對(duì)軟件工程化在軟件測(cè)試中的推進(jìn)工作有指導(dǎo)作用,為提高組織的測(cè)量和分析能力提供依據(jù)。