[0038] 圖2為GSN的具體表不符號不意圖;
[0039] 圖3為用GSN表示的D0-178C中目標的主要論證結(jié)構(gòu)示意圖;
[0040] 圖4為面向D0-178C軟件測試過程的目標驗證及證據(jù)模型提取方法流程圖;
[0041] 圖5為本發(fā)明具體實施例的GSN語句覆蓋率論證結(jié)構(gòu)示意圖;
[0042] 圖6為本發(fā)明具體實施例的證據(jù)模型示意圖。
【具體實施方式】
[0043] 下面結(jié)合附圖來具體描述本發(fā)明的優(yōu)選實施例,其中,附圖構(gòu)成本申請一部分,并 與本發(fā)明的實施例一起用于闡釋本發(fā)明的原理。
[0044] 如附圖圖4所示,面向D0-178C軟件測試過程的目標驗證及證據(jù)模型提取方法具 體包括W下步驟:
[0045] 步驟一、依據(jù)D0-178C標準,建立軟件測試內(nèi)容的目標分解論證模型結(jié)構(gòu),即GSN 模型;所述GSN模型為建立使用GSN符號表示的目標論證結(jié)構(gòu),該結(jié)構(gòu)最后會轉(zhuǎn)換成一階謂 詞論證表達邏輯;
[0046]GSN模型將最上層的總目標進行分解,最終分解到可W使用相應(yīng)證據(jù)直接證明的 子目標,并連接相應(yīng)證據(jù),用該一論證結(jié)構(gòu)來說明證據(jù)是如何論證目標的。
[0047]D0-178C標準對軟件測試過程規(guī)定需要實現(xiàn)的目標可W分為S個類別:測試用例 對需求的覆蓋率,測試用例對代碼結(jié)構(gòu)的覆蓋率,對測試用例、測試程序、測試結(jié)果的檢查。 對不同類別的目標建立不同的安全論證模型,論證依據(jù)是實現(xiàn)目標中標準規(guī)定的活動。
[0048]對D0-178C中的測試過程目標進行論證分解。其中,測試用例對代碼結(jié)構(gòu)的覆蓋 率主要包括;語句覆蓋率、分支覆蓋率、MC/DC覆蓋率、數(shù)據(jù)禪合和控制禪合覆蓋率,A級軟 件要求該四種覆蓋率必須都為100%。
[0049]如附圖圖5所示,使用GSN圖形描述了論證目標軟件結(jié)構(gòu)中語句覆蓋率符合標準 的情況。2. 1列舉出了分解該目標的依據(jù),該依據(jù)考慮到D0-178C中規(guī)定該目標需要實現(xiàn)的 活動,依據(jù)測試活動是迭代完成的特點,可W分為兩大類子目標:
[0050]第一類目標是,在源代碼或者目標代碼中存在多余代碼/停用代碼的情況,在圖5 中表示為子目標3. 2和子目標3. 3,依據(jù)D0-178C的解釋,多余代碼是不能追溯到系統(tǒng)或者 軟件需求的代碼或者數(shù)據(jù),停用代碼指的是代碼可W追溯到需求,但是并不會使用運行的 代碼,或者只會在某中特定環(huán)境下才會運行的代碼。在存在多余代碼或者停用代碼的系統(tǒng) 中,對覆蓋率的要求會有變化。
[005。 具體的變化是:
[0052] 1.如果系統(tǒng)存在多余代碼,并且該多余代碼存在源代碼或者目標代碼中,但是其 最終不會出現(xiàn)在可運行目標代碼中,那么該類多余代碼可W保留。也就是說如果存在多余 代碼,并且多余代碼不會存在在可運行目標代碼中,則該個系統(tǒng)的源代碼語句覆蓋率W及 目標代碼語句覆蓋率在除去多余代碼后為100%,可運行目標代碼覆蓋率必須為100%。
[0053] 2.如果系統(tǒng)存在停用代碼,如果停用代碼并不會使用運行,那么需要通過分析等 其他手段說明其不會被運行,此時該類代碼可能不會被測試到。也就是說,此時除去停用代 碼,源代碼語句覆蓋率,目標代碼語句覆蓋率W及可運行目標代碼覆蓋率必須為100%。
[0054] 3.如果系統(tǒng)存在停用代碼,并且停用代碼在特定的環(huán)境下會運行。那么需要編寫 測試用例運行該部分停用代碼。系統(tǒng)的源代碼語句覆蓋率,目標代碼語句覆蓋率W及可運 行目標代碼覆蓋率必須為100 %。
[00巧]系統(tǒng)可能會出現(xiàn)上述幾種情況中的一種,或者多種同時發(fā)生的情況,需要保證最 終的語句覆蓋率符合上述幾種條件。
[0056]第二類目標是,除去第一類目標的情況,剩余情況下,最終的源代碼語句覆蓋率, 目標代碼語句覆蓋率W及可運行目標代碼語句覆蓋率均為100%。
[0057] 為了實現(xiàn)該類目標,需要對當前測試用例,測試程序W及測試結(jié)果進行分析,得出 語句覆蓋率,將該結(jié)果記錄在語句覆蓋率結(jié)果中,將過程中評審和分析結(jié)果存在評審結(jié)果 中。子目標由證據(jù)語句覆蓋率結(jié)果和評審結(jié)果實現(xiàn)。
[005引語句覆蓋率=代碼中測試過的語句數(shù)量/代碼中總的語句數(shù)量*100%。
[0059]其中,測試過的語句是指,存在測試程序執(zhí)行過該語句,并且測試結(jié)果與預(yù)期結(jié)果 相同,則可w說該語句是測試過的語句。
[0060] 語句覆蓋率是底層測試、軟件集成測試、軟件硬件集成測試結(jié)束后對代碼結(jié)構(gòu)進 行分析的活動,屬于軟件開發(fā)過程性目標。
[0061] 步驟二、依據(jù)步驟一建立的GSN模型中最底層的子目標,分析提取GSN模型目標的 證據(jù)需求,依據(jù)提取的證據(jù)需求建立證據(jù)模型描述證據(jù)的組織結(jié)構(gòu),即類圖形式的證據(jù)模 型。
[0062]W附圖圖5的GSN語句覆蓋率論證結(jié)構(gòu)為例,具體說明步驟二:
[006引 2. 1參考圖5所述結(jié)構(gòu)中最終階段的子目標,確定需要的證據(jù)需求如下:
[0064]A.可運行目標代碼的語句覆蓋率為100% (存在停用代碼并且不會運行時除外)。
[0065] B.如果存在多余代碼處在目標代碼階段,并且該代碼不會在最終可運行目標代碼 中實現(xiàn),則除去多余代碼,目標代碼的語句覆蓋率為100%。
[0066] C.如果存在多余代碼處在源代碼階段,并且該代碼不會在最終可運行目標代碼中 實現(xiàn),則除去多余代碼,源代碼的語句覆蓋率為100%。
[0067]D.如果存在停用代碼,并且停用代碼在特定的配置環(huán)境下可W運行,那么不同形 式的代碼語句覆蓋率均為100%。
[0068]E.如果存在停用代碼,并且停用代碼不會運行,那么除去停用代碼W外的其他代 碼的覆蓋率均為100%。
[0069]F.關(guān)于多余代碼不會形成在可運行目標代碼階段W及停用代碼不會運行的評審 結(jié)果。
[0070] 2. 2.在構(gòu)建證據(jù)模型時,參考D0-178C中規(guī)定的數(shù)據(jù)輸出結(jié)構(gòu),W及輸出數(shù)據(jù)中 的軟件驗證結(jié)果,包括:覆蓋率分析結(jié)果W及所有的驗證分析結(jié)果;將軟件驗證結(jié)果作為 一個抽象類,再細化分為語句覆蓋率結(jié)果和評審結(jié)果。將GSN表示結(jié)構(gòu)中的證據(jù)作為類名, 將GD0-178C中規(guī)定的輸出W及輸出中包括的數(shù)據(jù)項作為類中的屬性或者方法表示出來
[0071] 2.3.在建立了語句覆蓋率結(jié)果類W及評審結(jié)果類W后,結(jié)合步驟2.1中確定的 證據(jù)需求,將步驟2. 2中建立的類中的屬性和方法進行修改,添加一定屬性或者方法項, 刪除用不到的屬性或者方法。在本例中,計算存在停用代碼或者多余代碼的情況下不同 代碼類型的語句覆蓋率,在模型中建立S個類,其中E0C表示可執(zhí)行目標代碼覆蓋類, 0C表示目標代碼覆蓋類,SC表示源代碼覆蓋類,此外為該S個類設(shè)置了S個屬性,其中 existExtraneousCode用來說明是否存在多余代碼,existDeactivatedCodel用來說明是 否存在停用代碼并且該代碼不運行,existDeactivatedCode2用來說明是否存在停用代碼 并且該代碼只在特定的環(huán)境下運行,由于該=個類都具有著=個屬性并且該=個屬性對= 個類來說含義相同,則可W講該屬性放在他們的父類語句覆蓋率結(jié)果類中,此外給該S個 類設(shè)置了函數(shù)ecover(existExtraneousCode,existDeactivatedCodel)來判斷不同情況 下代碼的覆蓋率。此外,為評審結(jié)果類添加屬性E化esult來說明多余代碼不會形成在可運 行目標代碼階段是否為真,屬性Dhesult來說明停用代碼不會被調(diào)用是否為真。
[0072] 2. 4.從上面各類的含義中可W知道類E0C,0C,SC繼承了語句覆蓋率結(jié)果類,語句 覆蓋率結(jié)果類W及評審結(jié)果類繼承了軟件驗證結(jié)果類,利用類之間的關(guān)系將該些類關(guān)聯(lián)起 來,建立完整的證據(jù)模型。
[0073] 通過上面的步驟,就建立了基于圖5的證據(jù)模型。
[0074] 步驟S、將GSN模型依據(jù)論證結(jié)構(gòu)轉(zhuǎn)換為一階謂詞表達式,W圖5的論證結(jié)構(gòu)為 例,具體包括W下步驟:
[00巧]3. 1利用模型轉(zhuǎn)換的思想,定義轉(zhuǎn)換規(guī)則,規(guī)定關(guān)鍵句式W及該關(guān)鍵句式轉(zhuǎn)換為一 階謂詞的表達形式,將GSN模型中最低層的子目標使用規(guī)定的關(guān)鍵句式表達出來,依據(jù)定 義好的轉(zhuǎn)換規(guī)則,將該子目標轉(zhuǎn)換成為一階謂詞表達形式;
[0076] 不存在A時,B是b,對應(yīng)的一階謂詞表達式是;
[0077](A=FALS巧一炬=b)
[0078]AW及B,對應(yīng)的一階謂詞表達式是:
[0079] A n B
[0080]A是真,對應(yīng)的一階謂詞表達式:
[0081] A= TRUE
[