系统与软件工程软件测试设计技术

测试设计技术包含基于规格说明书的技术,基于结构的技术,基于经验的技术三大项。

一 基于规格说明书的技术:

1.1 等价类划分

等价类划分使用测试项模型将测试项输入和输出划分为等价类(也称为“分区”),其中每个等价类都应当作为一个测试条件。这些等价类应该从测试依据导出,对于每个分区中的所有值,都可以被测试项类似地处理(即等价类中的值是“等同的”)。有效的输入输出以及无效的输入输出均可导出等价类划分。

示例:对于期望小写字母字符作为(有效)输入的测试项,可以派生的无效输入等价类包括包含整数、实数、大写字母字符、符号和控制字符的等价类,具体取决于测试期间所需的严谨程度。

注1:对于输出等价类,基于测试项规格说明中描述的过程导出相应的输入分区。然后从输入分区中选择测试输人。

注 2:无效的输出等价类通常对应于未明确指定的任何输出。由于未指定,通常会根据各测试人员的主观判断得到等价类。当应用基于经验的技术(如错误猜测)时,也可能出现这种主观形式的测试设计。

注3:域分析法通常归类为等价类划分和边界值分析的结合。

1.2 分类树

分类树方法使用测试项模型将测试项的输入进行划分,并且用分类树的方式进行图形化表示。测试项的输入被分为若干个“分类”,每个划分由若干个独立(不重叠)的“类”和子类组成,同时分类集是完整的(被建模测试项的所有输入域都被识别并包括在所有分类内)。每个分类应是一个测试条件。根据测试的严格程度,通过分解分类得到的“类”可能会进一步分为“子类”。根据要求的测试覆盖程度,导出的划分和类可能同时包括有效和无效的输入数据。将分类,类和子类之间的层次关系塑造成一棵树,测试项的输入域作为树的根节点,分类作为分支节点,类或者子类作为叶节点。

注:分类树方法中的分区过程类似于等价类划分。其关键的区别在于,在分类树方法中,划分(分类和类别)必须完全不相交,而在等价类划分中,它们可能会重叠,具体取决于技术的应用方式。此外,分类树方法还包括分类树的设计,其提供测试条件的视觉展示。

1.3 边界值分析

边界值分析是通过对测试项模型边界值的分析,将测试项的输入和输出划分为具有可识别边界的多个有序集和子集(分区和子分区),其中每个边界是测试条件。边界应来自测试依据。

示例:一个分区的定义是从1~10的整数,该分区有两个边界,下边界是1,上边界是10,这些是测试条件。

注:对于输出边界,可基于测试项规格说明中描述的过程导出相应的输人分区,然后从输人分区中选择测试输人。

1.4 语法测试

语法测试使用测试项输入形式化的语法作为测试设计的依据。语法模型表示为多个规则,其中每个规则根据语法中的元素“序列”元素“迭代"或元素“之间的选择"来定义输人参数的形式。语法可以以文本或图形的形式表示。语法测试中的测试条件应为测试项输入的全部或部分模型。

示例1:巴科斯范式是一种形式化元语言,以文本形式定义一个测试项的语法。

示例2:抽象语法树可以图形化地表示形式化语法。

1.5 组合测试设计技术

组合测试设计技术用于系统地导出有效且可控的测试用例子集,其在测试期间覆盖了导出的测试条件和测试覆盖项。组合是根据测试项参数和参数可取的值来定义的。当多参数(每个参数都有大量离散值)必须相互作用的情况下,这种技术可以显著减少所需的测试用例数量,而不会影响功能覆盖率。

1.6 判定表测试

判定表测试以判定表的形式使用了测试项条件(原因)和动作(结果)之间的逻辑关系(判定规则)模型包括:

测试项的每个布尔条件定义了一对输入等价类,一个对应“真”,一个对应“假”;

每个动作是测试项的预期结果或结果的组合,其表示为布尔值;

一组判定规则表示了条件和动作之间的关系。

测试条件应为条件和动作。

注:如果条件由多个值而不是简单的布尔值组成,则会产生“扩展条目”判定表,其测试可以通过等价类划分来处理。

1.7 因果图

因果图法使用以因果图形式表示测试项原因(例如输入)和结果(例如输出)之间的逻辑关系(判定规则)模型包括:

测试项的每个布尔原因定义了一对输入等价类,一个对应“真”的情况,一个对应“假”的情况;

每个结果定义为测试项的预期结果条件或输出条件组合,表示为布尔值。

测试条件应为原因和结果。

因果图将原因和结果之间的逻辑关系建模为布尔运算符加权的布尔逻辑网络,并根据原因之间的关系和结果之间的关系进行语义和约束建模。

1.8 状态转移测试

状态转移测试使用测试项的状态模型,模型包含测试项可能的状态、状态间的转移,导致转移的实际和转移可能导致的动作。模型的状态应该是离散的、可识别的和数量有限的。单个转移可由事件守护进行约束,事件守护定义了一组条件,当事件发生时,该组条件应为真,从而发生转移。在状态转移测试中,测试条件可以是状态模型的所有状态,状态模型的所有转移或整个状态模型,这取决于测试的覆盖要求。模型可以表示为状态转移图或状态表(也可以使用其他表示方式)。

1.9 场景测试

场景测试使用测试项与其他系统之间的交互序列模型(在此周境中,用户通常被认为是其他系统),以测试所涉及的测试项使用流程。测试条件应是一个交互序列(即一个场景)或所有交互序列(即所有场景)。

场景测试应该包括以下场景:

--“主”场景是测试项的预期典型动作序列,或无典型动作序列时所采取的一个任意选择;

--和“备选”场景表示测试项可选择的(非主)场景。

注1:备选的场景包括非正常的使用、极端或者压力条件和异常。

注2:场景测试通常在功能测试中用于产生“端到端测试”,比如系统测试或者验收测试。场景测试的一种常见形式称为用例测试,其采用了测试项的用例模型来描述测试项如何与一个或多个参与者交互,以测试相关测试项的交互序列(即场景)。

注3:在用例测试中,用例模型用于描述参与者如何触发测试项的各种动作。参与者可以是用户或其他系统。

注4:事务流测试也是一种场景测试。

1.10 随机测试

随机测试使用测试项的输入域模型来定义所有可能输入值的集合。应选择用于生成随机输入值的输入分布。整个输入域应是随机测试的测试条件。

示例:输入分布包括正态分布、均匀分布和运行剖面。

二 基于结构的测试设计技术:

2.1语句测试

应导出测试项的源代码模型,并将语句标识为可执行或不可执行。每个执行语句应为一个测试条件。

注:可在步骤TD4期间采用自动化工具进行不可执行语句的识别。

2.2 分支测试

应导出识别控制流分支的测试项控制流模型。控制流模型的每个分支是一个测试条件分支包括:

从控制流的任一节点到另一节点的条件转移;

从控制流任一节点到另一节点控制的明确无条件转移;

当一个测试项有不止一个人口点时,到测试项一个人口点的控制转移。

注1:分支测试要达到100%的分支覆盖率,要求测试控制流图中的所有的弧(链接或边),包括任何入口和出口之间不包含判定的顺序语句。

注2:分支测试可以要求同时测试条件分支和非条件分支,包括测试项的入口和出口,这取决于要求的测试覆盖水平。

注3:在分支测试中,功能和方法调用不能被识别为独立的测试条件。

2.3 判定测试

应导出识别判定的测试项控制流模型。判定是测试项中可以产生控制流模型两个或多个结果(因此出现子路径)的点。典型的判定用于简单的选择(例如,源代码中的if-then-else),决定何时退出循环(例如,源代码中的while循环),以及case(switch)语句(例如,源代码中的case-1-2-3-.- N)。在判定测试中,控制流模型中的每个判定都应是测试条件。

2.4 分支条件测试

应导出识别判定和判定中条件的测试项控制流模型。判定是测试项中可以产生控制流模型两个或多个结果(因此出现子路径)的点。典型的判定用于简单的选择(例如,源代码中的if-then-else),决定何时退出循环(例如,源代码中的while循环),以及 case(switch)语句(例如,源代码中的 case-1-2-3-..-N,也称switch语句)。在分支条件中,每个判定都应是测试条件。

示例:在程序源代码中,判定语句“AORBANDCthen"是一个测试条件,包含了由逻辑运算符关联的3个条件。

2.5 分支条件组合测试

应导出识别判定和条件的测试项控制流模型。在分支条件组合测试中,每个判定都应该是一个测试条件。

示例:在程序源代码中,判定语句“if A or B and C then”是一个测试条件,包含了由逻辑运算符关联的3个条件。

2.6 修正条件判定覆盖测试

应导出标识判定和条件的测试项控制流模型。修正条件判定覆盖(MCDC)测试中,每个判定应为测试条件。

示例:在程序源代码中,判定语句“if A or B and C then”则包含了逻辑运算符关联的3个条件的测试条件。

2.7 数据流测试

在数据流测试中,应该导出测试项的模型,该模型识别测试项的控制流子路径,在该子路径中,给定变量的每个定义与该变量的后续使用相关,并且后续使用没有重新定义变量的值。

“定义”可能给变量赋了新的值(有时定义将变量保持与之前相同的值)。“使用”是变量出现,不是赋新的值;“使用”可以进一步划分为“p-use”(谓词使用)和“c-use”(计算使用)。谓词使用是指使用变量来确定判定条件(谓词)的结果,例如while-loop,if-then-else等。计算使用是指一个变量作为任何变量定义或输出的计算输入。

在数据流测试中,测试项中变量的每个定义-使用对都是测试条件。

有许多形式的数据流测试,它们都是基于相同的测试条件。本部分中定义的5种形式是:全定义测试、全谓词使用测试、全计算使用测试、全使用测试、全定义使用路径测试。

三 基于经验的测试设计技术:

3.1 错误猜测法

错误猜测法涉及设计测试项中可能存在缺陷类型的检查清单,如果这些缺陷存在于测试项中,允许测试人员识别可能导致失败的测试项输入。每种缺陷类型都应作为测试条件。

注:缺陷类型检查清单可以通过多种方式得到,例如已知错误的分类,事件管理系统中包含的信息,测试人员的知识,经验和/或对测试项和/或类似测试项的理解或来自其他利益相关者的知识(例如系统用户或者程序员)的知识。

3.2 探索性测试

探索性测试强调测试人员同时学习、设计和执行测试的过程,是一种即兴和自由形式的测试方法。它鼓励测试人员利用自己的知识和创造力,在实际操作软件的过程中发现缺陷,而不是事先详细规划所有的测试步骤。

3.3 场景测试和用户体验测试

结合用户实际使用场景或体验来设计测试,这类测试往往需要测试人员具备深入理解用户需求和行为的能力,以及对软件应用场景的丰富经验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/24074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

由于找不到 XXX.dll,无法继续执行代码。重新安装程序可能会解决此问题——解决方案

由于找不到 XXX.dll,无法继续执行代码。重新安装程序可能会解决此问题——解决方案 一、问题描述 之前项目都是在Ubuntu操作系统下完成,进行的很顺利。由于我没有Linux物理机,每次都要打开虚拟机感觉挺麻烦的,我就想着把在Linux上…

LaneKeepingEnv(自动驾驶仿真)

LaneKeepingEnv环境的工作原理可以归纳如下: 初始化阶段: 环境在创建时,会调用__init__方法进行初始化。初始化过程中,会设置一些关键的属性,如lane(当前车道)、lanes(所有车道的列…

中国版Wayve决战端到端,等待数据的大力出奇迹

作者 |王博 编辑 |德新 「人工智能的定律只有一个,就是规模定律(Scaling Law),大力出奇迹。端到端是描述方式,更应该去考虑如何去生产更多的自动驾驶合适的数据,来喂养更大更合适的模型,取得更…

zeppelin(kylin的可视化界面安装)(从头到尾安装)

zeppelin(kylin的可视化界面安装) 1、zeppelin安装前的准备工作: 1、虚拟机安装配置好jdk, 2、虚拟机安装配置好Hadoop, 3、虚拟机安装配置好Hive 4、虚拟机安装配置了hbase 5、安装了kylin(麒麟) 6、下载了zeppelin…

小程序域名怎么配置?三步教您配置

小程序域名怎样配置?在当今数字化时代,小程序已成为企业展示品牌形象、提供便捷服务的重要渠道。然而,许多开发者在搭建小程序时,都会遇到服务器域名配置的问题。今天,我们将为您揭秘小程序服务器域名配置的小tip&…

C语言野指针、规避野指针、assert宏断言

目录 a.野指针成因 1.指针未初始化 2.指针越界访问 3.指针指向的空间释放 b.规避野指针 1.指针初始化 2.小心指针越界 3.指针变量不再使用时,及时置NULL,指针使用之前检查有效性 4.避免返回局部变量的地址 c.assert宏断言的使用 概念&#xff1…

【MySQL】SQL通用语法

【MySQL】SQL通用语法 SQL是结构化查询语言(Structured Query Language)的缩写,是一种专门用来管理和操作关系型数据库的标准化语言。SQL能够实现数据库的创建、查询、更新和删除操作,以及对数据进行存储、检索和管理。通过SQL语句…

串口屏在焊接机上的应用

在现代工业自动化浪潮中,焊接技术作为制造业的脊梁,其精准与效率直接关系到产品的质量和生产线的流畅性。而在这场技术的革新中,串口屏以其独特的优势,正成为焊接机领域的璀璨明星。今天,就让我们一同探索串口屏如何助…

动手学深度学习28 批量归一化

动手学深度学习28 批量归一化 批量归一化代码从零实现调包简洁实现 QA https://www.bilibili.com/video/BV1X44y1r77r/?spm_id_fromautoNext&vd_sourceeb04c9a33e87ceba9c9a2e5f09752ef8 批量归一化 n个比较小的数相乘,值会越来越小。 批量归一化:…

opencv-python(四)

读取图像文件 image cv2.imread(path, flag) flag:1. 默认值,依原图像读取图像,保留Alpha透明度通道。2.IMREAD_GRAYSCALE:将图像转为灰度再读取。3.IMREAD_COLOR:将图像转为三通道BGR彩色再读取。 可读取的图像格…

upload-labs-第五关

目录 第五关 1、构造.user.ini文件 2、构造一个一句话木马文件,后缀名为jpg 3、上传.user.ini文件后上传flag.jpg 4、上传成功后访问上传路径 第五关 原理: 这一关采用黑名单的方式进行过滤,不允许上传php、php3、.htaccess等这几类文件…

Python 自定义类型提示 from __future__ import annotations

Python 自定义类型提示 from __future__ import annotations 正文方法1方法2方法3 正文 今天,遇到了一个比较有意思的问题,我自定义一个矢量类型,但是我想在它的方法中加入类型提示,但是遇到了错误,代码如下&#xff…

Vue根据后端返回的tabList动态渲染组件信息

最近做了一个功能&#xff0c;后端根据配置信息&#xff0c;动态返回一个tabList&#xff0c;其中结构是List<String,Object> tabList; map里面的数据是 label、value 页面需要根据tablist动态渲染组件&#xff08;不同的tab都使用了组件进行了封装&#xff09; 实现效果…

都给我冲!微信视频号下载助手可快速提取视频号视频,已测可用

不少视频内容创作者在写文案&#xff0c;以及收集素材的时候发现微信视频号的视频无法下载&#xff0c;该怎么办呢&#xff1f; 都给我冲&#xff01;已实测好用的视频号下载助手&#xff0c;无论是个人或者企业都可以快速保存视频号视频。 你也不用担心自己是用到什么设备&am…

Xilinx的Aurora8B10B ip原理讲解(高速收发器十六)

点击进入高速收发器系列文章导航界面 前文讲解了Aurora 8B/10B协议的一些基础知识&#xff0c;本文对Xilinx的Aurora 8B/10B IP进行讲解&#xff0c;该IP在Aurora 8B/10B的基础之上还完成了字对齐等等操作&#xff0c;开放给用户的端口有axi_full或axi_stream两种格式。 相应的…

17.3 命令行-POSIX特性、安装与分享

1. POSIX特性 在Linux和macOS系统中&#xff0c;大多数命令行工具都要求以推荐标准POSIX指定的方式传递命令行参数。 POSIX即UNIX可移植操作系统接口(Portable Operating System Interface of UNIX)是一套标准&#xff0c;旨在确保操作系统之间彼此兼容。 很多开发人员也希望…

java进阶——JVM 与 Java 体系结构详解

文章目录 1.JVM 与 Java 体系结构1.1. 前言1.1.1. 开发人员如何看待上层框架1.1.1. 我们为什么要学习 JVM&#xff1f;1.1.2. Java vs C 1.2. Java 及 JVM 简介1.2.1. JVM&#xff1a;跨语言的平台1.2.1. 字节码1.2.2. 多语言混合编程 1.3. 虚拟机与 Java 虚拟机1.3.1. 虚拟机1…

vue 弹出框组件重复打开时,资源重新加载

新增或者编辑内容使用同一个弹出框&#xff0c;如何使数据可以重新加载&#xff1f; 1、绑定时间戳&#xff0c;有副作用&#xff0c;屏幕会闪烁一下 <el-dialog :key"timer" > </el-dialog> 2、v-if和:visible.sync同时使用 <el-dialogv-if"…

沃尔沃Volvo EDI:运输标签测试流程

对接Volvo的EDI项目中&#xff0c;需要按照以下流程完成测试&#xff1a; 1.创建EDI连接并且传输第一个交付计划 2.请求发货通知以及运输标签 3.反馈关于发货通知以及运输标签的细节 4.使用生产数据进行最终的验证 在Volvo EDI项目案例中&#xff0c;详细介绍了有关连接测试以…

25届最近5年南京航空航天大学自动化考研院校分析!

南京航空航天大学 一、学校学院专业简介 二、考试科目指定教材 1、考试科目介绍 2、指定教材介绍 三、近5年考研分数情况 以下为南京航空航天大学&#xff0c;自动化学院近几年的考研分数情况。 以下为南京航空航天大学&#xff0c;航天学院近几年的考研分数情况。 以下为南京…