基本路径法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 路径加法就是一条路径后接另一条路径 • 乘法对应于路径的重复。
ex1=p2+p3-p1
ex2=2p2 - p1
McCabe的基路径方法
McCabe开发了一种算法,用于确定基路径集合
• 这种方法首先选择一个基线路径,应该对应某个 “正常案例”程序的执行。
• 接下来重复回溯基线路径,依次“翻转”每个判断点, 即当节点的外度≥2时,必须取不同的边。
基路径测试
考虑下列约束:经过C则必经过H,经过D则 必经过G
原始 P1:A-B-C-E-F-H-J-K-M-NO-最终
在B处翻 P2:A-B-D-E-F-H-J-K-M-N转P1 O-最终
在F处翻 P3:A-B-C-E-F-G-O-最终 转P1
在H处 P4:A-B-C-E-F-H-I-N-O-最终 翻转P1
P1:A,B,C,G
基
P2:A,B,C,B,C,G P3:A,B,E,F,G
P4:A,D,E,F,G
P5:A,D,F,G
圈数计算
•令
• e是G中的边数。 • n是G中的节点数。 • p是G中的连通分量个数。
• 不增加从汇节点到源节点的边
• V(G)=e-n+2p
• 增加边后 V(G)=e-n+p
McCabe的基路径方法 • 通过定义加法和标量乘法的概念,强制使其看起 来像向量空间:
• 因此,一组基向量在一定程度上可表示整个向量 空间的本质:空间中的一切都可以用基表示.
基路径测试—向量空间的启发
• 基对测试的潜在意义:如果可以把程序看做是一 种向量空间,则这种空间的基就是要测试的非常 有意义的元素集合。如果基没有问题,则可以期 望能够用基表达的一切都是没有问题的。
ex1=p2+p3-p1
1.画出这段代码的控制流图
2.计算环路复杂度 V(G)=19-14+1=6。
3.列出基本路径:
Path1:2-3-4-16-17 Path2:2-3-5-6-16-17 Path3:2-3-5-7-8-16-17 Path4:2-3-5-7-9-10-16-17 Path5:2-3-5-7-9-11-12-16-17 Path6:2-3-5-7-9-11-14-16-17
流程图和流图示意图
10.2 软件测试技术
11
1
2 模块流程图
3
6
4
7
8
5
9
10
1
程序流图
11 2,3
6
4,5
7
8
9 10
10.2.1 白盒测试技术
Step1 根据程序的逻辑结构画出流程图
void Func(int nPosX, int nPosY) {
while (nPosX > 0) {
int nSum = nPosX + nPosY;
2
3
wk.baidu.com
4
5
6
7
8
9
10
11
12
14
16 17
4.设计测试用例 根据第3步中给出的路径,设计测试用例如下:
基路径
Path 1 Path 2 Path 3 Path 4 Path 5 Path 6
传入参数
>= > == < <= +
预期调用
m_oper.SetCurSel(0) m_oper.SetCurSel(1) m_oper.SetCurSel(2) m_oper.SetCurSel(3) m_oper.SetCurSel(4) m_oper.SetCurSel(5)
在J处翻 P5:A-B-C-E-F-H-J-L-M-N转P1 O-最终
在B、F P6:A-B-D-E-F-G-O-最终 处翻转
不可 行
不可 行
基本路径测试——举例
• 例:为下列程序设计测试用例,使之满足 基本路径覆盖要求。
1. void ReadPara(CString temp)
2. {
3. if ( temp == ">=")
✓ nPosX 取1, nPosY取-1
1 - 2, 3 - 6 - 8 - 9 - 10 - 1 - 11
✓ nPosX 取1, nPosY取-3
ex2=2p2 - p1
McCabe的基路径方法
• 核心思想
• 以程序控制流图中的线性独立环路为基
• 线性独立环路
• 一条路径,初始节点是终止节点 • 线性独立:至少拥有一条以上其它线性独立路径中没有
的边
• 线性独立环路数的数量即程序控制流图的圈数量
控制流图
McCabe的导出强连接图
五个线性独立路径
10.2.1 白盒测试技术
Step4 对每条基本路径设计测试用例
对于路径1 – 11
✓ nPosX 取-1, nPosY取任意值
1 - 2, 3 - 4, 5 - 10 - 1 - 11
✓ nPosX 取1, nPosY取1
对于路径1 - 2, 3 - 6 - 7 - 9 - 10 - 1 – 11
if (nSum > 1) {
nPosX--;
nPosY--;
}
else {
if (nSum < -1) nPosX -= 2;
else nPosX -= 4;
}
}
// end of while
}
10.2.1 白盒测试技术
Step1 根据程序的逻辑结构画出流程图
11
1
2 模块流程图
3
6
4
7
8
5
9
10
McCabe的基路径方法
弱点: 一、假设测试基路径集合是充分的
(实际未必)
二、向量运算用于程序路径的表达上, 没有意义。
基本路径测试用例生成
10.2 软件测试技术
基本路径
• 至少引入一个新语句或者新判断的程序执行通道
测试用例的设计方法
• 流程图 ==> 流图 ==> 基本路径 ==> 测试用例
4.
m_oper.SetCurSel(0);
5. else if (temp == ">")
6.
m_oper.SetCurSel(1);
7. else if ( temp == "==")
8.
m_oper.SetCurSel(2);
9. else if( temp == "<=") 10. m_oper.SetCurSel(3); 11. else if ( temp == "<") 12. m_oper.SetCurSel(4); 13. else{ 14. m_oper.SetCurSel(5); 15. } 16. return; 17.}
10.2.1 白盒测试技术
11
1
2 模块流程图
3
6
4
7
8
5
9
10
1
程序流图
11 2,3
6
4,5
7
8
9 10
10.2.1 白盒测试技术
Step3 确定基本路径的集合
基本路径
• 流图的Cyclomatic复杂度 正好是基本路径的数目
V(G) = E – N + 2
✓ V(G) = 11 - 9 + 2 = 4
基本路径测试
基本路径测试
• 基本路径测试法是在程序控制流图的基础上,通 过分析控制构造的环路复杂性,导出基本可执行 路径集合,从而设计测试用例的方法。
• 设计出的测试用例要保证在测试中程序的每个基 本可执行路径至少执行一次。
流程图
流图
基本路径 测试用例
基路径测试—向量空间的启发
• 向量空间的基是相互独立的一组向量,基“覆盖”整 个向量空间,使得该空间中的任何其他向量都可 以用基向量来表示。
10.2.1 白盒测试技术
Step2 根据流程图画出流图
流图刻画了程序的控制结构,但不涉及程序的过程性细节 • 节点:过程块,结合点,判定点 • 有向边
判定点不含复合条件,否则应按照下列方式增加判定点
If (a or b) Then X
Else Y
End If
谓词节点
a
X
b
X
Y
示例:流程图 => 流图
V(G) = P + 1
✓ V(G) = 3 + 1 = 4
1
程序流图
11 2,3
6
4,5
7
8
9 10
10.2.1 白盒测试技术
Step3 确定基本路径的集合
1 - 11 1 - 2, 3 - 4, 5 - 10 - 1 - 11 1 - 2, 3 - 6 - 7 - 9 - 10 - 1 - 11 1 - 2, 3 - 6 - 8 - 9 - 10 - 1 - 11