【测试理论基础之黑盒/灰盒/白盒测试案例设计方法】
1.常见黑盒测试用例设计方法
等价类划分法、边界值分析法、因果图法、状态迁移法、判定表法、流程分析法、正交试验法、错误猜测法、输入/输出域测试法、异常分析法、
1.1.等价类划分法
概念:某个输入域的集合,在这个集合中每个输入条件都是等效的。
原则:
A.规定了取值范围或值的个数,则可确定一个有效等价类和两个无效等价类
B.规定了输入值的集合,或是规定了必须如何的条件,则可确定一个有效等价类和一个无效等价类
C.布尔量,则可确定一个有效等价类和一个无效等价类
D.输入数据的一组值假定N个,并且程序要对每一个输入值分别处理,则可确定N个有效等价类和一个无效等价类
E.输入数据必须遵守什么的情况下,则可确定一个有效等价类和若干个无效等价类
F.已划好了等价类,各元素在程序处理中的方式不同,则应该进一步的划分
步骤:
- 划分等价类
- 为有效等价类设计测试用例
- 为每一个无效等价类至少设计一个测试用例
1.2.边界值分析法
边界值使用条件:
- 输入条件明确了一个值的取值范围,或是规定了值的个数
- 输入条件明确了一个有序集合
边值点定义:上点、离点、内点
原则:
- 输出条件规定了取值范围或个数,则应该选边界内或边界附近的值
- 输出条件规定了值的个数,则最大值、最小值、最大值+1、最小值-1、
- 输出条件是一个有序的集合,则集合的第一个和最后一个
- 若使用了内部数据,则应选择这个内部数据的边界值
步骤:
- 分析输入参数的类型(从SRS中)
- 等价类划分(可选)
- 确定边界
- 相关性分析(可选)
- 形成测试项
1.3.等价类+边界值
适用范围:输入与输入之间、输出与输出之间各项无牵制关系的情况。
例如:用户注册
适用的测试类型:功能测试、性能测试、GUI测试、配置测试等
1.4.判定表法
概念:是分析和表达多逻辑条件下执行不同操作的情况的工具。
应用:
- 基于判定表的测试是最为严格、最具有逻辑性的
- 针对不同逻辑条件的组合值
组成:条件桩、条件项、动作桩、动作项
步骤:
- 确定规则的个数
- 列出所有的条件项桩和动作桩
- 填入条件项
- 填入动作项,得到初始决策表
- 简化决策表,合并相似规则(可选)
- 将每条规则转化为用例
优点:能把复杂的问题按各种可能的情况一一列举出不,简明而易于理解,可避免遗漏。
缺点:合并存在漏测。
适用范围:
- 规格说明以判定表的形式给出,或很容易转换成判定表
- 条件、规则的排列顺序不影响执行结果
- 每条规则都相对独立
- 一条规则可以转化成一条或多条用例,规则的用例数取决于转化的条件
1.5.因果图法
是把规格转化为判定表的系统化方法。它适合检查输入条件的各种组合情况。
步骤: 1.把大的系统规格划分解成可以测试的规格片段(可选)
2.找出哪些是原因,哪些是结果
3.画出因果图
4.将因果图转换为判定表
5.简化判定表(可选)
6.生成测试用例
优点:
- 等价类中多个输入条件组合起来出错的情况被忽略
- 设计多个输入条件组合用例
- 能指出程序规格说明描述中存在什么问题
缺点:
- 输入条件与输出结果的因果关系,有时难以从SRS中得到
- 即使得到了因果关系,也会因为因果关系复杂导致用例数目及其庞大
条件与结果:恒等、非、或、与
- 恒等关系:当输入项发生,会产生对应输出,当输入项不发生,不会产生对应输出
- 非关系:与恒等关系相反(误区:如果前者不发生,则发生后者,前者发生,不发生后者)
- 或关系:多个输入条件中,只要有一个发生,则会产生对应输出
- 与关系:多个输入条件中,只有所有输入项发生时,才会产生对应输出
条件与条件:异、唯一、要求、或
- 异:最多一个输入条件发生
- 或:至少一个输入条件发生
- 唯一:所有输入中有且仅有一个发生
要求:只要其中一个输入发生,其他输入也会发生(误区:为什么充值和充值成功不是这个,因为他们不是同属输入条件,而是由先后条件,没什么关系)
1.6.流程分析法
这是从白盒测试中路径覆盖分析法中推广到黑盒测试中来的测试分析方法。
步骤:
- 画出业务流程图
- 定义状态节点和条件分支
- 确定测试路径
- 构造测试用例
总结:重点在测试流程,流程测试没有问题并不能说明系统功能就没有问题
1.7.状态迁移图法
- 状态机的测试主要关注在测试状态转移的正确性上面。
- 用这种方法可以设计逆向的测试用例,如状态和事件的非法组合。
概念:状态迁移法实际上是测试了各种状态的转换,这些状态转换的测试在实际工作中是很容易遗漏的,只要将这些状态的转换测试到,是不是采用状态迁移法并不重要,因为状态迁移图只不过是给出一种将多个状态的转换串起来进行测试的思路
步骤:
1.画出状态迁移图
2.列出状态-事件表
3.画出状态转换树(列出每个状态,画出所有从这个状态出发的状态)
4.从状态转换树推导出测试路径
5.根据测试路径编写合法测试用例
6.编写非法测试用例
1.8.正交试验法
概念:是从大量和试验点中挑出适量的、有代表性的点,应用迦罗瓦理论导出的“正交表”,合理的安排试验的一种科学的试验设计方法
相关概念:指标、因子、因子的状态
步骤:
- 构造因子状态表
- 选择正交表(当因子状态数没有时,选择因子+1,去掉多的列)
- 对号入座
- 合并
- 映射
- 写用例
总结:不考虑实际取值的意义,故删除无效的组合,补充漏掉的常见组合。
1.9.输入域测试法
只需要在使用完等价类、边界值的基础上再考虑特殊值和长时间输入
1.10.输出域覆盖法
期望达到输出或等价类覆盖
1.11.异常分析法
容错能力、故障恢复能力
1.12.错误猜测法
根据经验猜想。只能作为测试设计的补充,而不能单独用来设计测试用例。
14.用例设计方法总结
方法名称 |
特点 |
不足 |
测试类型 |
系统类型 |
备注 |
等价类,边界值 |
分类、覆盖 |
不考虑组合 |
所有类型 |
所有系统 |
需要关注数据背后的信息 |
判定表因果图 |
全排列组合、人工化简 |
比较繁琐 |
功能测试 |
控制系统、游戏 |
用于测试比较复杂的处理过程 |
正交试验 |
两两组合、自动选取 |
不关心组合的实际意义 |
功能测试、配置测试 |
所有系统 |
关键是正交表的选取 |
状态迁移 |
测试修改 |
功能测试 |
手机、MP3 |
编辑修改功能也可采用 |
|
流程分析 |
测试流程 |
功能测试、安装测试 |
金融系统、物流系统、电子 商务系统 |
业务流程复杂的系统适用,只检查流程,不保证单功能正确 |
2.常见灰盒测试用例设计方法
2.1非增量方式
(1)五大优点
- 迅速完成集成测试
- 只要极少数的驱动和桩模块
- 用例最少
- 简单
- 资源利用率高
(2)三大缺点
- 一次试运行成功的可能性不大
- 问题定位和修改比较困难
- 许多接口错误很容易躲过测试
(3)适用场所
适应于一个维护型项目或被测试系统较小
2.2增量方式
- 逐步把下一个要被组装的软件单元或部件,同已经测试好的软件部分结合起来测试
- 包括自顶向下、自底向上、自顶向下和自底向上相结合(“三明治”方法)
(1)自顶向下方法
从顶层控制开始,采用涉及顺序一样的思路进行检测,验证系统接口稳定性
1)深度优先组装法
2)广度优先组装法
3)增量测试中自顶向下法的优缺点
5大优点:
较早验证了主要控制和判断点
深度优先组装法可以首先实现验证一个完整的软件功能
功能较早证实
只需要一个驱动,减少开支
支持故障隔离
3大缺点:
桩的开发量较大
底层验证被推迟
底层组件测试不充分
4)自顶向下的6大适用范围
高层接口经常被修改
高层接口变化较小
高层接口未定义
产品控制结构比较清晰和稳定
控制组件具有较大的技术风险,需要较早验证
希望尽早看到产品的系统功能
(2)自底向上方法
从具有最小依赖性的底层组件开始,按照树的结构,逐层向上集成,验证系统稳定性。
1)自底向上的4大优点
对底层组件行为较早验证
工作最初可以并行集成,比自顶向下效率高
减少桩的工作量
支持故障隔离
2)自底向上的2大缺点
驱动的开发工作量大
对高层的验证被推迟,设计上的错误不能及时的发现
3)自底向上的适用范围
适用于底层接口比较稳定的
高层接口变化频繁
底层组件较早被完成
(3)“三明治”方法
混合式集成
把系统划分为三层,中间一层为目标层,目标层之上采用自顶向下,目标层之下采用自底向上。
1)三明治方法的优点
- 集合了自顶向下和自底向上的优点
2)三明治方法的缺点
中间层检测不充分
3)适用范围
大部分软件开发项目
3.常见白盒测试用例设计方法
白盒测试方法有:动态分析和静态分析,主流的是动态分析。
3.1动态分析方法
1、语句覆盖
(1)主要特点
语句覆盖是最基本的结构覆盖要求,语句覆盖要求设计足够多的测试用 例,使得程序中每条语句至少被执行一次。
(2)优点
可以很直观地从源代码得到测试用例,无须细分每条判定表达式。
(3)缺点
由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。在本例中去掉了语句1一Print去掉,那么就少 了一条测试路径。在if结构中若源代码没有给出else后面的执行分支。那么语句覆盖测试就不会考虑这种情况。但是我们不能排除这种以外的分支不会被执行,而往往这种错误会经常出现。再如,在Do-While结构中,语句覆 盖执行其中某一个条件分支。那么显然,语句覆盖对于多分支的逻辑运算是无法全面反映 的,它只在乎运行一次,而不考虑其他情况。
2、判定覆盖
(1)主要特点
又称分支覆盖,设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次。即:程序中的每个分支至少执行一次。每个判断的取真、取假至少执行一次。
(2)优点
判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。
(3)缺点
往往大部分的判定语句是由多个逻辑条件组合而成(如:判定语句中包含AND、 OR、CASE)。若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。
3、条件覆盖
(1)主要特点
条件覆盖要隶设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。
(2)优点
显然条件覆盖比判定覆盖,增加了对符合判定情况的测试,增加了测试路径。
(3)缺点
要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
4、判定/条件覆盖
(1)主要特点:设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。
(2)优点
判定/条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足。
(3)缺点
判定/条件覆盖准则的缺点是未考虑条件的组合情况。
5、组合覆盖
(1)主要特点
要求设计足够多的测试用例,使得每个判定种条件结果的所有可能组合至少出现一次。
(2)优点
多重条件覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。更改的判定/条件覆盖要求设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次。每个判定本身的所有可能结果也至少出现一次,并且每个条件都显示能单独影响判定结呆。
(3)缺点
线性地增加了测试用例的数量。
6、路径覆盖
(1)主要特点
设计足够的测试用例,覆盖程序中所有可能的路径。
(2)优点
这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。
(3)缺点
由于路径覆盖需要对所有可能的路径进行测试(包括循环,条件组合.分支选择等).那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。而在有些情况下,一些执行路是不可能被执行的,如:
If(!flag)x++;
If(!flag)y–;
这两个语句实际只包括了2条执行路径,即flag为真或假时候对x和y的处理,真或假不可能都存在,而路径覆盖测试认为是包含了真与假的4条执行路径。这样不仅降低了测试效率,而且大量的测试结果的累积,也为排错带来麻烦。
3.2静态分析方法
主要有代码检查法、静态结构分析法和代码质量度量法等。
(1)代码检查法:包括桌面检查、代码审查和走查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码逻辑表达的正确性,代码结构的合理性等方面;发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的问题;包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。
①优势:在实际使用中,代码检查比动态测试更有效率,能快速找到缺陷,发现30%-70%的逻辑设计和编码缺陷;代码检查看到的是问题的本身,而非征兆。
②不足:代码检查非常耗时间,而且代码检查需要知识和经验的积累。
③准备工作:代码检查在编译和动态测试之前进行,在检查前,应准备好需求描述文档、程序设计文档、程序的源代码清单、代码编码标准和代码缺陷检查表等。
(2)静态结构分析法:以图形的方式表现程序的内部结构,例如函数调用关系图和模块控制流图等。这些图表可以清晰地标识整个软件系统的组成结构,使其更便于他人阅读和理解,然后可以通过分析这些图表,来检查软件有没有存在缺陷与错误。
(3)代码质量度量法:ISO/IEC 9126国际标准所定义的软件质量包括六个方面:功能性、可靠性、易用性、效率、可维护性和可移植性。软件的质量是软件属性的各种标准度量的组合,以ISO/IEC 9126质量模型作为基础,我们可以构造质量度量模型,用于评估软件的每个方面。
【测试理论基础之黑盒/灰盒/白盒测试案例设计方法】相关推荐
- 黑盒测试方法|测试用例的设计方法--边界值分析方法
黑盒测试方法|测试用例的设计方法–边界值分析方法 目录 等价类划分方法 边界值分析方法 错误推测方法 因果图方法 判定表驱动分析方法 正交实验设计方法 功能图分析方法 场景设计方法 边界值分析方法 一 ...
- 软件测试有白和黑盒和灰盒,白盒测试、灰盒测试和黑盒测试的区别
1黑盒测试黑盒,顾名思义,就是把所有东西装到一个盒子里,看不到内部逻辑,只能通过外部的可见的功能模块,对软件进行测试.比如说一个网站的登陆功能,你不知道它的内部逻辑是怎样的,只能通过网页的注册输入文本 ...
- iOS APP黑盒/灰盒审计checklist
本篇文章介绍如何对一款iOS应用进行基本的安全审计,主要方式为黑盒或灰盒的手动审计.注意红色字体部分为做安全审计时的checklist. 一.IPA安装包分析(静态分析) 1. Mach-O可执行文件 ...
- 白盒测试案例设计(我爷爷都能看懂)
目录 一.白盒测试的概念及特点 1.什么是白盒测试 2.白盒测试的特点 二.白盒测试设计方法 1.静态设计方法 2.动态设计方法 三.逻辑覆盖法 1.语句覆盖 2.判定覆盖 3.条件覆盖 4.判定条件 ...
- 模糊控制洗衣机c语言程序,以洗衣机模糊控制为例的教学案例设计方法
刘金琨 [摘要]为了突出智能控制教学发展需要,在教学方面需要加大对相关课程案例建设的研究.教师可以以洗衣机模糊控制为例,介绍模糊逻辑控制系统的设计步骤,并通过Matlab仿真分析来加以讲解,深化学生对 ...
- 软件测试之黑盒测试用例的四种设计方法【建议细看】
一.输入域测试用例设计方法 输入域测试法是一种综合考虑了等价类划分.边界值分析等方法的综合方法,针对输入域测试法中可能出现的各种情况,输入域测试法主要考虑三个方面: (1)极端测试(ExtremalT ...
- 软件测试之黑盒测试用例的四种设计方法
一.输入域测试用例设计方法 输入域测试法是一种综合考虑了等价类划分.边界值分析等方法的综合方法,针对输入域测试法中可能出现的各种情况,输入域测试法主要考虑三个方面: 极端测试(Extremal Tes ...
- 软件测试 通用技术03 测试用例 黑盒测试用例设计方法 等价类划分法 边界值分析法 判定表法 场景法 功能图法 其他用例设计方法 用例设计方法综合选择
文章目录 1 测试用例 1.1 测试用例的定义 1.2 测试用例模板 1.3 测试用例模板的内容 测试用例编号 测试项 依赖用例 测试步骤 测试数据 预期结果 测试结果 测试人 备注 2 测试用例编写 ...
- 计算机课例研究方案设计,大学计算机基础案例教学与教学案例设计.doc
大学计算机基础案例教学与教学案例设计 大学计算机基础案例教学与教学案例设计 [摘 要]计算机的教学关系着未来的发展,大学计算机基础案例教学法的启用,对大学计算机教学事业有着举足轻重的意义,是当下值得研 ...
最新文章
- 第一次,触碰Web App项目,栽过的那些坑。
- jdk的安装和环境的配置
- ASP.NET自定义错误页面(转)
- 简单说说async/await
- SSM框架笔记11:Spring常用配置与高级话题
- Hadoop(八)Java程序访问HDFS集群中数据块与查看文件系统
- 第二天linux,yum源配置和ftp部分设置
- 数据库存储图片路径并显示图片
- FPGA 入门 (一)
- 干货---ARCGIS拓扑规则说明详细讲解
- 爸妈上班却顶着凛冽的寒风骑着自行车
- Lotka-Volterra模型
- openEuler代码贡献之星:麒麟软件裴建康
- QAP-based Simulation-Extractable SNARK with a Single Verification及代码实现
- 短视频消重去重九种方法,组合使用原创度更高,各平台轻松过原创
- #WebStorm激活码失效解决方法!
- 那些年,用过的Linux网络工具
- 保监会:大数据对保险业改革创新及保险监管影响研究
- DateTimePicker
- python制作神经网络_MicroPython动手做(10)——零基础学MaixPy之神经网络KPU