1.軟件測試覆蓋率是軟件測試技術(shù)有效性的一個度量手段,用來度量測試完整性。意思概括的說,軟件測試的工作中會有非常非常多的item(任務),執(zhí)行過的任務和總?cè)蝿諗?shù)的一個比值,這就是覆蓋率。
計算公式:覆蓋率=(至少被執(zhí)行一次的item數(shù))/item的總數(shù)
2.大的角度來說,我的一個需求現(xiàn)在有一萬個功能點,那這一次測試了9000個功能點。用9000除以1萬,證明這輪測試的功能點覆蓋率達到了90%,這就是一個最簡單的計算模式。
二、測試覆蓋率是什么?
測試覆蓋率(test coverage)是 2018 年公布的計算機科學技術(shù)名詞,它是測試質(zhì)量的度量標準之一,告訴我們測試了多少代碼。它定義了系統(tǒng)的某些實體,目的是用測試覆蓋它們。這是一種用來指示我們什么時候進行了充分的測試,并告訴我們還需要測試什么(從而擴大了覆蓋范圍)的方法。
如果把測試比喻為打掃房子,那些不常用的房間總會被遺漏,我們總會忘記諸如次臥衛(wèi)生間這樣的區(qū)域,所以打掃的覆蓋范圍不包括就那個衛(wèi)生間。
想象一下,如果我們的打掃標準只包括打掃臥室。按照這個標準,如果打掃了所有的臥室,就意味著整個房子都是干凈的嗎?
并非如此,因為我們完全忽略了廚房、餐廳、衛(wèi)生間等房子內(nèi)的其他部分!因此,務必要細致精準地度量測試覆蓋率。具有一定程度的覆蓋率是測試質(zhì)量的一項指標,但它從來不是系統(tǒng)質(zhì)量的指標,也不能保證所有內(nèi)容都經(jīng)過測試。測試覆蓋率告訴我們測試代碼的百分比,但這并不意味著它在每種情況下都被測試過。
三、測試覆蓋率有什么優(yōu)勢?
依然是以打掃房屋為例,測試覆蓋率可以:
● 度量打掃的質(zhì)量
● 指示何時該停止打掃
● 提醒我們還有其他地方需要清理
某些標準可能比其他標準更強大。了解它們可以讓我們知道測試的深度以及何時應用某個或其他標準。例如,如果涵蓋標準 A 的任何測試用例集 TS 也涵蓋標準 B,則可以說標準 A 包括另一個標準 B
按照上述原則,清潔房屋就可以遵循以下標準:
● 打掃每個臥室
● 打掃房子的每一部分(包括臥室、廚房、衛(wèi)生間等)
● 打掃每一個小地方,甚至是角落,因為它們很可能會積聚灰塵
顯而易見,標準 3 包括 2,而 2 又包括 1,關(guān)系是傳遞的,即 3 包括 1。如果我們?yōu)闃藴?3 設計一個測試用例,它也應該包括前兩個標準。對于測試軟件,標準通常包括程序中的各種路徑、條件、語句、函數(shù)等。
另一個真實的例子可能是等價類劃分,先劃分若干個等價類,然后從每個部分中選取具有代表性的數(shù)據(jù)當做測試用例進行合理的分類,這樣就覆蓋了所有類。如果考慮白盒測試,又有語句覆蓋率、分支覆蓋率、路徑覆蓋率等,特別是對于狀態(tài)機,我們有指示覆蓋所有節(jié)點、所有轉(zhuǎn)換等的標準。
四、自動化測試如何適用?
現(xiàn)在就可以想象一下扔掉掃帚,換成一個超高速的掃地機器人。它可以解放雙手、更快地清理地板、減少被遺漏的區(qū)域,還可以讓自己在工作中專注于更重要的事情。
至此,我們可以得出結(jié)論:測試自動化=更高的測試覆蓋率。
最后如果你對特斯汀感興趣,搜索“特斯汀軟件測試騰訊課堂”或關(guān)注公眾號“特斯汀軟件測試”,里面涵蓋很多精彩免費視頻或干貨知識。