自動化會提高測試覆蓋率,那測試覆蓋率是什麽?
原創
最后编辑:李晓琳 于 2022-08-17 14:10:16
1497次查看
本篇目錄
測試覆蓋率是什麽?
测试覆盖率(test coverage)是2018年公布的计算机科学技术名词,它是测试质量的度量标准之一,告诉我们测试了多少代码。它定义了系统的某些实体,目的是用测试覆盖它们。这是一种用来指示我们什么时候进行了充分的测试,并告诉我们还需要测试什么(从而扩大了覆盖范围)的方法。如果把測試比喻爲打掃房子,那些不常用的房間總會被遺漏,我們總會忘記諸如次臥衛生間這樣的區域,所以打掃的覆蓋範圍不包括就那個衛生間。
想象一下,如果我們的打掃標准只包括打掃臥室。按照這個標准,如果打掃了所有的臥室,就意味著整個房子都是幹淨的嗎?
並非如此,因爲我們完全忽略了廚房、餐廳、衛生間等房子內的其他部分!因此,務必要細致精准地度量測試覆蓋率。具有一定程度的覆蓋率是測試質量的一項指標,但它從來不是系統質量的指標,也不能保證所有內容都經過測試。測試覆蓋率告訴我們測試代碼的百分比,但這並不意味著它在每種情況下都被測試過。
測試覆蓋率有什麽優勢?
依然是以打掃房屋爲例,測試覆蓋率可以:● 度量打扫的质量;
● 指示何时该停止打扫;
● 提醒我们还有其他地方需要清理。
某些標准可能比其他標准更強大。了解它們可以讓我們知道測試的深度以及何時應用某個或其他標准。例如,如果涵蓋標准A的任何測試用例集TS也涵蓋標准B,則可以說標准A包括另一個標准B。
按照上述原則,清潔房屋就可以遵循以下標准:
1. 打扫每个卧室;
2. 打扫房子的每一部分(包括卧室、厨房、卫生间等);
3. 打扫每一个小地方,甚至是角落,因为它们很可能会积聚灰尘。
顯而易見,標准3包括2,而2又包括1,關系是傳遞的,即3包括1。如果我們爲標准3設計一個測試用例,它也應該包括前兩個標准。對于測試軟件,標准通常包括程序中的各種路徑、條件、語句、函數等。
另一個真實的例子可能是等價類劃分,先劃分若幹個等價類,然後從每個部分中選取具有代表性的數據當做測試用例進行合理的分類,這樣就覆蓋了所有類。如果考慮白盒測試,又有語句覆蓋率、分支覆蓋率、路徑覆蓋率等,特別是對于狀態機,我們有指示覆蓋所有節點、所有轉換等的標准。
自動化測試如何適用?
現在就可以想象一下扔掉掃帚,換成一個超高速的掃地機器人。它可以解放雙手、更快地清理地板、減少被遺漏的區域,還可以讓自己在工作中專注于更重要的事情。至此,我們可以得出結論:測試自動化=更高的測試覆蓋率。

DevOps幹貨
