软件测试-黑盒测试方法

news2024/11/25 22:37:49

这里写自定义目录标题

  • 测试用例的定义和特征
  • 设计测试用例的基本准则
  • 黑盒测试用例设计的几种方法
    • (一)等价类划分法
        • 等价类的类型
      • 如何划分等价类
      • 等价类划分步骤
      • 等价类的划分原则
      • 等价类划分法设计测试用例的步骤
    • (二)边界值分析法
      • 边界值分析法概要
      • 为什么使用边界值分析法?
      • 边界值分析测试的基本思想
      • 边界值分析法的原则
      • 怎样用边界值分析法设计测试用例?
        • 健壮性测试
        • 最坏情况测试
    • (三)决策表法
      • 决策表法思想
      • 决策表应用
    • (四)因果图法
      • 因果图法产生的背景
      • 因果图法设计测试用例思想
      • 因果图法的定义
      • 因果图中出现的基本符号
      • 主要的原因与结果之间的关系
      • 因果图法设计测试用例步骤:
    • (五)场景法
      • 场景法基本原理
      • 基本概念
      • 场景法设计测试用例的步骤
    • (六)正交试验法
      • 正交试验设计方法
        • 正交表的性质

测试用例的定义和特征

测试用例的定义:
(1)测试用例是为特定的目的而设计的一组测试输入、 执行条件和预期的结果。
(2)测试用例是执行的最小实体。
测试用例的特征:
(1)最有可能抓住错误的;
(2)不是重复的、多余的;
(3)一组相似测试用例中最有效的;
(4)既不是太简单,也不是太复杂。

设计测试用例的基本准则

测试用例的代表性
能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。

测试结果的可判定性
即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。

测试结果的可再现性
即对同样的测试用例,系统的执行结果应当是相同的。

黑盒测试用例设计的几种方法

(一)等价类划分法

等价类划分设计方法是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少量具有代表性的数据作为测试用例。
定义:将程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据当作测试用例。
原因:由于实现穷举测试的不可能性,只有从大量的可能数据中选取一部分作为测试用例。
效果:经过类别划分后,每一类的代表性数据在测试中的作用都等价于这一类中的其他值。
手段:在设计测试用例时,在需求说明的基础上划分等价类,列出等价表,从而确定测试用例。

等价类的类型

有效等价类
对规格说明而言,有意义、合理的输入数据所组成的集合;
检验程序是否实现了规格说明预先规定的功能和性能。

无效等价类
对规格说明而言,无意义的、不合理的输入数据所组成的集合;
检查被测对象的功能和性能的实现是否有不符合规格说明要求的地方。

如何划分等价类

如何划分?——先从程序的规格说明书中找出各个输入条件,再为每个输入条件划分两个或多个等价类,形成若干的互不相交的子集。

举例:划分 加法器程序的等价类,给出测试用例.程序功能计算两个1~100之间整数的和
思考:刚才给出的 测试用例 都是整数,如果输入的是小数、字符怎么办?
只考虑了输入数据的范围,没有考虑输入数据的类型。
考虑输入数据类型和范围

等价类划分步骤

(1)先考虑输入数据的类型(合法型和非法型)
(2)再考虑数据范围(合法型中的合法区间和非法区间)
(3)画出示意图,区分等价类
(4)为每一个等价类编号。
(5)考虑输出,进行补充

等价类的划分原则

按照区间划分——在输入条件规定了取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。
按照数值划分——在规定了一组输入数据(假设包括 n个 输入值),并且程序要对每一个输入值分别进行处理的情况下,可确定 n 个有效等价类(每个值确定一个有效等价类)和一个无效等价类(所有不允许的输入值的集合)。
按照数值集合划分——在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类(该集合有效值之外)。
按照限制条件或规则划分——在规定了输入数据必须遵守的规则或限制条件的情况下,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
细分等价类——在确知已划分的等价类中各元素在程序中的处理方式不同的情况下,则应再将该等价类进一步划分为更小的等价类,并建立等价类表。

等价类划分法设计测试用例的步骤

(1)确定等价类
(2)建立等价类表,列出所有划分出的等价类
(3)从划分出的等价类中按以下的3个原则设计测试用例:
A 为每一个等价类规定一个唯一的编号 B 设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。 C 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。

(二)边界值分析法

边界值分析法概要

边界值分析法就是 对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界

为什么使用边界值分析法?

无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部。因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。
例如,一个循环条件为“≤”时,却错写成“<”;计数器发生少计数一次。

边界值分析测试的基本思想

故障往往出现在输入变量的边界值附近。例如,一个循环条件为“≤”时,却错写成“<”;计数器发生少计数一次。
基于可靠性理论中称为“单故障”的假设,即有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说软件失效基本上是由单故障引起的。

边界值分析法的原则

1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
例如,如果程序的规格说明中规定:“重量在10公斤至50公斤范围内的邮件,其邮费计算公式为……”。作为测试用例,我们应取10及50,还应取10.01,49.99,9.99及50.01等。
2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
比如,一个输入文件应包括1~255个记录,则测试用例可取1和255,还应取0及256等。

怎样用边界值分析法设计测试用例?

(1)首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况。
(2)选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值。
边界值分析法设计测试用例
对于一个含有n个变量的程序,保留其中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、nom、max-、max值,对每个变量都重复进行。这样,对于一个有n个变量的程序,边界值分析测试程序会产生4n+1个测试用例。
3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。
例如,某程序的规格说明要求计算出"每月保险金扣除额为0至1165.25元",其测试用例可取0.00及1165.24、还可取一0.01及1165.26等。 再如一程序属于情报检索系统,要求每次"最少显示1条、最多显示4条情报摘要",这时我们应考虑的测试用例包括1和4,还应包括0和5等。
4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
6)分析规格说明,找出其它可能的边界条件。

健壮性测试

边界值分析测试的一种扩展,除了取5个边界值外,还需要考虑采用一个略超过最大值(max+)及略小于最小值(min-)的取值,检查超过极限值时系统的情况
健壮性测试最有意义的部分不是输入,而是预期的输出
对于一个含有n个变量的程序,保留其中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、min-,nom、max-、max, max+值,对每个变量都重复进行。这样,对于一个有n个变量的程序,边界值分析测试程序会产生6n+1个测试用例。

最坏情况测试

边界值分析采用可靠性理论中的单缺陷假设,如果不考虑这种假设,那么,应该关心当多个变量取极值时会出现什么情况。
使用这种思想生成最坏情况的测试用例,
首先对每个变量进行包含最小值min,略高于最小值min+,正常值nom,略低于最大值max-和最大值max五个元素集合的测试,
然后对这些集合进行笛卡儿积计算,以生成测试用例。
最坏情况测试比边界值分析测试以及健壮性测试要彻底,边界值分析测试用例是最坏情况测试用例的真子集。
N变量函数的最坏情况测试,会产生5n个测试用例,而边界值分析只产生4n+1个测试用例
首先对每个变量进行包含略小于最小值min-,最小值min,略高于最小值min+,正常值nom,略低于最大值max-,最大值max,和略大于最大值max+,七个元素集合的测试,然后对这些集合进行笛卡儿积计算,以生成测试用例。

(三)决策表法

决策表法思想

决策表的概念:决策表是分析和表达多逻辑条件下执行不同操作情况的工具。
在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合于处理这类问题。

决策表应用

决策表最突出的优点是,能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。
利用决策表能够设计出完整的测试用例集合。
运用决策表设计测试用例可以将条件理解为输入,将动作理解为输出

(四)因果图法

因果图法产生的背景

等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。

因果图法设计测试用例思想

首先从程序规格说明书的描述中,找出因(输入条件)和果(输出结果或者程序状态的改变),
然后通过因果图转换为判定表,最后为判定表中的每一列设计一个测试用例.

因果图法的定义

是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。

因果图中出现的基本符号

通常在因果图中用Ci表示原因,用Ei表示结果,各结点表示状态,可取值“0”或“1”。“0”表示某状态不出现,“1”表示某状态出现。

主要的原因与结果之间的关系

在这里插入图片描述
恒等:若c1是1,则e1也为1,否则e1为0;
非:若c1是1,则e1为0,否则e1为1;
或:若c1或c2或c3是1,则e1是1,否则e1为0,“或”可有任意个输入;
与:若c1和c2都是1,则e1为1,否则e1为0,“与”也可有任意个输入。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
对于输入条件的约束有4种:
E约束(异):a和b中最多有一个可能为1,即a和b不能同时为1;
I约束(或):a、b、c中至少有一个必须是1,即a、b、c不能同时为0;
O约束(唯一):a和b必须有一个且仅有一个为1;
R约束(要求):a是1时,b必须是1;
对于输出条件的约束只有M约束
M约束(强制):若结果a是1,则结果b强制为0。

因果图法设计测试用例步骤:

分析程序规格说明书描述的语义内容,找出“原因”和“结果”,将其表示成连接各个原因与各个结果的“因果图”。
由于语法或环境限制,有些原因与原因之间或与结果之间的组合情况不能出现,用记号标明约束或限制条件;
将因果图转换成决策表;
根据决策表中每一列设计测试用例

(五)场景法

场景法基本原理

现在的软件几乎都是用事件触发来控制流程的,象GUI软件、游戏等。事件触发时的情景形成了场景,而同一事件不同的触发顺序和处理结果就形成了事件流。这种在软件设计方面的思想可以引入到软件测试中,可以生动地 描绘出事件触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。

基本概念

1.基本流 和 备选流
在测试一个软件的时候,在场景法中,测试流程是软件功能按照正确的事件流实现的一条正确流程,那么我们把这个称为该软件的基本流;
出现故障或缺陷的过程,就用备选流加以标注,这样,备选流就可以是从基本流来的,或是由备选流中引出的。

在这里插入图片描述
分析:图中经过用例的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。备选流用不同的色彩表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。

场景法设计测试用例的步骤

根据说明,描述出程序的基本流及各项备选流.
根据基本流和各项备选流生成不同的场景.
对每一个场景生成相应的测试用例.
对生成的所有测试用例重新复审,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值.

(六)正交试验法

利用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系,有时很难从软件需求规格说明中得到.往往因果关系非常庞大,导致利用因果图而得到的测试用例数目多得惊人,给软件测试带来沉重的负担.为了有效的,合理地减少测试的工时与费用,可利用正交试验法进行测试用例的设计.

正交试验设计方法

正交试验设计方法是从大量的试验数据中挑选适量的、有代表性的点,从而合理地安排测试的一种科学的试验设计方法
使用已经造好了的表格——正交表来安排试验并进行数据分析。

正交表的性质

正交表必须满足以下两个性质:
表中任何一列,其所含各种水平的个数都相同。
表的任何两列中,所有各种可能的数对出现的次数都相同。

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

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

相关文章

oVirt 4.4.10三节点超融合集群安装配置及集群扩容(一)

环境 oVrit版本: 4.4.10 oVirt image: https://mirrors.aliyun.com/ovirt/ovirt-4.4/iso/ovirt-node-ng-installer/4.4.10-2022030308/el8/ovirt-node-ng-installer-4.4.10-2022030308.el8.iso?spma2c6h.25603864.0.0.46c8a3e6ELIYzK oVirt engine appliance: https://mirror…

osgViewer中的ScreenCaptureHandler、LODScaleHandler、HelpHandler事件处理器用法

目录 1. 前言 2. osgViewer::ScreenCaptureHandler 3. osgViewer::LODScaleHandler 4. osgViewer::HelpHandler 5. osgViewer::ThreadingHandler 1. 前言 osg为视景器的使用和调试提供了丰富的辅助组件&#xff0c;它们主要是以osg::ViewerBase的成员变量或交互事件处理器…

风险SQL 规范及案例

一、 原则 1、程序处理优先:数据库最容易也通常是一个系统的瓶颈,因此不要给数据库加压力,能够程序处理就程序处理。 2、简单操作数据库:一个系统越简单越稳定越不容易出问题, 因此要尽量简单使用数据库, 如SQL简单,事务小 3、数据存储评估:数据库资源宝贵,是很难水平…

饮用水污染预警系统的设计与开发(前后端分离)

1.饮用水污染预警系统的介绍 随着工业化和城市化进程的加速&#xff0c;水污染问题越来越引起人们的关注。饮用水是人类赖以生存的重要资源之一&#xff0c;饮用水污染对人类健康和社会经济发展产生的影响愈加突出。近年来&#xff0c;我国政府高度重视饮用水污染治理工作&…

车牌识别系统Python,基于深度学习CNN卷积神经网络算法

一、介绍 车牌识别系统&#xff0c;基于Python实现&#xff0c;通过TensorFlow搭建CNN卷积神经网络模型&#xff0c;对车牌数据集图片进行训练最后得到模型&#xff0c;并基于Django框架搭建网页端平台&#xff0c;实现用户在网页端输入一张图片识别其结果&#xff0c;并基于P…

自学黑客!一般人我劝你还是算了吧!

笔者本人 17 年就读于一所普通的本科学校&#xff0c;20 年 6 月在三年经验的时候顺利通过校招实习面试进入大厂&#xff0c;现就职于某大厂安全联合实验室。 我为啥说自学黑客&#xff0c;一般人我还是劝你算了吧&#xff01;因为我就是那个不一般的人。 首先我谈下对黑客&am…

Andriod开发 Adapter ArrayAdapter

一、Adapter Adapter 是一个非常重要的组件&#xff0c;用于将数据与视图进行绑定。 一般的用法是一个View中要显示多个布局相同但数据不同的item&#xff08;例如论坛界面的多个帖子&#xff0c;购物车里的多个商品&#xff09;。 可以将item的布局和数据输入Adapter&#…

Django Admin Cookbook-5如何在Django Admin后台中添加Logo

目录 后台显示文字与自定义 1.如何更改管理后台标题Django administration&#xff1f; 2.如何设置模型的复数文本&#xff1f; 3.如何创建两个独立的管理站点&#xff1f; 4.如何从Django管理后台中删除默认应用程序&#xff1f; 5.如何在Django管理后台中添加Logo&#xff…

C++语法(24) 哈希应用

C语法&#xff08;23&#xff09;-- 模拟实现unordered_set和unordered_map_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/130449452?spm1001.2014.3001.5501 目录 1.位图 1.定义 2.实现 3.应用 4.特点 2.布隆过滤器 1.介绍 2.设计场…

STM32F407输入捕获

文章目录 F407定时器输入捕获实验支持输入捕获的定时器有哪些输入捕获工作过程输入捕获测量高电平脉宽原理滤波器设置 配置步骤开启TIM5时钟与端口时钟配置PA0为用能复用功能&#xff08;AF2&#xff09;初始化端口并开启下拉电阻初始化TIM5设置TIM5的输入捕获参数TIM_Channel通…

数字信号处理10:Z变换(2)

今天我就不写后面的Z变换的剩下的东西了&#xff0c;直接写代码&#xff1a; 说实话&#xff0c;Python的Scipy.signal里面是没有和matlab一样的ztrans和iztrans&#xff0c;这让我头疼了几天时间&#xff0c;但是后面&#xff0c;看文档的时候&#xff0c;突然发现&#xff0…

Vue2模拟贪吃蛇小游戏

目录 一、效果展示 二、代码展示 三、原理讲解 3.1、页面创建 3.2、创建蛇与食物 3.3、移动与边界判断 3.4、吃、得分总结 二、代码展示 view的本地文件&#xff1a;可直接运行。 <template><div class"game"><div class"game-div"…

【架构基础】SOLID原则

SOLID原则是一套坚实而有效的软件设计原则&#xff0c;它由Robert C. Martin&#xff08;也称为 Uncle Bob&#xff09;在2000年提出&#xff0c;旨在帮助软件开发者设计出高内聚低耦合的软件&#xff0c;构建易于测试、可维护和可扩展的软件系统&#xff0c;降低软件后期的维护…

青春永不散场

虽然人生总是在不断的离别与相遇&#xff0c;但请相信这一次的离别是为了下次更美好的相遇。 一.毕业感想 四年的大学生活即将画上句号&#xff0c;让我不由得感慨万千。这四年里&#xff0c;我经历了无数的挑战和机遇&#xff0c;也结交了一群志同道合的朋友&#xff0c;收获…

抖音小程序+抖音矩阵系统开发:新玩法,新趋势

抖音seo优化源码&#xff0c;抖音seo矩阵系统搭建&#xff0c;抖音账号矩阵系统开发&#xff0c;企业在做账号矩阵过程中&#xff0c;最头疼的莫过于私域线索转化&#xff0c;作为开发者都知道&#xff0c;目前市面上我们了解的矩阵系统除了挂载POI信息外&#xff0c;无法挂载留…

【剑指offer】旋转数组的最小数字

文章目录 题目思路代码实现 题目 题目链接入口&#xff1a;JZ11 旋转数组的最小数字 思路 1.核心考点 &#xff08;1&#xff09;数组理解&#xff0c;二分查找&#xff0c;临界条件。 2.解题思路 &#xff08;1&#xff09;题目要求查找出一维数组的最小值&#xff0c;本…

变分模态分解(VMD)学习

目录 概述构造变分问题变分求解问题(引入拉格朗日)关于变分构造中的函数理解关于Uk(t)关于希尔伯特变换关于频谱调制 VMD算法(python) 概述 变分模态分解由Konstantin Dragomiretskiy于2014年提出&#xff0c;可以很好抑制EMD方法的模态混叠现象&#xff08;通过控制带宽来避免…

信息竞赛笔记(2)––快速幂

目录 快速幂 定义 分析 代码 递归实现 非递归实现(通用方法) 模意义下取幂 快速幂 定义 快速幂,二进制取幂(Binary Exponentiation,也称平方法),是一个在的时间内计算的小技巧&#xff0c;而暴力的计算需要的时间。 这个技巧也常常用在非计算的场景&#xff0c;因为它可…

【论文】通过基准分析优化联邦人员重新识别的性能

论文链接 目录 摘要1. 绪论2. 相关工作2.1 人员重新识别2.2 联邦学习 3. 联邦 个人REID基准3.1 数据集3.2 联合方案3.3 模型结构3.4 联邦学习算法3.5 性能指标3.6 参考实现4.1 通过相机联合方案4.2 按数据集联合方案 5. 性能优化5.1 知识蒸馏5.2 权重调整5.3 知识蒸馏和体重调…

提高代码质量的秘诀:类、方法、字段和包注释

&#x1f9d1;‍&#x1f4bb;CSDN主页&#xff1a;夏志121的主页 &#x1f4cb;专栏地址&#xff1a;Java基础进阶核心技术专栏 目录 &#x1f362; 一、注释的插入 &#x1f363; 二、类注释 &#x1f364; 三、方法注释 &#x1f365; 四、字段注释 &#x1f96e; 五、…