IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 软件质量保证常用测试方法---边界值测试,等价类测试,路径测试 -> 正文阅读

[开发测试]软件质量保证常用测试方法---边界值测试,等价类测试,路径测试

本文内容整理自西安交通大学软件学院杜小智老师的mooc附件ppt

mooc链接:软件质量保证_中国大学MOOC(慕课)

测试方法

边界值分析技术

基本思想:大量的软件错误通常发生在输入或输出范围的边界或边界附近

边界值选择的基本原则

image-20211213233213847.png

image-20211213233226110.png

image-20211213233235870.png

image-20211213233328365.png

image-20211213233343645.png

image-20211213233352273.png

边界值测试分类

  • 对于一个明确范围的输入或输出,选择“最小值、略小于最小值、正常值、略小于最大值和最大值
    • m i n , m i n + , n o r m . m a x ? , m a x min,min^+,norm.max^-,max min,min+,norm.max?,max
  • 考虑异常,增加两个值进行测试“略小于最小值和略大于最大值
    • m i n ? , m a x + min^-,max^+ min?,max+

边界值分类

考虑到两个问题

  • 是否关心无效输入的问题
  • 是否考虑错误是由多个输入同时取极值造成的

分类

  • 普通边界值测试
    • 单缺陷假设、只考虑有效值
    • 需要的测试用例数量: 4 n + 1 4n+1 4n+1
  • 健壮性测试
    • 单缺陷假设、考虑有效值和无效值
    • 需要的测试用例数量: 6 n + 1 6n+1 6n+1
  • 最坏情况测试
    • 多缺陷假设、只考虑有效值
    • 需要的测试用例数量: 5 n 5^n 5n
  • 健壮最坏情况测试
    • 多缺陷假设、考虑有效值和无效值
    • 需要的测试用例数量: 7 n 7^n 7n

案例

image-20211213234542814.png

普通边界值测试

image-20211213234556646.png

健壮性测试

image-20211213234643703.png

最坏情况测试

image-20211213234656447.png

健壮最坏情况

image-20211213234716622.png

等价类测试

等价类概念

  • 定义:等价类是指某个输入域的子集合,在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,或者进行相同的处理
  • 测试某等价类的一组数据就等价于对这一类其他值测试

分类

  • 有效等价类
  • 无效等价类

两个动机

  • 期望进行某种意义上的完备性测试
  • 期望尽可能多地避免冗余测试

核心:对输入域和输出与进行等价划分

image-20211213235233796.png

等价类测试原则

  1. 如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类

    image-20211213235619669.png

  2. 如果规定了输入数据的个数,则类似地可划分出一个有效等价类和两个无效等价类

    image-20211213235627310.png

  3. 如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)

    image-20211213235636213.png

  4. 如规定了输入数据必须遵守的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)

    image-20211213235643023.png

  5. 如果确知已划分的等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类

  6. 等价类的划分通常不能一步到位,需要多次尝试才能得到效果较好的等价类

等价类测试流程

image-20211213235741494.png

确定等价关系

  • 首先确定程序的所有输入条件
  • 然后针对每一个输入条件,基于等价类划分原则将输入域分成两大类等价类:有效等价类和无效等价类

确定等价关系是等价类测试中最有挑战性的工作

生成测试用例

  • 给每个等价类设置一个不同的编号
  • 编写一个新的测试用例,尽可能多地包含还没被覆盖到的有效等价类;当所有的有效等价类都被覆盖之后,进入下一个步骤
  • 编写一个新的测试用例,一次只包含一个还未被覆盖的无效等价类老当所有的无效等价类都被覆盖后,结束

示例

image-20211214000708607.png

确定等价关系

image-20211214000724157.png

生成测试用例

image-20211214000739021.png

输出域等价类

image-20211214000811420.png

image-20211214000821461.png

综合测试用例

image-20211214000844367.png

进一步思考

image-20211214000902292.png

等价类测试扩展

  • 划分依据
    • 是否考虑无效等价类
    • 单缺陷假设还是多缺陷假设
  • 分类
    • 弱一般等价类测试
    • 强一般等价类测试
    • 弱健壮等价类测试
    • 强健壮等价类测试

示例

image-20211214000455301.png

等价关系

image-20211214000508189.png

弱一般等价类测试

image-20211214000526412.png

强一般等价类

image-20211214000539663.png

弱健壮等价类测试

image-20211214000554990.png

强健壮性等价类测试

image-20211214000630702.png

示例2

image-20211214001645769.png

image-20211214001743465.png

image-20211214001805573.png

路径测试

  • 白盒测试又称为结构性测试、透明盒测试、逻辑驱动测试或基于代码的测试
  • 在不同点、不同分支检查程序的状态,从而确定程序的实际状态是否与预期状态一致
    • 主要用于单元测试
    • 包括路径测试和数据流测试

程序图

定义

程序图 p = ( V , E ) p=(V,E) p=(V,E),V是节点的集合、E是有向边的集合。其中,节点表示的是程序中的语句或语句片段,边表示程序语句或语句片段之间的控制流

例子

image-20211214153335569.png

DD路径

  • DD路径(Decision to Decision Paths)是决策到决策的路径,是指一个语句序列
  • 决策语句是指一个节点的入度或出度大于等于2
  • 在DD路径汇中,其语句序列内部没有分支
  • DD-路径可通过程序图中的节点组成的路径来定义

定义

DD路径是程序中的一条链,分为以下5种况

  • 由一个入度为0的节点组成,对应于源节点
  • 由一个出度为0的节点组成,对应于汇节点
  • 有一个入度大于等于2或出度大于等于2的节点组成,对应于判定语句或其结束语句
  • 由一个入度为1且出度为1的节点组成,对应于短分支
  • 由长度大于等于1的最大链组成,对应于串行语句序列

DD路径图

定义

DD路径图 D P = { V , G } DP= \{V,G\} DP={V,G}是一个有向图,V是节点的集合、E是有向边的集合。其中,节点表示的是程序中的DD路径,边表示连续DD路径之间的控制流。

image-20211214154024651.png

拓扑路径

理论上的可行路径

image-20211214154210737.png

可行路径

实际上的可行路径

image-20211214154236304.png

测试覆盖指标

覆盖率

  • 覆盖率是用于度量测试完整性的一种手段
  • 覆盖率=被执行到的测试项数量/总项数 × 100 % \times 100\% ×100%

分类

  • 节点覆盖
    • 定义:节点覆盖 G n o d e G_{node} Gnode?是指采用给定的测试用例集作用于被测软件时,程序图中的所有节点都被遍历到,则称这组测试用例集满足节点覆盖。
  • 边覆盖
    • 定义:边覆盖 G e d g e G_{edge} Gedge?是指采用给定的测试用例集作用于被测软件时,程序图中的所有边都被遍历到,则称这组测试用例集满足边覆盖。
  • 路径覆盖
    • 定义:路径覆盖 G p a t h G_{path} Gpath?是指采用给定的测试用例集作用于被测软件时,程序图中所有从源节点到汇节点的路径都被遍历到,则称这组测试用例集满足路径覆盖。
    • 如果一个程序中存在循环,则很难满足路径覆盖指标

逻辑覆盖指标

  • 语句覆盖
    • 语句覆盖是指设计若干个测试用例,当将它们作用于被测程序后,程序中的每条可执行语句至少被执行一次。
    • 由于程序图来源于程序代码,语句覆盖与节点覆盖相同。
  • 判定覆盖
    • 判定覆盖也称分支覆盖,是指设计一组测试用例,当他们作用于被测软件时,程序中每个判定的取真分支和取假分支至少各执行一次
    • 判定覆盖等同于边覆盖
  • 条件覆盖
    • 条件覆盖是指设计足够多的测试用例,当他们作用于被测软件后,程序中每个判定条件的各种可能取值至少被执行一次
    • 条件覆盖关注的是更为细致的条件取值情况,而不仅仅是整个判定的取值
  • 判定-条件覆盖
    • 判定-条件覆盖是哦安定覆盖和条件覆盖的结合,要求设计一组测试用例,针对被测程序运行完这些测试用例后,不仅程序中每个判定的各种取值至少被执行一次,而且每个判定中每个条件的各种取值页至少被执行一次
  • 条件组合覆盖
    • 条件组合覆盖是指设计足够多的测试用例,运行被测软件后,程序中每个判定的所有条件的可能取值组合都至少被执行一次
    • 如果一个判定中包含n个简单条件,为达到条件组合覆盖,需要执行 2 n 2^n 2n种情况
  • 路径覆盖
    • 路径覆盖是指设计一组测试用例,当他们作用于被测软件时,程序中的所有路径都至少被覆盖一次

image-20211214164703207.png

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:47:02  更:2022-01-17 11:47:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 6:00:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码