如何保障軟件測試充分性之邏輯覆蓋率統計

首頁    產品宣傳    如何保障軟件測試充分性之邏輯覆蓋率統計


軟件測試充分性這一概念是Goodenough和Gerhart于1975年在研究軟件測試是否能夠保證軟件的正確性時引入的。此后,軟件測試充分性的研究成為軟件測試的研究焦點之一。

我們在做系統級測試、功能測試、黑盒測試的過程中,測試用例設計是否充分?所有測試用例執行完是否覆蓋到了所有有效代碼?關鍵函數、功能點是否有未覆蓋到的邏輯、分支?這些未知都導致測試人員不敢確定自己的測試是完全充分的,而代碼邏輯覆蓋率是用來確定測試充分性的唯一可靠度量指標。這是一種最可操作、最容易起步的方法,而且在一些軟件開發工程化文件和軟件研制任務書中,通常會對邏輯覆蓋率提出明確的要求,它可以讓測試人員清晰的了解到每一條測試用例覆蓋了哪些代碼,還有哪些代碼未被覆蓋到。目前很多海軍裝備項目都明確要求要做系統級、配置項級的邏輯覆蓋率測試,以保證測試的充分性。

在這樣的情況下,選用合適的邏輯覆蓋測試與統計工具,就成為開展邏輯覆蓋測試、提高測試用例邏輯覆蓋率的前提條件。


邏輯覆蓋



邏輯覆蓋,就是以程序內部的邏輯結構為基礎,設計若干測試用例,使程序用這些測試用例運行時,能執行(或叫覆蓋)程序中的每個語句/分支/條件/路徑/子程序調用等等.

根據覆蓋測試的目標不同,邏輯覆蓋率測試可分為語句覆蓋、判定覆蓋、條件覆蓋、判定-條件覆蓋、條件組合覆蓋、路徑覆蓋、子過程調用覆蓋等。

語句覆蓋,就是選擇足夠的測試用例,使得被測程序中的每個語句至少執行一次;判定覆蓋,又叫分支覆蓋,則要求程序中每個判定的每個可能的結果都應該至少執行一次;條件覆蓋,則要求程序中每個判定的每個條件的所的可能值至少執行一次;判定-條件覆蓋,則要求程序中每個判定的每個條件的所有可能值至少執行一次,而且每個判定的所有可能判斷結果至少執行一次;條件組合覆蓋,則要求每個判斷表達式中條件的各種可能組合都至少出現一次;路徑覆蓋,則要求程序的每條可能路徑都至少執行一次(如果程序中有環,則要求每個環至少經過一次);子過程調用覆蓋,則要求程序中每個調用子過程的地方都至少被執行一次。


邏輯覆蓋測試與統計工具



邏輯覆蓋測試通常需要邏輯覆蓋測試工具來支持。邏輯覆蓋測試工具通常是一種白盒測試工具。從覆蓋測試的原理來看,覆蓋測試工具要對被測程序進行插樁。工具在對被測程序進行語法分析的基礎上,建立一系列表格,從源程序中按順序定位出每個覆蓋目標(如語句、分支、子過程調用等)。然后在目標處插入插樁語句(插樁語句是一個子過程調用,調用的子過程能在運行到插樁點時記錄下有關的運行情況)。插樁完畢后,插樁后的文件代替插樁前的文件,連同工具提供的插樁庫(插樁庫中有插樁語句調用的子過程以及其他子過程的定義)進行編譯、連接形成新的可執行程序。然后運行此可執行程序,注入測試用例。插樁語句在執行過程中或執行完畢后,就能將測試結果記錄到事先確定的緩沖區或文件中。測試人員就能根據測試結果判定覆蓋情況是否滿足要求了。

從以上工作過程和測試效果可以看出,一個好的覆蓋測試工具,從功能和性能上應滿足一定的要求。

在功能上,覆蓋測試工具應盡可能進行多種目標的覆蓋測試,如能進行語句、分支甚至路徑(或基本路徑)的覆蓋,最好能提供圖形化的界面,便于測試人員直觀地進行覆蓋分析,確定新的待測路徑,補充新的測試用例。

在性能上,覆蓋測試工具應盡量減少插樁開銷。一方面,為達到不同的邏輯覆蓋目標(如語句覆蓋、分支覆蓋、路徑覆蓋、子過程調用覆蓋等),盡量減少插樁操作次數。若能僅僅插樁一次,就能完成多種目標的覆蓋測試,則可以大大減輕測試人員的工作量。另一方面,應優化插樁代碼,減少插樁代碼的數量、減少插樁代碼的運行次數,從而達到減少插樁代碼運行開銷的目的。特別是對于一些實時系統的覆蓋測試,在這方面的要求尤其苛刻。


統計解決方案之CuttleITE



CuttleITE是一款基于實時總線監聽技術、完全面向測試過程的白盒測試工具, CuttleITE采用賦值語句或匯編語言的插樁方式,結合硬件輔助測試,可將測試對被測系統的影響降到最低。是目前在集成級、系統級軟件測試,特別是嵌入式系統軟件測試的最佳實踐工具之一。下面我們將通過一個實例向大家介紹該款工具。

首先我們會使用源碼插樁 工具對被測程序插樁。在打開的插樁頁面(如下圖),打開插樁工程,配置插樁級別、目標路徑、平臺配置文件等信息,開始插樁,等待插樁完畢。


查看插樁后的工程文件(如下圖),我們可以看到依據不同的插樁級別,在源碼程序中插入了樁點。

接著,配置數據采集類型、服務器地址等信息(如下圖),為運行插樁后的工程項目做準備。

然后,在CuttleITE中打開插樁后的工程項目(如下圖)。

連接到服務器端(如下圖),連接成功會在下方的窗口中提示Connect Success。

下載插樁后的工程項目(如下圖)。

開始對被測工程項目進行覆蓋測試,在測試結果的覆蓋率頁面(如下圖)可以查看到每個函數的覆蓋率統計結果,打開其中的一個函數,查看代碼的測試覆蓋情況,未覆蓋到的代碼會以紅色字體高亮顯示。

結語



邏輯覆蓋測試與統計工具的使用,使得邏輯覆蓋率統計成為可能。在工程中的實踐表明,邏輯覆蓋測試工具能大大提高測試用例設計的針對性,有效地彌補墨盒測試的不足。CuttleITE邏輯覆蓋測試與統計工具,以其最小的插樁開銷、友好的操作界面,大大提高了測試效率。



2018年4月2日 16:01
?瀏覽量:0
?收藏
178彩票走势图