第二章
- 穷尽所有可能的输入和输出才是完美的测试,但是无法实现
- 变量独立用等价类划分;不独立用决策表
等价类划分
- 划分原则:
- 互不相交
- 无冗余
- 结合后较完备
- 常见划分方法:
划分方法 | 有效区间 | 无效区间 |
---|---|---|
按数值区间 | 1 | 2 |
布尔(合法性)必须满足 ...条件 | 1 | 1 |
集合(可以无限) | 1 | 1 |
枚举(有限) | 1 | 1 |
- 等价类测试
- weak(弱):只考虑单缺陷
- strong(强):考虑单缺陷与多缺陷并发
- traditional(一般):只考虑有效值
- robust(健壮):考虑有效和无效值
尽量考虑强健壮性测试
强健壮:0-所有个属性的错误
弱健壮:只考虑0-1个
- 设计测试用例:
- 找到所有等价类:输入条件、输出域
- 建立表格,填入等价类
- 唯一编号等价类
- 生成测试用例:一条测试用例尽量多覆盖有效等价类,只覆盖一个无效类
- 边界值分析:控制单一等价类变化,取值范围为(min+min^+min+,min−min^-min−,max+max^+max+,max−max^-max−,),其他都去正常值(normnormnorm)
只适用于独立的有界的物理量变量之中
- 等价类测试的弱形式不如强形式测试全面。
- 无效值会引起运行错误的时候(实现语言是强类型),则没有必要做健壮形式的测试。
- 错误条件很重要的时候,健壮测试很重要。
- 边界值测试是等价类测试的一种补充,两者结合可以加强测试效果。
- 决策表技术可以解决变量之间依赖的问题。
- 要进行多次尝试,确认最合适的等价类划分。
决策表
桩 Stub | 条目 Rule |
---|---|
条件桩 Condition (输入) | |
C1 | 条件条目1 |
C2 | 条件条目2 |
行动桩 Action (输出) | |
A1 | 行动条目1 |
A2 | 行动条目2 |
- 建立决策表
- 找到所有的条件桩和行动桩
- 列表
- 填入条目:条件和行动
- 简化(条件相似,行动相同)
因果图
- 等价 Implication:if C1=1C_1=1C1=1 then E1=1E_1 =1E1=1,else E1=0E_1 =0E1=0
- 非 Not: if C1=1C_1=1C1=1 then E1=0E_1 =0E1=0,else E1=1E_1 =1E1=1
- 或 Or: if C1orC2orC3=1C_1orC_2orC_3=1C1orC2orC3=1 then E1=1E_1 =1E1=1,else E1=0E_1 =0E1=0
- 与 And: if C1andC2=1C_1andC_2=1C1andC2=1 then E1=1E_1 =1E1=1,else E1=0E_1 =0E1=0
约束
- 异 Exclusive: either C1orC2=1C_1orC_2=1C1orC2=1 不同时为1
- 或 Inclusive: at least C1orC2orC3=1C_1orC_2orC_3=1C1orC2orC3=1 不同时为0,至少有一个为1
- 唯一 One and only one: one and only one of C1orC2orC3=1C_1orC_2orC_3=1C1orC2orC3=1只能有一个为1
- 要求 Require: C1requiresC2C_1requiresC_2C1requiresC2
我强,你也得强
C1 | C2 |
---|---|
1 | 1 |
0 | 1 |
0 | 0 |
- 强制 Masking:E1masksE2E_1masksE_2E1masksE2
我强,你不能强
E1 E2 0 0 0 1 1 0
- 生成因果图步骤:
- 了解需求,给每个因果编号,联系因与果或果与果
- 用因果图表达出因与果的逻辑关系
- 建立决策表
- 测试用例
- 一个果结点只能接收一个逻辑关系,不能同时接受两个及以上逻辑关系
如图即为错误画法,正确画法可以在上中间加入中间状态结点 - 当一个因与另两个因的结果共同有结果时一定需要一个中间状态。
正交测试
控制变量,找出最优组合
- 因子 Factor:变量数
- 水平 Level: 一个变量可以取到的值的个数
- 轮数 Runs:需要进行测试的次数
- 综合检测 Comprehensive test:每一个组合都要测试一遍,需要进行FactorLevelFactor^{Level}FactorLevel次,耗费时间。
- 单变量测试多次 Single factor test for many times:在相同的情况下固定其他变量,单一变量发生变化,达到参数的最优水平。多次变换变量最后得到最优的参数组合,即最接近实际情况的结果。
- 单变量测试次数:times=level+(factors−1)×(levels−1)times=level+(factors-1)×(levels-1)times=level+(factors−1)×(levels−1)
- 正交表格LRuns(LevelsFactors)L_{Runs}(Levels^{Factors})LRuns(LevelsFactors)
- Runs: 数组行数
- Factors: 数组列数
- Levels: 单个因子可接受的值的最大数目
- Experiment times=∑(每个Factor的Level数量-1)+1
- 正交测试步骤
- 因子水平表
- 因子取值范围
- 边界值确定
- 实验次数
- 找到合适的表
- 填表
情景测试
- 基于一个假设的故事,帮助人思考复杂的测试环境或系统
- 五个特性:
- 有情景
- 激发性
- 可信
- 复杂
- 已被评估
- 事件流
- 基本流事件:应该包含执行用例时“通常”发生的情况。
- 替代流事件:包含了一个可选的或特殊的角色相对于正常行为的行为,以及正常行为的变化。
Scenario for the use case
– Scenario 1: Basic flow
– Scenario 2: Basic flow ->Alternate flow 1
– Scenario 3: Basic flow ->Alternate flow 1 ->Alternate flow 2
– Scenario 4: Basic flow ->Alternate flow 3
– Scenario 5: Basic flow ->Alternate flow 3 ->Alternate flow 1
– Scenario 6: Basic flow ->Alternate flow 3 ->Alternate flow 1 ->Alternate flow 2
– Scenario 7: Basic flow ->Alternate flow 4
– Scenario 8: Basic flow ->Alternate flow 3 ->Alternate flow 4
- 情景测试步骤
- 阅读用例文本描述,并识别基本流和替代流的每个组合——情景
- 识别测试用例并创建一个场景矩阵
- 每个场景应该至少有一个测试用例,但可能会有更多。
- 场景矩阵的通用格式,其中各行代表各个测试用例,各列代表测试用例的信息。
- V (valid): 表示有效的条件,可执行基本流。
- I (invalid): 表示在这种条件下将激活备选流。
- N/A: 表示不适用于测试用例
- 确定要进行测试的数据值
有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:
(1)若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。
(2) 若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来。
(3)若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。
答案:
– 基本流:投入5角硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。
– 备选流:
1、〖零钱找完〗的红灯没亮,这时在投入1元硬币并押下按钮后,在送出饮料的同时退还5角硬币。
2、〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来
场景:
– 场景1:基本流
– 场景2:备选流1
– 场景3:备选流2
黑盒测试
- 道 :不关注细节、规约、早期开展
- 法 :等价类划分、边界值分析;决策表、因果图;正交测试
- 术 :。。↖ 独立变量↗。。。。。↖不独立↗。。↑更少、代表性
- 器 :项目管理,各个阶段