图覆盖准则

——网易云课堂《开发者测试》课程笔记

这节我们来介绍,图覆盖准则。

有了图,我们如何来覆盖它,需要一些规则。通常我们可以进一步去扩展,一个子图可以从这一个点可达,是指从这个点出发,我们存在这么一条路径,到达这个子图,这个概念叫可达。特别需要注意可达要分为两种情况,第一个我们称之为语法可达,也就是在我们通过语法构建的某种图结构当中,是存在一条路径可以到达这个子图。另外一个叫语义可达,是指在实际的程序当中我们存在这么一个测试,可以跑到这个子图。从可达,我们可以拓展到我们测试里面一个非常重要的概念,也就是这一节的重点。 所谓覆盖,是指存在一条测试路径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的某一个测试用例所满足。这就是测试准则,及其图覆盖准则的一些应用。

本文分享自微信公众号 - 贝克街的捉虫师(BSTester),作者:由 陈振宇 授课

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-12-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 测试中的图

    我们首先介绍如何从软件当中产生图及图的基本定义。图当中,如何去选择它的路径,如何产生测试路径。 曾经有人说过,所谓软件测试,就是把软件变成一张图,然后覆盖它。由...

    归根落叶
  • 健全性测试与冒烟测试概述

    冒烟和健全性测试是软件测试中最容易被误解的主题。关于该主题的文献很多,但其中大多数令人困惑。下面的文章试图解决这种疑惑。

    归根落叶
  • 再造一个轮,又一个测试云平台

    市面上有很多的测试工具,比如测试接口有Jmeter、Postman等,自动化有Robotframework、Appium、Selenium等,每个人掌握的技能不...

    归根落叶
  • USB钓鱼几种方式总结。

    当目标点开美图(恶意LNK快捷方式文件:confidential.jpg.lnk),使目标认为他正在打开图像(confidential.jpg),HTA dro...

    重生信息安全
  • Identity Server4学习系列四之用户名密码获得访问令牌

    Identity Server4支持用户名密码模式,允许调用客户端使用用户名密码来获得访问Api资源(遵循Auth 2.0协议)的Access Token,MS...

    郑小超.
  • 经典面试题-组合和聚合的区别

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • 一文让你完全弄懂Stegosaurus

    国内关于 Stegosaurus 的介绍少之又少,一般只是单纯的工具使用的讲解之类的,并且本人在学习过程中也是遇到了很多的问题,基于此种情况下写下此文,也是为我...

    Angel_Kitty
  • 【译】在列表视图中处理空值

    本篇文章主要针对两类开发者。第一个是曾遇到过IllegalArgumentException: Path must not be empty问题的开发者。第二个...

    小鄧子
  • 如何批量安装R语言包

    当你在新的环境下, 安装R语言时,你需要安装很多包,比如tidyverse,比如data.table,这里你可以写一个函数,将所有需要的包写进去,然后进行批量安...

    邓飞
  • 拯救CPU

    导语:在过去的10-20年间,硬件技术取得了惊人的进步,但在高性能数据中心和高度受限的移动环境中却仍然不能“奢求”廉价的性能。很多人认为,硬件的下一个进步是将神...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券