当前位置:
文档之家› 软件测试2_黑盒测试 (下)
软件测试2_黑盒测试 (下)
功率大于50马力吗 维修记录不全吗 运行超过10年吗
举例:维修机器问题(续)
(3)填入条件项;
1 2
Y Y N
3
Y N Y
4
Y N N
5
N Y Y
6
N Y N
7
N N Y
8
N N N
功率大于50马吗?
Y Y Y
条 维修记录不全吗? 件
运行超过10年吗?
动 进行优先处理 作 作其他处理
利用集合的笛卡尔积计算条件项的取值
举例:维修机器问题(续)
(4)填入动作项;
1 2 Y Y N 3 Y N Y 4 Y N N 5 N Y Y 6 N Y N 7 N N Y 8 N N N
功率大于50马力吗?
Y Y Y
条 维修记录不全吗? 件 动 进行优先处理 作 作其他处理
运行超过10年吗?
1,2合并,5,7合并,6,8合并
举例:维修机器问题(续)
(5)化简;
(1) 功率大于50马力吗? Y Y — (2) Y N Y (3) Y N N (4) N — Y (5) N — N
条 维修记录不全吗? 件
动 作 作其他处理
进行优先处理
运行超过10年吗?
基于判定表的测试
根据输入输出绘制 判定表;
设计测试用例覆盖 判定表中每条规则;
条件桩(Condition Stub )
列出问题的所有条件
动作桩(Action Stub )
列出可能采取的操作
条件项(Condition Entity)
列出条件桩的取值
动作项(Action Entity )
列出条件项各种取值下应该
采取的动作
规则
任何一个条件组合的特定取值及其相应要 执行的操作称为规则; 在判定表中贯穿条件项和动作项的一列就 是一条规则; 判定表中列出多少组条件取值,也就有多 少条规则,即条件项和动作项有多少列。
— — — T — — — T
C6:b = c? — — —其中包含了另外的25- F T F T F T F T a1: 非三角形 √ √ √1+24-1+23-1=53个组 合 a2: 不等边三角形 √ a3: 等腰三角形 √ √ √ a4: 等边三角形 √
二、设计测试用例
用例ID
DT1 DT2 DT3 DT4 DT5 DT6 DT7 DT8 DT9 DT10 DT11
第一次尝试
M1={月份:每月有30天}
M2={月份:每月有31天} M3={月份:此月是2月} D1={日期:1≤日期≤28} D2={日期:日期=29}
D3={日期:日期=30}
D4={日期:日期=31} Y1={年:年是闰年} Y2={年:年是平年}
有256条规则的第一次尝试
在一些数据处理问题当中,某些操作的实施依赖于多个逻辑 条件的组合,即:针对不同逻辑条件的组合值,分别执行不 同的操作。判定表很适合于处理这类问题。
在程序设计发展的初期,判定表被当作编写程序
的辅助工具。
在所有的黑盒测试方法中,基于判定表的测试 是最为严格、最具有逻辑性的测试方法。
2.判定表的组成
根据软件规格说明 ①列出所有的条件桩和动作桩; ②确定规则的个数; 假如有n个条件,每个条件有两个取值(0,1), 则有2n 种规则; ③填入条件项; ④填入动作项,得到初始决策表; ⑤简化,合并相似规则(相同动作)。
举例:维修机器问题
问题描述:
“……对于功率大于50马力的机器
,并且维修记录不全或已运行10年 以上的机器,应给予优先的维修处理 ……”
7 M2 D2 —
8 M2 D3 —
9 M2 D4 —
10 M2 D5 —
X
X
X X X
X
X
X
X X X
此月是12月Leabharlann 此月是2月此年是闰年
c1:月份在 c2:日期在 c3:年在 行为 a1:不可能 a2:日期增1 a3:日期复位 a4:月份增1 a5:月份复位 a6:年增1
11 M3 D1 —
12 M3 D2 —
T T T T
等边三角形 不可能
一、设计判定表(续)
1 a, b, c构成三角 F
形 条 a = b? 件
(4)
填 写 判 定 表
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ F F F F F F F F F F F T F T T T F F T F T F T T F T F F T T F T
a
4 1 1 5 ? ? 2 ? 2 3 3
b
1 4 2 5 ? ? 2 ? 3 2 4
c
2 2 4 5 ? ? 3 ? 2 2 5
预期输出
非三角形 非三角形 非三角形 等边三角形 不可能 不可能 等腰三角形 不可能 等腰三角形 等腰三角形 不等边三角形
a=b, a=c, b≠c
课后练习
登陆功能说明书:(用户输入和密码输入) 1)管理员用户名为“admin”,密码为“123456”,正 常登陆 2)用户名和密码输入为空,提示 “用户和密码不允 许为空” 在用户名和密码非空的情况下: 3)要求用户名必须输入字母,否则提示“输入非法 ” 4)要求密码必须输入数字,否则提示 “输入非法” 在输入合法的情况下: 5)用户名错误,提示 “用户名和密码输入错误”, 用户名和密码清空 6)用户名正确,密码错误,提示 “用户名和密码输 入错误”,用户名保留,密码清空
13 M3 D3 —
14 M3 D4 —
15 M3 D5 —
16 M4 D1 —
17 M4 D2 Y1
18 M4 D2 Y2
19 M4 D3 Y1
20 M4 D3 Y2 X
21 M4 D4 — X
22 M4 D5 — X
X
X
X
X X X X
X
X X X X X
NextDate函数的精简判定表
1~3 M1 D1,D2,D3 — 4 M1 D4 — 5 M1 D5 — X X X X X X X 6~9 M2 D1,D2,D3,D4 — 10 M2 D5 —
NextDate函数的判定表
每月30天 每月31天,12月除外
c1:月份在 c2:日期在 c3:年在 行为 a1:不可能 a2:日期增1 a3:日期复位 a4:月份增1 a5:月份复位 a6:年增1
1 M1 D1 —
2 M1 D2 —
3 M1 D3 —
4 M1 D4 —
5 M1 D5 — X
6 M2 D1 —
条件 c1:月份在M1中? T c2:月份在M2中? c3:月份在M3中? c4:日期在D1中? c5:日期在D2中? c6:日期在D3中? c7:日期在D4中? c8:年在Y1中? a1:不可能 a2:NextDate
T T
年变量对应的等价类收缩为表中的一个条件
第二次尝试(重点考虑闰年)
M1={月份:每月有30天} M2={月份:每月有31天} M3={月份:此月是2月} D1={日期:1≤日期≤28} D2={日期:日期=29} D3={日期:日期=30} D4={日期:日期=31} Y1={年:年是平年} Y2={年:年是闰年}
案例: NextDate函数
问题描述
程序有三个输入变量month、day、year,并 且满足:1≤month≤12、1≤day≤31、1900≤ year ≤2050。它们分别作为输入日期的月份 、日、年份,通过程序可以输出该输入日期 在日历上下一天的日期。例如,输入为2011 年8月8日,则该程序的输出为2011年8月9 日。
c1:月份在 c2:日期在 c3:年在
行为
a1:不可能 a2:日期增1 a3:日期复位 a4:月份增1 a5:月份复位 a6:年增1
NextDate函数的测试用例
用例ID 月份 日期 1~3 4 15 4 4 30 5 4 31 6~9 1 15 10 1 31 11~14 12 15 15 12 31 16 2 15 17 2 28 18 2 28 19 2 29 20 2 29 21,22 2 30 年 2001 2001 2001 2001 2001 2001 2001 2001 2004 2001 2004 2001 2001 预期输出 2001年4月16日 2001年5月1日 不可能 2001年1月16日 2001年2月1日 2001年12月16日 2002年1月1日 2001年2月16日 2004年2月29日 2001年3月1日 2004年3月1日 不可能 不可能
请建立判定表。
举例:维修机器问题(续) (1)列出所有的条件桩和动作桩
• 条件桩 • C1:功率大于50马力吗? • C2:维修记录不全吗? • C3:运行超过10年吗? • 动作桩 • A1:进行优先处理 • A2:作其他处理
举例:维修机器问题(续)
(2)确定规则个数
• 输入条件个数:3; • 每个条件的取值:“是”或“否”; • 规则个数:2*2*2 =8;
规则示例:三角形问题
规则合并
规则合并
规则合并就是判定表的简化。
有两条或多条规则具有相同的动作,并且
其条件项之间存在着极为相似的关系,就 可以将规则合并。
(1)两条规则合并成一条
条件项“—” 表示与取值 无关。
(2)两条规则的进一步合并
条件项“—”在 逻辑上包含其 它的条件。
3. 判定表建立步骤
案例:三角形问题
问题描述
输入三个正整数a、b、c,分别作为三角形
的三条边,通过程序判断三条边是否能构成