專利名稱:一種功能覆蓋率測試度量系統和方法
技術領域:
本發(fā)明涉及電子及通信領域的測試技術,特別是涉及一種功能覆蓋率測試度量系統和方法。
背景技術:
在電子及通信軟件系統測試領域,通常都是用代碼覆蓋進行測試,代碼覆蓋無論是概念還是在得到電子設計自動化(Electronic Design Automotic,EDA)工具的支持方面,都已經非常成熟,代碼覆蓋率的度量在設計與測試激勵確定以后就唯一確定了,然而,盡管能夠達到100%的代碼覆蓋率,但在測試的過程中,測試人員還是不能肯定所設計的被測對象(Device Under Test,DUT)是否已經不存在問題。這是因為在代碼覆蓋測試中被測試的僅僅是代碼自身,測試人員并不知道,在測試的過程中,是否已經輸入了所有的激勵,并已經接收了所有可能的結果,同時,被測對象的狀態(tài)是否都已經訪問,所有的內部轉換是否都出現了,感興趣的事件是否發(fā)生等等問題。
針對這些問題,業(yè)界提出了功能覆蓋的概念,功能覆蓋的定義為來自設備和測試計劃規(guī)格的清晰的功能需求。相對于代碼覆蓋而言,功能覆蓋是一個比較新的概念,功能覆蓋率的度量因功能覆蓋率代碼的不同而不同,所以功能覆蓋在度量實現上并不如代碼覆蓋率那么清晰和容易界定。
在功能覆蓋率度量的實現上,由于功能覆蓋率來自于功能需求,功能需求(測試點)都以文檔的方式來描述。
目前廣泛采用的文檔標記功能覆蓋率的方法是在文檔上標明功能點,并輔之以相應的驗證用例,當一個驗證用例通過了,就表示該驗證用例對應的功能點被覆蓋了,于是在文檔上進行標記,最后測試人員根據文檔的標記情況來統計整個測試項目的覆蓋率情況。
這種方法存在著明顯不足之處第一,因度量方式是手工操作,標記、統計起來都很是麻煩,而且往往會遺漏對一些功能點的標記和統計;第二,功能需求容易與實際代碼脫節(jié),不能夠緊密耦合,一旦需求或者實際代碼改變,文檔中記錄的功能點就需要改變功能描述語句和重新標記。
發(fā)明內容
本發(fā)明的目的在于提出的一種的功能覆蓋率測試度量系統和方法,該系統和方法能夠在EDA工具中實現,并可以對驗證用例和被測對象功能覆蓋率進行自動統計。
為實現本發(fā)明目的而提供的一種功能覆蓋率測試度量系統,包括總線功能單元,用于輸出被測對象產生的測試請求;激勵單元,用于接收所述測試請求并進行轉發(fā),以及根據所述測試請求產生并輸出驗證用例;主控臺,用于接收所述激勵單元產生的驗證用例和轉發(fā)的測試請求,并根據測試請求對激勵事件進行測試,輸出測試結果;結果分析單元,用于接收所述測試結果進行分析,并輸出分析結果;驗證用例功能覆蓋率統計單元,用于通過所述分析結果,計算出驗證用例中的各個度量要素參數的功能覆蓋得分,并根據所述各個度量要素參數的功能覆蓋得分得到驗證用例的功能覆蓋率;以及被測對象功能覆蓋率統計單元,用于通過所述分析結果,計算出被測對象的各個測試層的功能覆蓋得分,得到被測對象的功能覆蓋率。
所述驗證用例功能覆蓋率統計單元包括要素參數設置單元,用于按功能處理過程為驗證用例設置功能覆蓋率集合要素參數,對象要素參數和片段要素參數;片段得分計算單元,用于計算片段的覆蓋情況和目標值的比值,并與1比較大小后輸出其中的較小值做為片段的得分;對象得分計算單元,用于根據一個對象下所有片段的得分及對應的權重,計算出所述對象的得分并輸出;功能覆蓋率集合得分計算單元,用于根據一個驗證用例下所有對象的得分及對應的權重,計算出所述驗證用例的功能覆蓋率。
所述驗證用例功能覆蓋率統計單元還包括
第一權重賦值單元,用于為片段和對象賦予權重值。
所述被測對象功能覆蓋率統計單元包括測試層劃分單元,用以將被測對象劃分為片段測試層、測試點測試層、驗證特性測試層和需求規(guī)格測試層;片段測試層得分計算單元,用于計算片段的覆蓋情況和目標值的比值,并與1比較大小后輸出其中的較小值做為片段測試層的得分;測試點測試層得分計算單元,用于根據一個測試點測試層中所有片段得分及對應的權重,計算出所述測試點測試層的得分并輸出;驗證特性測試層得分計算單元,用于根據一個驗證特性測試層中所有片段的得分及對應的權重,計算出所述驗證特性測試層的得分并輸出;需求規(guī)格測試層得分計算單元,用于根據一個需求規(guī)格測試層中所有片段的得分及對應的權重,計算出所述驗證特性測試層的得分并輸出;測試點通過率計算單元,用于根據通過的測試點數目和測試點總數計算出測試點通過率,得到被測對象的功能覆蓋率。
所述被測對象功能覆蓋率統計單元還包括第二權重賦值單元,用于為片段賦予權重值。
為實現本發(fā)明目的還提供了一種功能覆蓋率測試度量方法,包括下列步驟步驟A)根據每個被測對象的功能將被測對象分解為多個測試點,并由被測對象發(fā)出測試請求,利用驗證用例對測試點進行驗證測試,得到分析結果;步驟B)利用分析結果,計算出驗證用例中的各個度量要素參數的覆蓋得分,得到驗證用例的功能覆蓋率,并根據測試點中的被測片段命中的情況,結合被測對象的測試點的權重,計算出被測對象各個測試層的量化得分,得到被測對象的功能覆蓋率。
所述步驟A)之前進一步包括下列步驟步驟A1)根據被測對象設計具體的驗證用例,存儲在激勵單元中;同時,根據驗證用例的功能處理過程,劃分出多個功能覆蓋率的基本度量要素參數。
所述步驟A1)包括下列步驟
根據被測對象的功能將被測對象劃分為四個測試層,分別是需求規(guī)格測試層、驗證特性測試層、測試點測試層、被測片段測試層四個測試層;根據驗證用例的功能處理過程,為驗證用例設置功能覆蓋率集合要素參數、對象要素參數、度量片段要素參數。
所述步驟B)包括下列步驟步驟B1)利用分析結果,根據測試點中的被測片段被驗證用例命中的情況,收集到與驗證用例對應的被命中的被測片段,計算度量片段覆蓋情況;步驟B2)以驗證用例對被測對象的功能覆蓋率為基準,根據度量片段的覆蓋情況,計算驗證用例的得分,得到驗證用例的功能覆蓋率,以及根據被測片段被命中的情況,計算出被測對象的得分,得到被測對象的功能覆蓋率。
所述步驟B2)中以驗證用例對被測對象的功能覆蓋率為基準,根據度量片段的覆蓋情況,計算驗證用例的得分,得到驗證用例的功能覆蓋率,具體包括下列步驟步驟B21)計算驗證用例覆蓋的對象中包含的所有度量片段的得分;步驟B22)計算驗證用例覆蓋的功能覆蓋率集合中包含的所有對象的得分,得到驗證用例的得分。
所述步驟B2)中根據被測片段被命中的情況,計算出被測對象的得分,得到被測對象的功能覆蓋率具體包括下列步驟步驟B31)根據被測對象中被測片段命中的情況,結合被測對象的測試點的權重,計算出被測片段測試層的功能覆蓋率;步驟B32)根據被測對象中測試點測試層中包含的所有片段的功能覆蓋率,計算測試點測試層的功能覆蓋率;步驟B33)根據被測對象中驗證特性測試層中包含的所有片段的功能覆蓋率,計算驗證特性測試層的功能覆蓋率;步驟B34)根據被測對象中需求規(guī)格測試層中包含的所有片段的功能覆蓋率,計算需求規(guī)格測試層的功能覆蓋率,然后計算出被測對象的所有測試點的通過率,得到被測對象的功能覆蓋率。
本發(fā)明的有益效果是通過本發(fā)明中的基于測試點的功能覆蓋率測試度量系統和方法得出功能覆蓋率數據,可以為測試項目的驗證充分性提供定量評價標準和依據;利用集成了功能覆蓋率度量模型的驗證平臺,驗證人員使用本系統可以迅速建立起高效的驗證環(huán)境,減少驗證環(huán)境建立時間,提高驗證質量,實現仿真驗證的自動化。
圖1是本發(fā)明功能覆蓋率測試度量系統示意圖;圖2是本發(fā)明被測對象需求規(guī)格分解示意圖;圖3是本發(fā)明功能覆蓋率測試度量方法流程圖;圖4是本發(fā)明驗證用例與被測對象分層驗證測試示意圖。
具體實施例方式
下面結合附圖1~4進一步詳細說明本發(fā)明的一種功能覆蓋率測試度量系統和方法。其對于功能覆蓋率的測試度量方法,在操作上,如EDA工具希望的一樣,向代碼覆蓋率靠攏,使用可執(zhí)行的語言描述功能需求,再由仿真工具在仿真時自動判斷所描述的功能需求是否覆蓋,實現自動執(zhí)行和統計驗證用例和測試目標(被測對象)的功能覆蓋率的操作。
如圖1所示,本發(fā)明一種功能覆蓋率測試度量系統包括主控臺1,總線功能單元(BFM)3,激勵單元2,結果分析單元4,驗證用例功能覆蓋率統計單元5,以及被測對象功能覆蓋率統計單元6。
其中總線功能單元3,用于輸出被測對象產生的測試請求;激勵單元2,用于接收所述測試請求并進行轉發(fā),以及根據所述測試請求產生并輸出驗證用例;主控臺1,用于接收所述激勵單元2產生的驗證用例和轉發(fā)的測試請求,并根據測試請求對激勵事件進行測試,輸出測試結果;結果分析單元4,用于接收所述測試結果進行分析,并輸出分析結果;驗證用例功能覆蓋率統計單元5,用于通過所述分析結果,計算出驗證用例中的各個度量要素參數的功能覆蓋得分,并根據所述各個度量要素參數的功能覆蓋得分得到驗證用例的功能覆蓋率;進一步地,所述驗證用例功能覆蓋率統計單元包括要素參數設置單元,用于按功能處理過程為驗證用例設置功能覆蓋率集合要素參數,對象要素參數和片段要素參數;片段得分計算單元,用于計算片段的覆蓋情況和目標值的比值,并與1比較大小后輸出其中的較小值做為片段的得分;對象得分計算單元,用于根據一個對象下所有片段的得分及對應的權重,計算出所述對象的得分并輸出;功能覆蓋率集合得分計算單元,用于根據一個驗證用例下所有對象的得分及對應的權重,計算出所述驗證用例的功能覆蓋率;此外驗證用例功能覆蓋率統計單元5還可以包括第一權重賦值單元,用于為片段和對象賦予權重值。在驗證用例功能覆蓋率統計單元5未包括第一權重賦值單元時,片段權重值均一樣,對象權重值也均一樣;在驗證用例功能覆蓋率統計單元5包括第一權重賦值單元時,片段、對象權重值采用第一權重賦值單元提供的賦值。
被測對象功能覆蓋率統計單元6,用于通過所述分析結果,計算出被測對象的各個測試層的功能覆蓋得分,得到被測對象的功能覆蓋率。
進一步地,所述被測對象功能覆蓋率統計單元包括測試層劃分單元,用以將被測對象劃分為片段測試層、測試點測試層、驗證特性測試層和需求規(guī)格測試層;片段測試層得分計算單元,用于計算片段的覆蓋情況和目標值的比值,并與1比較大小后輸出其中的較小值做為片段測試層的得分;測試點測試層得分計算單元,用于根據一個測試點測試層中所有片段得分及對應的權重,計算出所述測試點測試層的得分并輸出;驗證特性測試層得分計算單元,用于根據一個驗證特性測試層中所有片段的得分及對應的權重,計算出所述驗證特性測試層的得分并輸出;需求規(guī)格測試層得分計算單元,用于根據一個需求規(guī)格測試層中所有片段的得分及對應的權重,計算出所述驗證特性測試層的得分并輸出;測試點通過率計算單元,用于根據通過的測試點數目和測試點總數計算出測試點通過率,得到被測對象的功能覆蓋率;此外,被測對象功能覆蓋率統計單元6還可以包括第二權重賦值單元,用于為片段賦予權重值。在被測對象功能覆蓋率統計單元6未包括第二權重賦值單元時,片段權重值均一樣;在被測對象功能覆蓋率統計單元6包括第二權重賦值單元時,片段權重值采用第二權重賦值單元提供的賦值。
在測試過程中,被測對象(DUT)通過總線功能單元3向激勵單元2發(fā)出測試請求。激勵單元2在收到被測對象發(fā)出的測試請求后,通知主控臺1,并把收到的測試請求上交給主控臺1。同時,激勵單元2根據測試請求向主控臺1發(fā)出激勵事件,主控臺1對激勵事件進行測試,并將測試結果傳送到結果分析單元4進行結果分析。
被測對象(DUT)指被測試的對象,即測試目標。
激勵事件即為給被被測對象的輸入驗證數據,即驗證用例,其由激勵單元2發(fā)起,發(fā)起的過程為激勵單元2向主控臺1發(fā)一個激勵請求的信號。
在激勵單元2產生激勵事件和結果分析單元4對結果分析過程中,主控臺1通過激勵事件觸發(fā)功能覆蓋率統計單元5配合進行功能覆蓋率測試。
主控臺1是一個控制模塊,對激勵單元2和結果分析單元4起控制和協調作用。
總線功能單元3將測試請求發(fā)送到激勵單元2,請求激勵單元2發(fā)送激勵事件(即驗證用例)到主控臺1;然后,激勵單元2根據配置(即當前的狀態(tài),如發(fā)送數據的帶寬),決定是否發(fā)送激勵事件到主控臺1,如果此時發(fā)送激勵事件的帶寬在預期的范圍內,則允許發(fā)送;如果超出預期范圍則不發(fā)送,給總線功能單元3返回一個等待的信號。
如果可以發(fā)送數據,則激勵單元2生成相應的激勵事件,發(fā)送給主控臺1進行測試,同時對返回給結果分析單元4的分析結果,通過驗證用例功能覆蓋率統計單元5和被測對象功能覆蓋率統計單元6進行驗證用例和被測對象的功能覆蓋率統計;如果不能發(fā)送數據,激勵單元2返回給總線功能單元(BFM)3一個延時數據,也就是等待的信號,總線功能單元(BFM)3在延時完成之后,再次向激勵單元2申請報文,即發(fā)送測試請求。
結果分析單元4根據主控臺1的配置和控制,接收測試數據。結果分析單元4在接收到測試數據后,進行分析得到分析結果;最后通過驗證用例功能覆蓋率統計單元5和被測對象功能覆蓋率統計單元6對分析結果進行統計,得到驗證用例和被測對象的功能覆蓋率得分。
具體的,本發(fā)明的驗證用例功能覆蓋率統計單元5,利用分析結果,計算出驗證用例中的各個度量要素參數的覆蓋得分,得到驗證用例的功能覆蓋率;同時和被測對象功能覆蓋率統計單元6根據測試點中的被測片段命中的情況,結合被測對象的測試點的權重,計算出被測對象各個測試層的量化得分,得到被測對象的功能覆蓋率。
如圖2所示,對被測對象的需求規(guī)格進行逐層分解,最后分解為測試點,并根據測試點設計具體的驗證用例,存儲在激勵單元2中。
當進行測試時,激勵單元2根據總線功能單元3的請求,產生并發(fā)送驗證用例(即激勵事件數據),在主控臺1對被測對象進行驗證測試,在結果分析單元4進行分析,得到驗證用例和被測對象的分析結果。通過驗證用例功能覆蓋率統計單元5和被測對象功能覆蓋率統計單元6對驗證用例和被測對象的分析結果進行量化,根據驗證用例和被測對象的量化得分,從而測量出具體驗證用例和被測對象的功能覆蓋率,即通過利用分析結果,計算出驗證用例中的各個度量要素參數的覆蓋得分,得到驗證用例的功能覆蓋率;同時根據測試點中的被測片段命中的情況,結合被測對象的測試點的權重,計算出被測對象各個測試層的量化得分,得到被測對象的功能覆蓋率。
如圖3所示,下面進一步詳細說明本發(fā)明的功能覆蓋率測試度量方法步驟1)根據被測對象的需求規(guī)格設計具體的驗證用例,存儲在激勵單元2中,同時,根據驗證用例的功能處理過程,劃分出多個功能覆蓋率的基本度量要素參數;作為本發(fā)明的實施例,可以將被測對象進行逐層分解如下步驟11)根據被測對象的功能將被測對象劃分為四個測試層,分別是需求規(guī)格測試層(Spec)、驗證特性測試層(Feature)、測試點測試層(Testcase)、被測片段測試層四個測試層;如圖2所示,首先,將被測對象的需求規(guī)格(Spec)分解為驗證特性(Feature),所屬驗證特性是具有同一特征的規(guī)格的集合,是被測對象某一功能特征的集合,其中也包含被測對象隱含的特性。
其中,需求規(guī)格是指被測對象在功能、性能、應用環(huán)境等方面,事先約定能夠達到的指標。
然后,將驗證特性分解為測試點(Testcase),測試點是指驗證特性中每一個不能再細分的功能需求項。
最后,測試點有一個或者多個被測片段,即被測對象的每個測試點(Testcase)中可以有一個或者多個被測片段;根據被測片段設計具體的驗證用例(Test),就可以利用驗證用例度量每個被測對象的功能覆蓋率。
驗證用例是針對測試點的被測片段而設計的包含測試輸入,執(zhí)行條件和期望結果的集合,用于通過執(zhí)行特定的程序以驗證測試點的功能是否和需求規(guī)格相一致。
被測對象的測試點是一個不能再細分的功能需求項,對應著被測對象的某項功能。測試點和驗證用例的關系可以是一對一的關系,還可以是一對多或多對一的關系,即一個驗證用例可以對應測試一個測試點,也可以是多個驗證用例測試同一個測試點,還可以是在一個驗證用例測試多個測試點。
根據被測對象的需求規(guī)格,不一定只將被測對象分為被測對象需求規(guī)格、驗證特性、測試點和被測片段多個層次,也可根據實際情況分為任意個層次,這些測試層次之間是相對的,沒有嚴格的劃分標準,本發(fā)明中,通過被測對象的需求規(guī)格進行分解,得到測試點,再根據測試點的一個或者多個被測片段,設計具體的驗證用例,用于對被測對象的功能覆蓋率測試。
在利用驗證用例對被測對象進行測試時,通過對測試結果進行量化,根據量化的結果對被測對象的功能覆蓋率進行度量。
步驟12)同時,根據驗證用例的功能處理過程,可以為驗證用例設置多個功能覆蓋率的基本度量要素參數,用于通過驗證用例對被測對象進行測試得到的分析結果,度量出驗證用例的功能覆蓋率。
如圖4所示,根據驗證用例的功能處理過程,可以為驗證用例設置多個功能覆蓋率的基本度量要素參數,將其設置在驗證用例功能覆蓋率統計單元5中,用于度量驗證用例對被測對象的功能覆蓋率,這些基本度量要素參數包括功能覆蓋率集合要素參數;對象要素參數;度量片段要素參數度量要素參數一功能覆蓋率集合要素參數功能覆蓋率集合要素參數物理意義一個功能覆蓋率集合中包含多個對象,并且和一個激勵事件(驗證用例)進行對應。
在邏輯仿真過程中,當一個功能覆蓋率集合對應的激勵事件(驗證用例)觸發(fā)時,就可以收集該功能覆蓋率集合中所有的對象被命中情況的相關數據。
度量要素參數二對象要素參數對象要素參數的物理意義是被測對象在一個功能處理過程中所涉及的、有明確物理意義的相關要素參數;被測對象通常是由FPGA/ASIC(FPGAField Programmable Gate Array現場可編程門陣列,ASICApplication Specific Integrated Circuit特定用途集成電路)技術來實現的,被測對象在一個功能處理過程中相關的一些要素,比如“報文長度校驗”功能(即判斷報文長度是否在合法范圍內)和報文長度相關,那么報文長度就是相關要素,即為對象(Object)。
對象由多個基礎對象(BaseObject)構成。對象可以分為基本對象(BasicObject)、交叉對象(CrossObject)和序列對象(SequenceObject)三種類型。
基礎對象是構造基本對象、交叉對象和序列對象的基礎元素,即其它三種對象(Object)都是由基礎對象(BaseObject)構成的,其中基本對象(BasicObject)是表示一維的驗證空間,由一種基礎對象(BaseObject)構成;交叉對象(CrossObject)表示多維的驗證空間,由兩種或兩種以上的基礎對象(BaseObject)構成;序列對象(SequenceObject)表示和時間相關的驗證空間,由一種或多種基礎對象(BaseObject)構成。
其中,可以認為基本對象是交叉對象的一個特例。
在大規(guī)模的邏輯測試中,典型的對象實例有A、單個有明確物理意義的信號(如中斷信號);B、輸入數據包中需要關心的域(如互聯網協議IP)包中循環(huán)冗余碼校驗CRC域);C、輸入數據流的抽象的特性參數(如包長);D、內部邏輯或輸出的某種處理;E、驗證用例的某類配置,如不同的工作模式。
度量要素參數三度量片段要素參數度量片段要素參數的物理意義是根據等價類測試工程方法定義的對象的范圍,在這個范圍中包含了對象所有可能出現的結果,每一個范圍為一個度量片段。一個對象中包含一個或者多個度量片段。和對象的三種類型相對應,度量片段分為基本度量片段、交叉度量片段和順序度量片段三種類型。
同時,對于被測對象而言,每個測試點中有一個或者多個被測片段,對應地,每個驗證用例中有一個或者多個度量片段。
當被測對象利用驗證用例的測試,其測試結果落在某個已經定義的被測片段范圍內,即被測片段被命中一次時,稱度量片段被覆蓋(Hit)1次。
在大規(guī)模邏輯測試中,典型的度量片段實例有A、中斷信號有效、無效;B、校驗(CRC)對、錯;C、包長長包、短包、超長包、超短包、典型長度包;D、包過濾處理的所有路徑路徑1、路徑2、……E、輸出處理方式0、方式1、……通過度量片段將被測對象的測試點和驗證用例聯系起來,因此,度量片段要素參數是驗證用例功能覆蓋率統計單元5的基本度量元素參數。
因此,驗證用例的功能覆蓋率可以以度量片段要素的得分(Score)情況進行量化,得分的取值范圍為0到1之間(包括0和1)。得分為1時稱之為完全覆蓋到或達到目標,得分為0時稱之為完全沒有覆蓋到或沒有達到覆蓋,介于0和1之間稱之為部分覆蓋到或部分達到覆蓋。
步驟2)根據每個被測對象的功能將被測對象分解為多個測試點,并由被測對象發(fā)出測試請求,利用驗證用例對測試點進行驗證測試,得到分析結果;在測試過程中,被測對象(DUT)通過總線功能單元3向激勵單元2發(fā)出測試請求。激勵單元2在收到被測對象發(fā)出的測試請求后,通知主控臺1,并把收到的測試請求上交給主控臺1。同時,激勵單元2根據測試請求向主控臺1發(fā)出激勵事件,主控臺1對激勵事件進行測試,并將測試結果傳送到結果分析單元4進行結果分析得到分析結果。
總線功能單元3將測試請求發(fā)送到激勵單元2,請求激勵單元2發(fā)送激勵事件(即驗證用例)到主控臺1;然后,激勵單元2根據配置(即當前的狀態(tài),如發(fā)送數據的帶寬),決定是否發(fā)送激勵事件到主控臺1,如果此時發(fā)送激勵事件的帶寬在預期的范圍內,則允許發(fā)送;如果超出預期范圍則不發(fā)送,給總線功能單元3返回一個等待的信號。
如果可以發(fā)送數據,則激勵單元2生成相應的激勵事件數據,發(fā)送給主控臺1進行測試;如果不能發(fā)送數據,激勵單元2返回給總線功能單元(BFM)3一個延時數據,總線功能單元(BFM)3在延時完成之后,再次向激勵單元2申請報文。
結果分析單元4根據主控臺1的配置和控制,接收結果數據。結果分析單元4在接收到結果數據后,進行分析得到分析結果。
步驟3)利用分析結果,計算出驗證用例中的各個度量要素參數的覆蓋得分,得到驗證用例的功能覆蓋率,并根據測試點中的被測片段命中的情況,結合被測對象的測試點的權重,計算出被測對象各個測試層的量化得分,得到被測對象的功能覆蓋率。
步驟31)利用分析結果,根據測試點中的被測片段被驗證用例命中的情況,收集到與驗證用例(即激勵事件)對應的被命中的被測片段,計算度量片段覆蓋情況;步驟32)驗證用例功能覆蓋率統計單元5以驗證用例對被測對象的功能覆蓋率為基準,根據度量片段的覆蓋情況,計算的驗證用例的得分,得到驗證用例的功能覆蓋率;當被測對象利用驗證用例的測試,其測試結果落在某個已經定義的被測片段范圍內,即被測片段被命中一次時,稱度量片段被覆蓋(Hit)1次。
驗證用例的功能覆蓋率可以以度量片段要素的得分(Score)情況進行量化,得分的取值范圍為0到1之間(包括0和1)。得分為1時稱之為完全覆蓋到或達到目標,得分為0時稱之為完全沒有覆蓋到或沒有達到覆蓋,介于0和1之間稱之為部分覆蓋到或部分達到覆蓋。
根據被命中的被測片段數據,確定覆蓋的基礎度量片段、交叉度量片段和序列度量片段,得到對應的基礎對象、交叉對象和序列對象的覆蓋情況;根據基礎對象、交叉對象(CrossObject)、序列對象(SequenceObject)的覆蓋情況,進一步得到驗證用例總的功能覆蓋率集合,從而得到驗證用例的得分情況;對象的覆蓋情況是通過度量片段的覆蓋情況來統計的,當對象中的相應度量片段被覆蓋時,相應對象的覆蓋數(Hits)加1。
對于每個驗證用例,在定義時確定一個重要級別,如將驗證用例分為高、中、低三個級別,每個級別對應著一個權重(Weight),如高為5,中為3,低為1。通過對驗證用例定義重要級別,可以對每個驗證用例的重要程度進行區(qū)分,可以指導驗證人員設計驗證用例,決定驗證人員的測試策略。
以驗證用例對被測對象的功能覆蓋率集合為基準的驗證用例的得分計算過程如下步驟321)計算驗證用例覆蓋的對象(Object)中包含的所有度量片段的得分;Score(Segment)=min(1.00,Hits(Segment)/Goal(Segment))該公式用于計算度量片段的得分,公式的意思是先計算度量片段的覆蓋數和目標值(Goal)之間的比值,即Hits(Segment)/Goal(Segment),然后該比值和1進行比較,取其中的較小值做為片段(Segment)的得分。
步驟322)計算驗證用例覆蓋的功能覆蓋率集合(CoverSuit)中包含的所有對象(Object)的得分。
對象的得分計算公式如下score(Object)=∑(score(Segment)*weight(Segment))/∑(weight(Segment))該公式用于計算對象得分,公式的意思是該對象下包含的所有度量片段的得分乘以比重(Weight)的值的累加,除以該對象下包含的所有片段的比重(Weight)的累加和。
步驟323)計算驗證用例覆蓋的功能覆蓋率集合的得分,得到驗證用例的得分。
驗證用例的功能覆蓋率集合的得分計算公式如下score(CoverSuit)=∑(score(Object)*weight(Object))/∑(weight(Object))
該公式用于驗證用例覆蓋的功能覆蓋率集合得分,公式的意思是該驗證用例下包含的所有度量片段得分乘以比重(Weight)的值的累加和除以該驗證用例下包含的所有片段的比重(Weight)的累加和。
通過計算驗證用例的功能覆蓋率集合的得分,驗證人員可以了解驗證用例對被測對象在每個度量參數的功能覆蓋的情況,從而得到驗證用例的得分,從而可以根據驗證用例的得分情況,進一步設計特定的驗證用例來提高被測對象功能覆蓋率。
步驟33)同時,被測對象功能覆蓋率統計單元6以測試點為基準,根據被測片段被命中的情況,計算出被測對象的得分,得到被測對象的功能覆蓋率。
被測片段實際上是指被測對象某一功能特性的一個驗證區(qū)間,不專指測試結果的范圍,每個測試點中包含的被測片段都有一個權重屬性,該值即為所在測試點的重要級別所對應的權重值。
對于每個測試點(Testcase),在定義時確定一個重要級別,如將測試點分為高、中、低三個級別,每個級別對應著一個權重(Weight),如高為5,中為3,低為1。通過對測試點定義重要級別,可以對每個測試點的重要程度進行區(qū)分。
被測對象的被測片段測試層、測試點測試層、驗證特性測試層、需求規(guī)格測試層四個測試層的功能覆蓋率的計算公式基本一致,都以其所包含的度量片段的得分(Score)和權重(Weight)為基礎。
對于測試點測試層和驗證特性測試層,還加上是否通過的標志(Pass)計算,對于需求規(guī)格測試層而言,還有測試點通過率(PassRatio)的計算。
這一過程包括下列步驟步驟331)根據被測對象中被測片段命中的情況,結合被測對象的測試點的權重,計算出被測片段測試層的功能覆蓋率(計算公式如公式(1));被測片段測試層的功能覆蓋率Score(Segment)=min(1.00,Hits(Segment)/Goal(Segment)) (1)該公式用于計算被測片段測試層的得分(即功能覆蓋率的度量,下同),公式的意思是先計算被測片段(Segment)的命中數(Hits)和目標值(Goal)之間的比值,即Hits(Segment)/Goal(Segment),然后該比值和1進行比較,取其中的較小值做為片段(Segment)的得分。
步驟332)根據被測對象中測試點測試層中包含的所有片段,計算測試點測試層的功能覆蓋率(計算公式如公式(2)和(3));測試點測試層的功能覆蓋率Score(Testcase)=∑(Score(Segment)*Weight(Segment))/∑(Weight(Segment)) (2)該公式用于計算測試點測試層的得分,公式的意思是該測試點下包含的所有片段(Segment)的得分乘以比重(Weight)的值的累加,除以該測試點下包含的所有片段(Segment)的比重(Weight)的累加和。
Pass(Testcase)=(Score(Testcase)=1)?1∶0 (3)該公式用于計算某個測試點是否通過測試,通過時返回1,否則返回0,公式的意思是該測試點的得分如果為1則返回1,否則返回0。
步驟333)根據被測對象中驗證特性測試層中包含的所有片段,計算驗證特性測試層的功能覆蓋率(計算公式如公式(4)和(5));驗證特性測試層的功能覆蓋率Score(Feature)=∑(Score(Segment)*Weight(Segment))/∑(Weight(Segment))(4)該公式用于計算驗證特性測試層的得分,公式的意思是該驗證特性下包含的所有片段(Segment)的得分乘以比重(Weight)的值的累加和除以該驗證特性下包含的所有片段(Segment)的比重(Weight)的累加和。
Pass(Feature)=(Score(Feature)=1)?1∶0(5)該公式用于計算某個驗證特性是否通過測試,通過時返回1,否則返回0,公式的意思是該驗證特性的得分如果為1則返回1,否則返回0。
步驟334)根據被測對象中需求規(guī)格測試層中包含的所有片段,計算需求規(guī)格測試層的功能覆蓋率(計算公式如公式(6)),然后計算出被測對象的所有測試點的通過率(計算公式如公式(7)),得到被測對象的功能覆蓋率。
需求規(guī)格測試層的功能覆蓋率Score(Spec)=∑(Score(Segment)*Weight(Segment))/∑(Weight(Segment)) (6)該公式用于計算需求規(guī)格測試層的得分,公式的意思是被測對象中包含的所有片段(Segment)的得分乘以比重(Weight)的值的累加和除以被測對象中包含的所有片段(Segment)的比重(Weight)的累加和。
被測對象的所有測試點通過率,即被測對象的功能覆蓋率為PassRatio(Testcase)=(通過的測試點數目)/(測試點總數)(7)即測試點通過率為通過測試點數目除以測試點總數。
本發(fā)明中的測試度量系統和方法,對被測對象的測試點,分別利用存儲在激勵單元2中的驗證用例進行驗證測試,由結果分析單元4進行分析,得到分析結果;利用度量片段要素參數被覆蓋的情況,計算出驗證用例中的各個要素參數的覆蓋情況,得到驗證用例的功能覆蓋率,并根據測試點中的被測片段被驗證用例命中的情況,度量出各個測試層的量化得分,從而得到被測對象的各個層次的功能覆蓋率。其通過分層次計算被測對象和驗證用例的功能覆蓋率得分,得出的功能覆蓋率數據,驗證人員可以了解到在被測對象和驗證用例的各個層次上的功能覆蓋情況,可以為測試項目的驗證充分性提供定量評價標準和依據;利用集成了功能覆蓋率度量模型的驗證平臺,驗證人員使用本系統可以迅速建立起高效的驗證環(huán)境,減少驗證環(huán)境建立時間,提高驗證質量,實現仿真驗證的自動化。
本實施例是為了更好地理解本發(fā)明進行的詳細的描述,而并不是對本發(fā)明所保護的范圍的限定,因此,本領域普通技術人員不脫離本發(fā)明的主旨情況下,未經創(chuàng)造性勞動而對本發(fā)明所做的改變,是在本發(fā)明的保護范圍內的。
權利要求
1.一種功能覆蓋率測試度量系統,其特征在于,包括總線功能單元(3),用于輸出被測對象產生的測試請求;激勵單元(2),用于接收所述測試請求并進行轉發(fā),以及根據所述測試請求產生并輸出驗證用例;主控臺(1),用于接收所述激勵單元(2)產生的驗證用例和轉發(fā)的測試請求,并根據測試請求對激勵事件進行測試,輸出測試結果;結果分析單元(4),用于接收所述測試結果進行分析,并輸出分析結果;驗證用例功能覆蓋率統計單元(5),用于通過所述分析結果,計算出驗證用例中的各個度量要素參數的功能覆蓋得分,并根據所述各個度量要素參數的功能覆蓋得分得到驗證用例的功能覆蓋率;以及被測對象功能覆蓋率統計單元(6),用于通過所述分析結果,計算出被測對象的各個測試層的功能覆蓋得分,得到被測對象的功能覆蓋率。
2.根據權利要求1所述的功能覆蓋率測試度量系統,其特征在于,所述驗證用例功能覆蓋率統計單元(5)包括要素參數設置單元,用于按功能處理過程為驗證用例設置功能覆蓋率集合要素參數,對象要素參數和片段要素參數;片段得分計算單元,用于計算片段的覆蓋情況和目標值的比值,并與1比較大小后輸出其中的較小值做為片段的得分;對象得分計算單元,用于根據一個對象下所有片段的得分及對應的權重,計算出所述對象的得分并輸出;功能覆蓋率集合得分計算單元,用于根據一個驗證用例下所有對象的得分及對應的權重,計算出所述驗證用例的功能覆蓋率。
3.根據權利要求2所述的功能覆蓋率測試度量系統,其特征在于,所述驗證用例功能覆蓋率統計單元(5)還包括第一權重賦值單元,用于為片段和對象賦予權重值。
4.根據權利要求1所述的功能覆蓋率測試度量系統,其特征在于,所述被測對象功能覆蓋率統計單元(6)包括測試層劃分單元,用以將被測對象劃分為片段測試層、測試點測試層、驗證特性測試層和需求規(guī)格測試層;片段測試層得分計算單元,用于計算片段的覆蓋情況和目標值的比值,并與1比較大小后輸出其中的較小值做為片段測試層的得分;測試點測試層得分計算單元,用于根據一個測試點測試層中所有片段得分及對應的權重,計算出所述測試點測試層的得分并輸出;驗證特性測試層得分計算單元,用于根據一個驗證特性測試層中所有片段的得分及對應的權重,計算出所述驗證特性測試層的得分并輸出;需求規(guī)格測試層得分計算單元,用于根據一個需求規(guī)格測試層中所有片段的得分及對應的權重,計算出所述驗證特性測試層的得分并輸出;測試點通過率計算單元,用于根據通過的測試點數目和測試點總數計算出測試點通過率,得到被測對象的功能覆蓋率。
5.根據權利要求4所述的功能覆蓋率測試度量系統,其特征在于,所述被測對象功能覆蓋率統計單元(6)還包括第二權重賦值單元,用于為片段賦予權重值。
6.一種功能覆蓋率測試度量方法,其特征在于,包括下列步驟步驟A)根據每個被測對象的功能將被測對象分解為多個測試點,并由被測對象發(fā)出測試請求,利用驗證用例對測試點進行驗證測試,得到分析結果;步驟B)利用分析結果,計算出驗證用例中的各個度量要素參數的覆蓋得分,得到驗證用例的功能覆蓋率,并根據測試點中的被測片段命中的情況,結合被測對象的測試點的權重,計算出被測對象各個測試層的量化得分,得到被測對象的功能覆蓋率。
7.根據權利要求6所述的功能覆蓋率測試度量方法,其特征在于,所述步驟A)之前進一步包括下列步驟步驟A1)根據被測對象設計具體的驗證用例,存儲在激勵單元(2)中;同時,根據驗證用例的功能處理過程,劃分出多個功能覆蓋率的基本度量要素參數。
8.根據權利要求7所述的功能覆蓋率測試度量方法,其特征在于,所述步驟A1)包括下列步驟根據被測對象的功能將被測對象劃分為四個測試層,分別是需求規(guī)格測試層、驗證特性測試層、測試點測試層、被測片段測試層四個測試層;根據驗證用例的功能處理過程,為驗證用例設置功能覆蓋率集合要素參數、對象要素參數、度量片段要素參數。
9.根據權利要求8所述的功能覆蓋率測試度量方法,其特征在于,所述步驟B)包括下列步驟步驟B1)利用分析結果,根據測試點中的被測片段被驗證用例命中的情況,收集到與驗證用例對應的被命中的被測片段,計算度量片段覆蓋情況;步驟B2)以驗證用例對被測對象的功能覆蓋率為基準,根據度量片段的覆蓋情況,計算驗證用例的得分,得到驗證用例的功能覆蓋率,以及根據被測片段被命中的情況,計算出被測對象的得分,得到被測對象的功能覆蓋率。
10.根據權利要求9所述的功能覆蓋率測試度量方法,其特征在于,所述步驟B2)中以驗證用例對被測對象的功能覆蓋率為基準,根據度量片段的覆蓋情況,計算驗證用例的得分,得到驗證用例的功能覆蓋率具體包括下列步驟步驟B21)計算驗證用例覆蓋的對象中包含的所有度量片段的得分;步驟B22)計算驗證用例覆蓋的功能覆蓋率集合中包含的所有對象的得分,得到驗證用例的得分。
11.根據權利要求9所述的功能覆蓋率測試度量方法,其特征在于,所述步驟B2)中根據被測片段被命中的情況,計算出被測對象的得分,得到被測對象的功能覆蓋率具體包括下列步驟步驟B31)根據被測對象中被測片段命中的情況,結合被測對象的測試點的權重,計算出被測片段測試層的功能覆蓋率;步驟B32)根據被測對象中測試點測試層中包含的所有片段的功能覆蓋率,計算測試點測試層的功能覆蓋率;步驟B33)根據被測對象中驗證特性測試層中包含的所有片段的功能覆蓋率,計算驗證特性測試層的功能覆蓋率;步驟B34)根據被測對象中需求規(guī)格測試層中包含的所有片段的功能覆蓋率,計算需求規(guī)格測試層的功能覆蓋率,然后計算出被測對象的所有測試點的通過率,得到被測對象的功能覆蓋率。
全文摘要
一種功能覆蓋率測試度量系統和方法。該系統包括總線功能單元(3)、激勵單元(2)、主控臺(1)、結果分析單元(4)、以及驗證用例功能覆蓋率統計單元(5),用于通過所述分析結果,計算出驗證用例中的各個度量要素參數的功能覆蓋得分,并根據所述各個度量要素參數的功能覆蓋得分得到驗證用例的功能覆蓋率;被測對象功能覆蓋率統計單元(6),用于通過所述分析結果,計算出被測對象的各個測試層的功能覆蓋得分,得到被測對象的功能覆蓋率。本發(fā)明還提供一種功能覆蓋率度量的測試方法,能夠在EDA工具中實現,并可以對驗證用例和被測對象功能覆蓋率進行自動統計。
文檔編號G06F17/50GK1916920SQ200610153890
公開日2007年2月21日 申請日期2006年9月14日 優(yōu)先權日2006年9月14日
發(fā)明者易敏, 王進成, 程智輝 申請人:華為技術有限公司