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