——网易云课堂《开发者测试》课程笔记
这节我们来介绍,图覆盖准则。
有了图,我们如何来覆盖它,需要一些规则。通常我们可以进一步去扩展,一个子图可以从这一个点可达,是指从这个点出发,我们存在这么一条路径,到达这个子图,这个概念叫可达。特别需要注意可达要分为两种情况,第一个我们称之为语法可达,也就是在我们通过语法构建的某种图结构当中,是存在一条路径可以到达这个子图。另外一个叫语义可达,是指在实际的程序当中我们存在这么一个测试,可以跑到这个子图。从可达,我们可以拓展到我们测试里面一个非常重要的概念,也就是这一节的重点。 所谓覆盖,是指存在一条测试路径p,可以覆盖到某个顶点v,是指,这个v,顶点v,恰好就在这个路径里面。这里面特别需要注意在这里面我们强调的是测试路径,并不仅仅是路径。我们简单复习一下什么叫测试路径,是指这条路径的出发点是初始节点,结束点就是终结节点,这么一条路径我们才称之为测试路径。
请看这张图,我们在上节当中讲过这里存在4条测试路径,也就是在路径v1-v2-v4-v5-v7这条路径当中,那我们覆盖了,v5,当然也覆盖了1-2-4-7其他4个节点。我们可以进一步拓展,边的覆盖。所谓一个边被一个测试路径覆盖是指,这边恰好就在这个路径里面,比如刚才那条路径,就覆盖了,v4到v5这一条边。但是,刚才那条路径也就是1-2-4-5-7这条路径并没有覆盖到4-6这条边,虽然它已经覆盖了v4个顶点,但他没有覆盖到v4到v6这条边上,并不属于p这条路。可以想象的就是我们可以进一步拓展覆盖的概念,一个子路径p’,被一个测试路径p覆盖,是指p’恰好就在这个p里面。比如,我们一个子路径4-5-7,恰好被p这条路径给覆盖。有了覆盖的概念,我们可以定义一些图的覆盖准则。我们首先要做两个准备工作,第一,我们需要从一些软件资料去构建某一种图的模型,然后我们再去要求一些测试来覆盖,所谓的这些顶点,边或者一些子路径等等。 接下来我们介绍一种常见的图覆盖类型叫结构覆盖。所谓结构覆盖,是指我们仅仅关注图的点和边,并不在意里面的是什么?
我们请看这张图,这张图可以来自源代码,来自需求文档或者某种设计图。但当有这些资料抽象为一张图以后我们并不关心里面的什么,我们仅仅关心如何去覆盖这些点和边和相关的性质。另外一种常见的图覆盖类型叫数据流覆盖。
我们也看这张图,这时我们可以发现,我们已经在图的点和边上已经标注了一些程序信息,这些内容我们会在以后的章节给大家详细讲解。 我们接下来介绍了一个非常重要的概念,测试准则,可以分为以下几个概念分步介绍。 第一,测试需求,测试需求是指用来描述测试路径性质的一些定义。所谓测试准则,是指来描述测试需求的一些规则。
给定一个测试准则C,对应派生的一个测试需求集TR,我们称之为一个测试用例集T满足这个准则,是指这个测试需求里面的TR里面的每一个测试需求T,tr,都可以被这个大的测试用例集T的某一个测试用例所满足。这就是测试准则,及其图覆盖准则的一些应用。