知识点:
1.原理
- 是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径的集合,然后根据可执行路径进行测试用例设计的方法。
- 此方法设计出的测试用例需保证被测程序的每个可执行语句至少执行一次。
2.步骤
(画程序流程图)
(1)画程序控制流图
- 圆—— 为流图的结点,表示一个或多个无分支语/源程序语句。
- 箭头——为边或连接,代表控制流。
- 注意:
a.代码行号——》结点序号
b.选择或分支结构的分支汇聚处又一个汇聚结点
c.边和结点圈定的范围叫做区域。在计算区域数时,图形外的区域也应记为一个区域。
d.若判断结构的表达式包含1/n个逻辑运算符(OR、AND、NAND、NOR)连接的复合
e.条件表达式,则需要修改为一系列只有单条件的嵌套判断。
(2)计算程序环形复杂度a.定义:
从程序的环形复杂度可导出程序基本路径集中的独立路径条数。
确保程序中每个可执行语句至少执行一次的测试用例数目的上界。
b.计算方法:
区域数=环形复杂度
环形复杂度V(G)=E-N+2 (E为控制流图中的边数,N为控制流图中的结点数)
环形复杂度V(G)=P+1 (P为数据流图中的判定结点数)
(3)导出测试用例:根据环形复杂度和程序结构来设计测试用例数据输入和预期结果。
(4)准备测试用例:确保基本路径集中的每一条路径的执行。
3.补充知识点--测试用例
(1)定义:
是为发现软件中存在的问题而编写的一组包含测试输入、执行条件以及预期结果的文档,用来判断软件程序是否工作正确,软件产品是否满足需求。它是有效发现软件缺陷的最小测试执行单元。
(2)8个基本项内容:
测试用例编号、测试项目、用例标题、重要级别、预置条件、输入数据、操作步骤和预期输出。不同公司的测试用例所包含的内容不尽相同。
例题1:
//被测程序 double sumNumber(int m, int n) 1 { 2 int i=0; 3 double sum=1; 4 for(i=1;i<=n;i++) 5 { 6 i