00 int Sort ( int iRecordNum, int iType)
01 {
02 int x=0;
03 int y=0;
04 while ( iRecordNum == 0 )
05 {
06 if( iType==0 )
07 x=y+2;
08 else
09 if ( iType==1 )
10 x=y+10;
11 else
12 x=y+20;
13 }
14 return x; }
步骤一:画控制流图
步骤二:根据控制流图计算圈复杂度V(G)=11(条边)-9(个节点)+2=4
因此,该函数的圈复杂度是4。更重要的是,V(G)的值提供了组成基本集的基路径的上界,并由此得出覆盖所有程序语句所需的测试设计数量的上界。
步骤三:根据圈复杂度计算基路径。
基路径确定方法
首先选择一个基线路径,应该对应某个正常案例程序执行(建议选择有尽可能多的判断节点的路径) 然后重新回溯基线路径,依次“翻转”每个判断点,即当节点的外度≥2时,必须取不同的边。
注:遇到存在循环的题目不必执着于“无穷的翻转”
Test path1:2→4→14
在4处反转得到↓
Test path2:2→4→6→7→13→4→14
在6处反转得到↓
Test path3:2→4→6→9→10→13→4→14
在9处反转得到↓
Test path4:2→4→6→9→12→13→4→14
步骤三:根据基路径设计测试用例。
输入数据 | 预期输出 | |
测试用例1 | iRecordNum = 1 iType = 0 | x = 0 y = 0 |
测试用例2 | iRecordNum = 0 iType = 0 | x = 2 y = 0 |
测试用例3 | iRecordNum = 0 iType = 1 | x = 10 y = 0 |
测试用例4 | iRecordNum = 0 iType = 2 | x = 20 y = 0 |