根据如图所示程序流程图,分别用最少的测试用例完成基本路径覆盖、条件/判定覆盖的测试设计

image-20220330163059592

存在的组合示例

组合编号 1(x > 0)
3(x < -10)
2(y > 10)
4(y < 0)
判定条件取值 判定/条件组合
1 T1 T2 M=T x > 0,y > 10,M取真
2 T1 F2 M=F x > 0,y <= 10,M取假
3 F1 T2 M=F x <= 0,y > 10,M取假
4 F1 F2 M=F x <= 0,y <= 10,M取假
5 T3 T4 N=T x < -10,y < 0,N取真
6 T3 F4 N=T x < -10,y >= 0,N取真
7 F3 T4 N=T x >= -10,y < 0,N取真
8 F3 F4 N=F x >= -10,y >= 0,N取假

条件/判定覆盖

让所有的判定结果至少出现一次,即覆盖组合存在1-8所有

if(x > 0 && y > 10){//M
y=y/x;//1
}//2
if(x < -10 || y < 0){//N
y=-(y + x)//3
}//4

测试用例

测试用例 覆盖条件 覆盖路径 覆盖组合
输入:x=1,y=11
输出:x=1,y=11
T1,T2,F3,F4 1-4 1,8
输入:x=1,y=-1
输出:x=1,y=0
T1,F2,F3,T4 2-3 2,7
输入:x=-11,y=11
输出:x=-11,y=0
F1,T2,T3,F4 2-3 3,6
输入:x=-11,y=-11
输出:x=-11,y=22
F1,F2,T3,T4 2-3 4,5

基本路径覆盖

覆盖所有可能的路径,即1,3|1,4|2,3|2,4

if(x > 0 && y > 10){//M
y=y/x;//1
}//2
if(x < -10 || y < 0){//N
y=-(y + x)//3
}//4

基本路径

  1. 画流程图

329.drawio

  1. 计算程序环路复杂度

    1. V(G)=区域数目=2
    2. V(G)=边界数目-节点数目+2=4-4+2=2
    3. V(G)=判断节点数目+1=1+1=2(出度>=2)
  2. 确定基本路径

    • 1-4
    • 2-3

测试用例

测试用例 覆盖条件 覆盖路径 覆盖组合
输入:x=1,y=11
输出:x=1,y=11
T1,T2,F3,F4 1-4 1,8
输入:x=1,y=-1
输出:x=1,y=0
T1,F2,F3,T4 2-3 2,7

下边是用于计算输出和路径统计的代码

let x = -11;
let y = -11;
//////////////////////////
if (x > 0) {
console.log("T")
}
else {
console.log("F")
}
if (y > 10) {
console.log("T")
}
else {
console.log("F")
}
//////////////////////////
if (x > 0 && y > 10) {
y = y / x;
console.log("1");
}else{
console.log("2");
}
//////////////////////////
if (x < -10) {
console.log("T")
}
else {
console.log("F")
}
if (y < 0) {
console.log("T")
}
else {
console.log("F")
}
//////////////////////////
if (x < -10 || y < 0) {
y = -(y + x);
console.log("3");
}else{
console.log("4");
}
//////////////////////////
console.log("x", x);
console.log("y", y);