軟件測試技術基礎學習之測試覆蓋率[2] 軟件測試工具
◆ 碰到龐雜順序,循環次數多的時分,實現途徑掩蓋是很艱難的,也沒有蘊含判斷條件掩蓋。
從上面的集中邏輯掩蓋測試來看,它們互相彌補,盡量到達被測試順序的100%,但是咱們還是要清晰測試是為了盡能夠找出順序中的同伴。卻沒有一種美中缺少的測試方式來發明一切的同伴,這也表現了測試的局限性。
● 功用掩蓋(Function Coverage)率,屬于黑盒測試范疇。
○ 需求掩蓋:
◆ 需求掩蓋率=(被驗證到的需求數量)÷(總的需求數量)
○ 接口掩蓋÷入口點掩蓋:使得體系的每個接口被測試到。
以上所說的掩蓋率都是屬于構造化掩蓋率的范疇,但是在面向對象范疇中卻碰到挑釁。
面向對象的掩蓋率:對于面向對象的一些特征的測試,如:多態性、繼續性、封裝性等。
class Base【
public:void foo()【helper();】
void bar()【helper();】
private:virtual void helper()【。。!;】;
class Derived:public Base【
private:virtual void helper()【。。!俊;
對于上面那個順序,假如你測試到了Base。foo()和 Dervied。bar(),外表上看,你測試到了Base::helper()和Derived::helper()方式,到達了分支和語句,甚至途徑掩蓋100%。但是Base::foo()和Base::bar()他們跟Base::helper之間的接口還沒有掩蓋到,所以必需增強測試。
在面向對象中,高低文是設計對比多的,高低文掩蓋是一種搜集被測試軟件如何履行數據的方式。能夠運用于多態、繼續和封裝的特征,也能夠擴大到多線程運用。
● 繼續高低文掩蓋(Inheritance Context Coverage):高低文內履行到的判斷分支數據量占順序內判斷的總數的百分比。
○ 基類的方式在其高低文空間中的履行是完整獨立于基繼續類的高低文空間;繼續類的方式在其高低文空間中的履行也獨立于其基類的高低文空間。
○ 繼續高低文判斷掩蓋率=(累加每個高低文內履行到的判斷分支數)÷(高低文數+高低文內的判斷分支總數)
● 基于狀況的高低文掩蓋(State-Base Context Coverage)
○ 基于狀況的類:琢磨有狀況依靠行動的類。
◆ 有邊界的棧:“空狀況”、“半空狀況”、“滿狀況”,“空狀況”運用pop()方式就拋出異樣,“滿狀況”運用push()方式也會拋出異樣。
○ 入口點掩蓋(Entry-Point Coverage)÷接口點掩蓋(Interface Coverage):如上面的有邊界棧的類,只測試接口的話,是無法測試邊界值的時分會不會拋出異樣。
○ 白盒掩蓋:如判斷掩蓋掩蓋的接口不對應于公共接口的特征。而特定的解決是掩蓋不了的。
○ 基于高低文狀況轉移圖:描寫狀況及其遷徙途徑的圖。
○ 基于狀況的高低文掩蓋:對應于被測類對象的潛在狀況。
◆ 基于狀況的高低文入口點掩蓋率=(累加每個狀況內履行到的方式數)÷(狀況數×類內方式總數)
● 已定義用戶高低文掩蓋(User-Defined Context Coverage)
○ 基于線程的高低文掩蓋:運用到保護每個線程的獨立的掩蓋率。
其余掩蓋率(偏重理解)
● 函數掩蓋:函數掩蓋率=(至少被履行到一次的函數數量)÷(體系中函數的總數)
● 指令塊掩蓋(Inheruction Blocks Coverage):指令快掩蓋率=(至少被履行到一次的指令塊數量)÷(體系中指令塊總數) 其中:指令塊示意函數外部一系列語句。
文章來源于領測軟件測試網 http://www.kjueaiud.com/