在測試里面,一般會將測試覆蓋率分為兩個部分,即”需求覆蓋率“和”代碼覆蓋率“?梢钥吹,代碼覆蓋率其實是測試覆蓋率的一部分而已。其中,最常討論和關心的是”代碼覆蓋率“,代碼覆蓋率又分為程序語句和代碼行覆蓋,分支覆蓋和條件覆蓋。對于這些概念,我們逐個解釋。
需求覆蓋率:如果需求已經定義好,這個時侯我們就需要考慮需求覆蓋率了。這個時候需要注意的是,這里的需求不僅僅是指功能需求,還要包括性能需求。衡量需求覆蓋率的最直觀的方式是我們有多少功能點,我們有多少性能點要求,這些將作為分母;我們寫了多少測試用例,覆蓋了多少模塊,多少功能點,我們的性能測試用例考慮了待測程序多少性能點,這些作為分子。
代碼覆蓋率:為了更加全面的覆蓋,我們可能還需要測試程序的流程,我們可能會考慮到一個函數的數據的輸入與輸出,甚至是每一行代碼的執行情況,代碼的每一條邏輯和分支,這個時候我們的測試執行情況就以代碼覆蓋率來衡量,這也是我們常在單元測試中念叨的覆蓋率覆蓋率的問題。
語句覆蓋率:換個名字叫做代碼行覆蓋率,這就是監視每行代碼是否在用例(當然之所有的)中是否被執行到,準確點說是我們的用例里面大概執行了百分之多少的語句/代碼行數。需要注意的是,即使所有的語句都被執行到,也不一定執行到了所有的路徑。比如有五條語句:ABCDE,如果我們執行了用例覆蓋了ABCDE,另外一個用例這個時候我們覆蓋了所有語句,但是可能還存在一個路徑(如ABC)沒有執行,例如:
public verifyToken(string yourname, string yourtitle)
{
A output(”Hello, my dear friends“);
B if(yourname == "uniquestudiowcd")
{
C output("Hello, Aaron");
}
D if(yourtitle == "tester")
{
E output("Hello, my dear tester");
}
}
文章來源于領測軟件測試網 http://www.kjueaiud.com/