提升系統(tǒng)測試覆蓋率的新方法
在去年的系統(tǒng)測試階段,測試覆蓋工具的試運行曾在幾個項目中進行,取得了一般效果。然而,目前事業(yè)部的項目主要以維護為主,每次測試都是增量加核心業(yè)務(wù)測試(用例很少),因此經(jīng)常會出現(xiàn)很多覆蓋率為0或者很低的情
在去年的系統(tǒng)測試階段,測試覆蓋工具的試運行曾在幾個項目中進行,取得了一般效果。然而,目前事業(yè)部的項目主要以維護為主,每次測試都是增量加核心業(yè)務(wù)測試(用例很少),因此經(jīng)常會出現(xiàn)很多覆蓋率為0或者很低的情況。這導(dǎo)致分析測試覆蓋率需要耗費大量時間,而投入產(chǎn)出比并不合適。對于新項目來說,由于版本變更頻繁,現(xiàn)有的覆蓋率統(tǒng)計工具也并不適用于項目的開始階段。為解決上述問題,我們可以通過對現(xiàn)有的覆蓋率統(tǒng)計工具進行二次開發(fā),實現(xiàn)生成增量代碼的覆蓋率信息,包括增量行覆蓋率、增量分支覆蓋率以及增量函數(shù)覆蓋率。目前,我們已經(jīng)成功實現(xiàn)了基于Linux C程序和gcov的增量覆蓋率統(tǒng)計方法,該方法能夠快速、準確地統(tǒng)計出模塊的增量覆蓋率信息,并將結(jié)果以報表形式展示。未來,根據(jù)實際效果,我們也將考慮是否引入JAVA基于emma的增量代碼覆蓋率統(tǒng)計工具。
適用人群和具體實現(xiàn)方法
本方法適用于測試設(shè)計師、測試經(jīng)理、質(zhì)量保證主管以及項目經(jīng)理。具體實現(xiàn)包括以下幾個方面:
函數(shù)覆蓋實現(xiàn)
1. 增量函數(shù)列表(FN):根據(jù)執(zhí)行結(jié)果中的所有函數(shù)名和開始位置,進行增量遍歷代碼修改記錄。若代碼行數(shù)在兩個函數(shù)的起始行之間,則說明該函數(shù)本次被修改。
2. 增量函數(shù)執(zhí)行次數(shù)(FNDA):根據(jù)增量函數(shù)結(jié)果,在所有函數(shù)的執(zhí)行次數(shù)中進行過濾,剔除在增量函數(shù)中不存在的函數(shù)執(zhí)行次數(shù)。
3. 增量函數(shù)總數(shù)(FN):即增量函數(shù)列表(FN)的個數(shù)。
4. 增量函數(shù)執(zhí)行總數(shù)(FNH):指增量函數(shù)執(zhí)行次數(shù)(FNDA)中執(zhí)行次數(shù)大于0的個數(shù)。
代碼行覆蓋實現(xiàn)
1. 增量代碼行(DA):根據(jù)代碼修改記錄結(jié)果,在所有代碼行中進行過濾,排除在代碼修改記錄中不存在的代碼行。若某行在DA中不存在但在修改記錄中存在,說明該行為無效代碼,應(yīng)刪除。
2. 增量代碼有效行總數(shù)(LF):即上一步驟中DA的個數(shù)。
3. 被執(zhí)行到的增量代碼有效行總數(shù)(LH):指在DA記錄中,執(zhí)行次數(shù)非0的行數(shù)。
分支覆蓋實現(xiàn)
1. 增量分支總數(shù)(BRDA):根據(jù)代碼修改記錄結(jié)果,在所有分支行中進行過濾,剔除在代碼修改記錄中不存在的分支行。
2. 增量分支總數(shù)(BRF):指增量分支總數(shù)的個數(shù)。
3. 增量分支執(zhí)行個數(shù)(BRH):表示增量分支總數(shù)(BRDA)中執(zhí)行次數(shù)大于0的個數(shù)。
通過以上實現(xiàn)方法,我們可以更全面地統(tǒng)計系統(tǒng)的覆蓋率信息,從而提升測試質(zhì)量和效率。