软件质量保证的常用测试方法 - 界值测试、等价类测试、路径测试
本文内容整理自西安交通大学软件学院杜小智老师的mooc附件ppt
mooc链接:软件质量保证_中国大学MOOC(慕课)
文章目录
- 测试方法
- 边界值分析技术
- 边界值选择的基本原则
- 边界值测试分类
- 边界值分类
- 分类
- 案例
- 普通边界值测试
- 健壮性测试
- 最坏情况测试
- 健壮最坏情况
- 等价类测试
- 等价类概念
- 分类
- 两个动机
- 等价类测试原则
- 等价类测试流程
- 确定等价关系
- 生成测试用例
- 示例
- 确定等价关系
- 生成测试用例
- 输出域等价类
- 综合测试用例
- 进一步思考
- 等价类测试扩展
- 示例
- 等价关系
- 弱一般等价类测试
- 强一般等价类
- 弱健壮等价类测试
- 强健壮性等价类测试
- 示例2
- 路径测试
- 程序图
- 定义
- 例子
- DD路径
- 定义
- DD路径图
- 定义
- 拓扑路径
- 可行路径
- 测试覆盖指标
- 覆盖率
- 分类
- 逻辑覆盖指标
测试方法
边界值分析技术
基本思想:大量的软件错误通常发生在输入或输出范围的边界或边界附近
边界值选择的基本原则
边界值测试分类
- 对于一个明确范围的输入或输出,选择“最小值、略小于最小值、正常值、略小于最大值和最大值”
- 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
案例
普通边界值测试
健壮性测试
最坏情况测试
健壮最坏情况
等价类测试
等价类概念
- 定义:等价类是指某个输入域的子集合,在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,或者进行相同的处理
- 测试某等价类的一组数据就等价于对这一类其他值测试
分类
- 有效等价类
- 无效等价类
两个动机
- 期望进行某种意义上的完备性测试
- 期望尽可能多地避免冗余测试
核心:对输入域和输出与进行等价划分
等价类测试原则
-
如果输入条件规定了取值范围,可定义一个有效等价类和两个无效等价类
-
如果规定了输入数据的个数,则类似地可划分出一个有效等价类和两个无效等价类
-
如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类(所有不允许的输入值的集合)
-
如规定了输入数据必须遵守的规则,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
-
如果确知已划分的等价类中各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类
-
等价类的划分通常不能一步到位,需要多次尝试才能得到效果较好的等价类
等价类测试流程
确定等价关系
- 首先确定程序的所有输入条件
- 然后针对每一个输入条件,基于等价类划分原则将输入域分成两大类等价类:有效等价类和无效等价类
确定等价关系是等价类测试中最有挑战性的工作
生成测试用例
- 给每个等价类设置一个不同的编号
- 编写一个新的测试用例,尽可能多地包含还没被覆盖到的有效等价类;当所有的有效等价类都被覆盖之后,进入下一个步骤
- 编写一个新的测试用例,一次只包含一个还未被覆盖的无效等价类老当所有的无效等价类都被覆盖后,结束
示例
确定等价关系
生成测试用例
输出域等价类
综合测试用例
进一步思考
等价类测试扩展
- 划分依据
- 是否考虑无效等价类
- 单缺陷假设还是多缺陷假设
- 分类
- 弱一般等价类测试
- 强一般等价类测试
- 弱健壮等价类测试
- 强健壮等价类测试
示例
等价关系
弱一般等价类测试
强一般等价类
弱健壮等价类测试
强健壮性等价类测试
示例2
路径测试
- 白盒测试又称为结构性测试、透明盒测试、逻辑驱动测试或基于代码的测试
- 在不同点、不同分支检查程序的状态,从而确定程序的实际状态是否与预期状态一致
- 主要用于单元测试
- 包括路径测试和数据流测试
程序图
定义
程序图 p = ( V , E ) p=(V,E) p=(V,E),V是节点的集合、E是有向边的集合。其中,节点表示的是程序中的语句或语句片段,边表示程序语句或语句片段之间的控制流
例子
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路径之间的控制流。
拓扑路径
理论上的可行路径
可行路径
实际上的可行路径
测试覆盖指标
覆盖率
- 覆盖率是用于度量测试完整性的一种手段
- 覆盖率=被执行到的测试项数量/总项数 × 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种情况
-
路径覆盖
- 路径覆盖是指设计一组测试用例,当他们作用于被测软件时,程序中的所有路径都至少被覆盖一次
上一篇: 边界值测试的测试用例设计痛点解析(下)
下一篇: 测试用例编写思路 (2):边界值
推荐阅读
-
软件质量保证的常用测试方法 - 界值测试、等价类测试、路径测试
-
2.软件测试--测试用例设计方法(等价类/边界值/因果图/正交排列/情景设计方法/错误猜测方法)
-
软件测试方法 -- 等价类边界值
-
从零开始的测试-No.6-测试用例设计方法(等价类 + 边界值)
-
统计学习 04:假设检验(以 t 检验为例)和 P 值 - 要点 I. 假设检验的一般思路 假设检验 清楚你的问题是什么?期望得出什么结论? 例如,两种药物的疗效是否存在差异,自变量与因变量之间是否存在回归关系 .... 请始终牢记,假设检验回答的是是否存在某种关系的问题:它并不衡量这种关系有多大。 提出两种假设:零假设 (H0) 和备择假设 (H1) 零假设与备择假设相反,一般来说,研究的目的是证明原假设是错误的,即得出备择假设的结论。 例如,如果实验预期希望两种药物的疗效存在差异,那么 H0:μ1 - μ2 = 0;H1:μ1 - μ2 ≠ 0 H0:μ1-μ2 = 0 的一般形式称为双侧检验,而 >、<等零假设称为单侧检验。一般来说双侧检验更为常见,下面也主要介绍这种方法。 单尾或双尾测试 根据原始数据计算零假设概率分布的统计量(t 值、Z 值、F 值等)。 根据问题的性质选择合适的概率检验方法,从而计算出相应的统计量值;因此,不同情况的统计量值有不同的计算方法。 根据计算出的统计量值,利用统计软件,可以知道相应的 p 值是多少 也可以先确定一个合适的显著性水平(0.0.001....),并计算其临界值,再与我们计算出的统计量值进行比较,从而做出判断。 根据第四步的比较结果,如果 p 值小于预期的显著性水平(α,通常设定为 0.05),则认为该统计量远离原假设分布,属于小概率事件,则拒绝原假设,从而接受备择假设。 决定 要点 2:以 t 检验为例,演示上述假设检验思路。 t 检验基于 t 分布,常见的 t 检验有三种,如下图所示,但我认为第三种配对设计可能更常用(零假设:差异是否为零),下面介绍的例子就是一种配对设计 三次 t 检验 举例测量两组大鼠肝脏中维生素 A 的含量,比较两组大鼠维生素 A 含量是否有差异。数据如下 数据 (1) 预计两组大鼠的维生素 A 水平存在差异 (2) H0:μd=0,H1:μd≠0,α=0.05,双侧检验 (3) t 统计量的计算 配方 计算 上述程序计算的是*度为 7 的 t 分布情况下的 t 值。只需理解公式即可,不同的方法有不同的公式,这些交给统计软件即可。