设计下列伪代码的基本路径测试。 Void Func(int nPost, int nPosY) 1 while(nPosX > 0) { 2 int nSum=nPosX+nPosY; 3 if (nSum > 1) 4 nPosX--; 5 nPosY--; } else { 6 if (nSum < -1) 7 nPosX -= 2; else 8 nPosX -= 4; 9 } 10 } // end of while 11 }
时间: 2024-04-28 10:20:43 浏览: 162
基本路径测试是一种白盒测试方法,通过覆盖程序中所有可能的基本路径来检测程序中的错误。基本路径是程序流图中从一个节点到另一个节点的路径,其中每个节点只被访问一次。
下面是对该伪代码进行基本路径测试的步骤:
1. 绘制程序的流程图。
2. 标记所有可能的路径,并给它们分配一个唯一的编号,如下所示:
路径1: 1-2-3-4-5-10
路径2: 1-2-3-5-6-9-10
路径3: 1-2-3-5-8-9-10
3. 通过运行测试用例来覆盖这些路径。为了覆盖路径1,需要让nPosX的初始值大于0,且nSum的值大于1。为了覆盖路径2,需要让nPosX的初始值大于0,且nSum的值小于-1。为了覆盖路径3,需要让nPosX的初始值大于0,且nSum的值介于-1和1之间。
4. 编写测试用例并运行。下面是几个例子:
测试用例1: Func(2, 1)。这个用例将覆盖路径1。
测试用例2: Func(2, -3)。这个用例将覆盖路径2。
测试用例3: Func(2, -1)。这个用例将覆盖路径3。
如果所有的路径都被覆盖了,那么程序的基本路径测试就完成了。
相关问题
利用基本路径测试方法,设计测试用例,对给出的程序进行测试。 1.根据程序逻辑导出流图 2.确定Cyclomatic复杂性度量V(G) 3.确定独立路径集合 4.设计测试用例,确保每条独立路径至少执行一遍。 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 } (10分)
1. 程序逻辑流图如下:
```
Start -> A -> B -> C -> D -> E -> F -> End
```
其中,A表示while循环起始节点,B表示nSum > 1的判断节点,C表示nSum <= 1的判断节点,D表示nSum > 1分支的执行节点,E表示nSum < -1分支的执行节点,F表示nSum >= -1 && nSum <= 1分支的执行节点,End表示程序结束节点。
2. 根据程序逻辑流图,可以计算出Cyclomatic复杂性度量V(G) = 7。
3. 独立路径集合如下:
```
1. Start, A, B, D, A, B, C, F, End
2. Start, A, B, D, A, B, C, E, End
3. Start, A, B, C, F, End
4. Start, A, B, C, E, End
5. Start, A, B, C, D, A, B, C, F, End
6. Start, A, B, C, D, A, B, C, E, End
7. Start, A, B, C, D, A, B, D, A, B, C, F, End
8. Start, A, B, C, D, A, B, D, A, B, C, E, End
9. Start, A, B, D, A, B, C, D, A, B, C, F, End
10. Start, A, B, D, A, B, C, D, A, B, C, E, End
```
4. 测试用例设计如下:
| 测试用例编号 | 输入参数 | 预期输出 |
| ------------ | -------- | -------- |
| 1 | nPosX = 2, nPosY = 1 | 无输出 |
| 2 | nPosX = 5, nPosY = -2 | 无输出 |
| 3 | nPosX = 0, nPosY = 0 | 无输出 |
| 4 | nPosX = -1, nPosY = 1 | 无输出 |
| 5 | nPosX = 3, nPosY = -4 | 无输出 |
| 6 | nPosX = 2, nPosY = 0 | 无输出 |
| 7 | nPosX = 4, nPosY = -3 | 无输出 |
| 8 | nPosX = -3, nPosY = 2 | 无输出 |
| 9 | nPosX = 3, nPosY = 1 | 无输出 |
| 10 | nPosX = -2, nPosY = -1 | 无输出 |
阅读下面的源代码,请完成以下要求。 (1)画出其程序流程图 (2)计算其环形复杂度 (3)列出程序流程图的基本路径 (4)对每条基本路径设计测试用例(用例格式为nPosX= ?,nPosY= ?;nSum=?) int Func(int nPosX, int nPosY) { int nSum=0; while (nPosX > 0) { nSum = nPosX + nPosY; if (nSum > 1) { nPosX--; nPosY--; } else { if (nSum < -1) nPosX -= 2; else nPosX -= 4; } } // end of while return(nSum); }
抱歉,我无法绘制程序流程图和计算环形复杂度。但是,我可以列出程序流程图的基本路径和设计测试用例。
程序流程图的基本路径:
1. 开始 -> while循环 -> nSum > 1 -> nPosX-- -> nPosY-- -> while循环
2. 开始 -> while循环 -> nSum > 1 -> nPosX-- -> nPosY-- -> while循环 -> nSum < -1 -> nPosX -= 2 -> 结束
3. 开始 -> while循环 -> nSum > 1 -> nPosX-- -> nPosY-- -> while循环 -> nSum >= -1 -> nSum <= 1 -> nPosX -= 4 -> 结束
设计测试用例:
基本路径1的测试用例:
- nPosX = 2,nPosY = 1,nSum = 3
- nPosX = 5,nPosY = 2,nSum = 7
- nPosX = 3,nPosY = 5,nSum = 8
基本路径2的测试用例:
- nPosX = 4,nPosY = 2,nSum = -1
- nPosX = 7,nPosY = 3,nSum = -2
- nPosX = 6,nPosY = 6,nSum = -3
基本路径3的测试用例:
- nPosX = 8,nPosY = 4,nSum = 0
- nPosX = 12,nPosY = 5,nSum = -1
- nPosX = 10,nPosY = 3,nSum = 1
阅读全文