软件工程导论 黑盒测试、白盒测试

2023-11-10

单元测试

集中检测软件设计的最小单元(即模块)。

测试重点

  • 模块接口
  • 局部数据结构
  • 重要执行通路
  • 出错处理通路
  • 边界条件

代码审查

一次审查可以发现多个错误,可以减少系统验证的总工作量。

集成测试

非渐增式测试

将程序作为一个整体,对错误的定位和改正十分困难。

渐增式测试

自顶向下集成

从主控程序模块开始,沿着程序控制层次向下移动,逐渐把各个模块结合起来。

步骤

  1. 对主控模块进行测试,测试时用存根程序代替所有直接附属于主控制模块的模块;
  2. 以深度优先或宽度优先的策略每次用一个实际模块代替一个存根程序;
  3. 在结合进一个模块的同时进行测试;
  4. 为保证新模块未引入新错误,可选进行回归测试。

优点

  • 无需驱动程序
  • 早期可实现和验证主要功能
  • 早期发现上层模块错误

缺点

  • 需要存根程序
  • 早期不能充分展开人力
  • 底层关键模块错误发现晚

自底向上集成

从原子模块开始测试。

步骤

  1. 把底层模块合成某个特定的软件子功能的簇;
  2. 写一个驱动程序来协调测试数据的输入和输出;
  3. 对有模块组成的子功能簇进行测试;
  4. 去掉驱动程序,沿软件结构自下向上移动,合并子功能簇。

优点

  • 无需存根程序
  • 早期充分展开人力
  • 早期发现底层关键模块错误

缺点

  • 需要驱动程序
  • 实现和验证主要功能较晚
  • 发现上层模块错误较晚

回归测试

确认增加模块之后没有引入新的错误或导致其他模块产生错误。

确认测试

用于检验软件有效性。以用户为主进行。
通常采用黑盒测试

Alpha测试

由用户在开发者环场所,在开发者指导下进行测试。在受控环境中进行测试

Beta测试

用户在一个或多个用户场所进行测试,开发者不在场。即在不受控环境中进行测试。

白盒测试和黑盒测试

诶呦图丢了

黑盒测试

用于发现界面错误、功能错误或缺失,初始化和终止错误、性能错误、数据结构错误、外部数据库访问错误等。

等价划分

将程序输入域划分为若干个数据类,据此导出测试用例。

边界值分析

测试数据在边界值附近选取,应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据。

错误推测

很大程度上依靠直觉和经验进行。列举出易发生错误的特殊情况。

白盒测试

进行于测试过程早期,确定一组最可能发现某个(类)错误的测试数据。

逻辑覆盖

有选择地执行程序中的某些具有代表性的通路是对穷尽测试的唯一可执行的替代方案。

  • 判定覆盖(分支覆盖):每个语句和每个判定的每种可能的结果都应该至少执行一次。
  • 条件覆盖:每个语句至少执行一次。每个判定表达式中的每个条件都取到所有可能的结果
  • 判定/条件覆盖:每个语句和每个判定的每种可能的结果都应该至少执行一次每个判定表达式中的每个条件都取到所有可能的结果。
  • 条件组合覆盖:每个判定中条件的各种组合都出现至少一次。即if (id <= 0 || name == null || name.length <= 0)需要3条测试数据。
  • 路径覆盖:选取足够多的测试数据,使程序每条可能路径都至少执行一次,如果程序有环,则每个环至少经过一次。

控制结构测试

基本路径测试

诶呦图丢了

条件测试

  • 容易度量条件的测试覆盖率
  • 程序内部条件覆盖率可指导附加测试的设计

循环测试

  • 简单循环:测试集:(n为循环允许的最大次数)
    • 跳过循环
    • 循环1次
    • 循环2次
    • 循环m<(n-1)次
    • 循环n-1次
    • 循环n次
    • 循环n+1次
  • 嵌套循环:如果把简单循环的测试方法.直接应用到嵌套循环,可能的测试数就会随嵌套层数的增加按几何级数增长,这会导致不切实际的测试数目。故采用如下方法:
    • 从最内层循环开始测试,把所有其他循环都设置为最小值。
    • 对最内层循环使用简单循环测试方法,而使外层循环的送代参数取最小值,并为越界值或非法值增加一些额外的测试。
    • 由内向外,对下一个循环进行测试,但保持所有其他外层循环为最小值,其他嵌套循环为“典型”值 。
    • 继续进行下去,直到测试完所有循环 。
  • 串接循环:
    • 如果串接循环的各个循环都彼此独立,则可以使用前述的测式简单循环的方法来测试串接循环。但是,如果两个循环中接而且第一个循环的计数器值是第二个循环的初始值,则这西个循环并不是独立的。当循环不独立时,建议使用测试嵌套循环的方法来测试串接循环。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件工程导论 黑盒测试、白盒测试 的相关文章

  • 简单实用Python程序

    描述 此为遍历一个文件夹里面的所有 py文件并将文件名输出到txt文件 import os import os path import re rootdir D dpkt master dpkt fileTest open r D file

随机推荐

  • Nhibernate使用HQL返回自定义类型

    摘要 使用HQL返回自定义类型的结果集 前提 已经定义好Customer类及其Nhibernate映射文件xml 表结构及数据 自定义类 Mapping文件 条件查询 Criteria Query public IList
  • Python进阶-----高阶函数zip() 函数

    目录 前言 zip 函数简介 运作过程 应用实例 1 有序序列结合 2 无序序列结合 3 长度不统一的情况 前言 家人们 看到标题应该都不陌生了吧 我们都知道压缩包文件的后缀就是zip的 当然还有rar等类型 在Python中也有这么一个函
  • remote: Support for password authentication was removed on August 13, 2021. Please use a personal ac

    一 问题描述 访问了全球最大的同性交友网站 又刚好去更新提交代码 又或你创建了一个新的仓库送给自己 又刚好想把这个仓库送给 push github 你就刚好会遇到这个问题 remote Support for password authen
  • Web菜鸟入门教程 - Springboot接入认证授权模块

    网络安全的重要性不言而喻 如今早已不是以前随便弄个http请求就能爬到数据的时代 而作为一个架构师 网络安全必须在产品开发之初就考虑好 因为在产品开发的后期 一方面是客户增多 压力变大 可供利用的时间也会变少 另一方面 随着时间的推移 项目
  • 归并排序的思想

    归并排序是一种基于分治思想的经典排序算法 它将待排序的数组分成两个部分 然后递归地对这两个部分进行排序 最后再将排序好的两个部分归并成一个有序的数组 具体实现过程如下 1 将待排序数组不断二分 直到只剩下一个元素 此时该元素就是有序的 2
  • C语言基础(十二)- 数据结构概览

    相关术语 数据 类 数据对象 集合 数据元素 类对象 数据项 属性 什么是数据结构 概念 相互之间存在一种或多种特定关系的数据元素 类对象 的集合 数据结构包括 数据的逻辑结构 数学形式 集合结构 线性结构 1 1 树形结构 1 n 图形结
  • ORA-28009:connection as SYS should be as SYSDBA OR SYSOPER

    1 美图 1 背景 Navicate链接ORACLE报错 ORA 28009 connection as SYS should be as SYSDBA OR SYSOPER 直接链接报错 ORA 28009 connection as S
  • elasticsearch启动报错解决 问题集分析

    elasticsearch解决启动报错问题集 ps 别问我为什么知道这么多报错 我就是从安装到启动 一步一步按着下面报错顺序踩坑的 气死了 希望能帮到入门的你 1 内存报错 报错信息 Java HotSpot TM 64 Bit Serve
  • Hadoop实战实例

    分享一下我老师大神的人工智能教程 零基础 通俗易懂 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 造福人民 实现我们中华民族伟大复兴 Hadoop实战实例 Hadoop是Google Ma
  • Numpy.linalg模块的lstsq()进行线性回归拟合(数学建模)

    建模中经常使用线性最小二乘法 实际上就是求超定线性方程组 未知数少 方程个数多 的最小二乘解 前面已经使用pinv 求超定线性方程组的最小二乘解 下面再举两个求最小二乘解的例子 并使用numpy linalg模块的lstsq 函数 求解 先
  • cef3:禁止win10高dpi下cef对内部网页进行缩放

    cef对内部网页进行缩放
  • Pycharm中常用快捷键使用及注释方式

    Pycharm中常用快捷键使用及注释方式 1 快捷键 设置 Ctrl Alt s 或 File gt Settings gt Keymap gt 搜索栏搜索 format gt Code 快速创建文件 Alt Insert 快速注释代码 C
  • insightface pytorch 答疑指南

    之前写过一篇人脸识别从原理到实践 详细介绍了人脸识别相关的算法 模型和Loss等 里面也提到insightface成为当前工业事实上的基准 但是它各种牛逼 唯一不足的点就是开始时选了mxnet框架开发 奈何现在基本没什么人用了 所以在22年
  • PCL 使用LCCP算法进行点云分割

    LCCP分割 一 算法原理 1 概述 2 参考文献 二 代码实现 三 结果展示 1 原始点云 2 分割结果 四 相关链接 五 测试数据 一 算法原理 1 概述 LCCP是Locally Convex Connected Patches的缩写
  • Android使用Gradle统一配置依赖版本

    转自 http blog csdn net u014651216 article details 54602354 前言 目前的Android开发为了减少编译时间 开发效率 大多都采用模块化 组件化的开发方式 采用这种方式不可避免的将会用到
  • UE4入门序列 01(UE4安装和环境配置)

    1 UE4的安装流程 2 创建一个示例项目 蓝图和C 3 C 的环境设置 4 运行示例项目 1 UE4的安装流程 Epic Games官网下载客户端 注册一个Epic Games的账号 Epic Games客户端包括了Epic公司旗下的Ep
  • vue el-select下拉框,选择后赋值成功,但是框上不显示选中的值的解决办法

    最近在做项目时发现el select下拉框 选择后赋值成功 但是框上不显示选中的值 后来查了下官方文档之后发现原因 vue 无法监听动态新增的属性的变化 需要用 set 来为这些属性赋值 如上图所示 操作人下拉框初始没有值 选择了操作班组之
  • Go语言的跨文件调包

    一 前言 文件的结构如下 go mod main main go util util go 文件在调用其它包的时候 需要在代码中引用其他的函数 包的命名一般都以小写为主 文件中函数的以首字符为大写的函数为共有函数 小写的为私有函数 只能是在
  • SQL增加表的约束(主键、外键、check,唯一)

    以下操作是在已经创建了表之后 进行的约束条件的增加 1 增加check约束条件 alter table 表名 add constraint 约束条件名称 check 约束条件 如 alter table test add constrain
  • 软件工程导论 黑盒测试、白盒测试

    单元测试 集中检测软件设计的最小单元 即模块 测试重点 模块接口 局部数据结构 重要执行通路 出错处理通路 边界条件 代码审查 一次审查可以发现多个错误 可以减少系统验证的总工作量 集成测试 非渐增式测试 将程序作为一个整体 对错误的定位和