测试覆盖率是什么?
测试覆盖率(test coverage)是 2018 年颁布的计算机科学技术名词,它是测试品质的度量规范之一,通知咱们测试了多少代码。它定义了零碎的某些实体,目标是用测试笼罩它们。这是一种用来批示咱们什么时候进行了充沛的测试,并通知咱们还须要测试什么(从而扩充了覆盖范围)的办法。
如果把测试比喻为清扫房子,那些不罕用的房间总会被脱漏,咱们总会遗记诸如次卧卫生间这样的区域,所以清扫的覆盖范围不包含就那个卫生间。
设想一下,如果咱们的清扫规范只包含清扫卧室。依照这个规范,如果清扫了所有的卧室,就意味着整个房子都是洁净的吗?
并非如此,因为咱们齐全疏忽了厨房、餐厅、卫生间等房子内的其余局部!因而,务必要粗疏精准地度量测试覆盖率。具备肯定水平的覆盖率是测试品质的一项指标,但它从来不是零碎品质的指标,也不能保障所有内容都通过测试。测试覆盖率通知咱们测试代码的百分比,但这并不意味着它在每种状况下都被测试过。
测试覆盖率有什么劣势?
仍然是以清扫屋宇为例,测试覆盖率能够:
● 度量清扫的品质;
● 批示何时该进行清扫;
● 揭示咱们还有其余中央须要清理。
某些规范可能比其余规范更弱小。理解它们能够让咱们晓得测试的深度以及何时利用某个或其余规范。例如,如果涵盖规范 A 的任何测试用例集 TS 也涵盖规范 B,则能够说规范 A 包含另一个规范 B。
依照上述准则,清洁屋宇就能够遵循以下规范:
- 清扫每个卧室;
- 清扫房子的每一部分(包含卧室、厨房、卫生间等);
- 清扫每一个小中央,甚至是角落,因为它们很可能会积累灰尘。
不言而喻,规范 3 包含 2,而 2 又包含 1,关系是传递的,即 3 包含 1。如果咱们为规范 3 设计一个测试用例,它也应该包含前两个规范。对于测试软件,规范通常包含程序中的各种门路、条件、语句、函数等。
另一个实在的例子可能是等价类划分,先划分若干个等价类,而后从每个局部中选取具备代表性的数据当做测试用例进行正当的分类,这样就笼罩了所有类。如果思考白盒测试,又有语句覆盖率、分支覆盖率、门路覆盖率等,特地是对于状态机,咱们有批示笼罩所有节点、所有转换等的规范。
自动化测试如何实用?
当初就能够设想一下扔掉扫帚,换成一个超高速的扫地机器人。它能够解放双手、更快地清理地板、缩小被脱漏的区域,还能够让本人在工作中专一于更重要的事件。
至此,咱们能够得出结论:测试自动化 = 更高的测试覆盖率。