逻辑覆盖-语句覆盖法-参考答案
目录

任务1
题目:
根据下面的代码段,画出程序流程图,对程序流程图进行分析,设计一组测试用例,满足语句覆盖。
任务步骤:
- 分析代码,画出程序流程图;
- 分析流程图,写出分析结果;
- 设计测试用例,用例结果书写方式参考案例。
代码段:
public void Test(int x, int y)
{
int a = -1;
int b = -1;
if ((x>0)||(y>0))
{
a = 10;
}
if ((x<10)&&(y<10))
{
b = 0;
}
}
流程图:

程序流程图
答案:
根据流程图分析,包括内容如下:
2个语句:S1、S2。
2个判断:M1、M2。
(1)假设输入一组数据x=5,y=5:
- 经过M1判定时,M1为True,所以走c路径,执行S1;
- 经过M2判定时,M2为True,所以走e路径,执行S2。
用例设计:
语句覆盖用例如下:
| 测试用例 | 输入 | M1 | M2 | 被测路径 |
| CASE1 | x=5,y=5 | True | True | a-c-e |
任务2
题目:
根据下面的代码段,画出程序流程图,对程序流程图进行分析,设计一组测试用例,满足语句覆盖。
任务步骤:
- 分析代码,画出程序流程图;
- 分析流程图,写出分析结果;
- 设计测试用例,用例结果书写方式参考案例。
代码段:
public class Test {
int x;
public void TestT(int a, int b) {
if(a>9 && b>5) {
x = a * a * b;
}else {
if(a<0 && b<0) {
x = a - b;
}else {
x = a + b;
}
}
}
}
流程图:

程序流程图
答案:
根据流程图分析,包括内容如下:
3个语句:S1、S2、S3。
2个判断:M1、M2。
- 假设输入一组数据a=10,b=6:
- 经过M1判定时,M1为True,所以走b路径,执行S1。
(2)假设输入一组数据a=-1,b=-2:
- 经过M1判定时,M1为False,所以走c路径。
- 经过M2判定时,M2为True,所以走d路径,执行S2。
(3)假设输入一组数据a=0,b=2:
- 经过M1判定时,M1为False,所以走c路径。
- 经过M2判定时,M2为False,所以走e路径,执行S3。
用例设计:
语句覆盖用例如下:
| 测试用例 | 输入 | M1 | M2 | 被测路径 |
| CASE1 | a=10,b=6 | True | a-b | |
| CASE2 | a=-1,b=-2 | False | True | a-c-d |
| CASE3 | a=0,b=2 | False | False | a-c-e |
任务3
题目:
根据下面的代码段,画出程序流程图,对程序流程图进行分析,设计一组测试用例,满足语句覆盖。
任务步骤:
- 分析代码,画出程序流程图;
- 分析流程图,写出分析结果;
- 设计测试用例,用例结果书写方式参考案例。
代码段:
public class Test1 {
public void TestS(int x, int y) {
int a = 0;
while(x>0) {
if(y == 0) {
x = y+2;
break;
}else {
if(y == 1){
a = y+10;
}else {
a = y+20;
}
}
x=x-1;
}
}
}
流程图:

程序流程图
答案:
根据流程图分析,包括内容如下:
4个语句:S1、S2、S3、S4。
3个判断:M1、M2、M3。
(1)假设输入一组数据x=10,y=0:
- 经过M1判定时,M1为True,所以走b路径;
- 经过M2判定时,M2为True,所以走c路径,执行S1。
(2)假设输入一组数据x=4,y=1:
- 经过M1判定时,M1为True,所以走b路径;
- 经过M2判定时,M2为False,所以走d路径;
- 经过M3判定时,M3为True,所以走e路径,执行S2,走h路径,执行S4。
(3)假设输入一组数据x=5,y=2:
- 经过M1判定时,M1为True,所以走b路径;
- 经过M2判定时,M2为False,所以走d路径;
- 经过M3判定时,M3为False,所以走f路径,执行S3,走i路径,执行S4。
用例设计:
语句覆盖用例如下:
| 测试用例 | 输入 | M1 | M2 | M3 | 被测路径 |
| CASE1 | x=10,y=0 | True | True | a-b-c | |
| CASE2 | x=4,y=1 | True | False | True | a-b-d-e-h |
| CASE3 | x=5,y=2 | True | False | False | a-b-d-f-i |
任务4
题目:
根据下面的代码段,画出程序流程图,对程序流程图进行分析,设计一组测试用例,满足语句覆盖。
任务步骤:
- 分析代码,画出程序流程图;
- 分析流程图,写出分析结果;
- 设计测试用例,用例结果书写方式参考案例。
代码段:
public class Login {
public static void login(String username,String password) {
if (username == "" || password == "") {
System.out.println("用户名或密码不能为空");
}
else if(username=="admin" && password =="123456" ) {
System.out.println("登录成功");
}
else if(username!="admin" && password =="123456" ) {
System.out.println("请输入正确的用户名");
}
else if(username=="admin" && password !="123456") {
System.out.println("请输入正确的密码");
}
else {
System.out.println("请输入正确的用户名和密码");
}
}
}
流程图:

程序流程图
答案:
根据流程图分析,包括内容如下:
5个语句:S1、S2、S3、S4、S5。
4个判断:M1、M2、M3、M4。
(1)假设输入一组数据username="" , password =="":
- 经过M1判定时,M1为True,所以走b路径,执行S1。
(2)假设输入一组数据username="admin" , password =="123456":
- 经过M1判定时,M1为False,所以走c路径;
- 经过M2判定时,M2为True,所以走d路径,执行S2。
(3)假设输入一组数据username="ad" , password =="123456":
- 经过M1判定时,M1为False,所以走c路径;
- 经过M2判定时,M2为False,所以走e路径;
- 经过M3判定时,M3为True,所以走f路径,执行S3。
(4)假设输入一组数据username="admin" , password =="111111":
- 经过M1判定时,M1为False,所以走c路径;
- 经过M2判定时,M2为False,所以走e路径;
- 经过M3判定时,M3为False,所以走g路径;
- 经过M4判定时,M4为True,所以走h路径,执行S4。
(5)假设输入一组数据username="abc" , password =="123":
- 经过M1判定时,M1为False,所以走c路径;
- 经过M2判定时,M2为False,所以走e路径;
- 经过M3判定时,M3为False,所以走g路径;
- 经过M4判定时,M4为False,所以走i路径,执行S5。
用例设计:
语句覆盖用例如下:
| 测试用例 | 输入 | M1 | M2 | M3 | M4 | 被测路径 |
| CASE1 | username="",password="" | True | a-b | |||
| CASE2 | username="admin",password="123456" | False | True | a-c-d | ||
| CASE3 | username="ad",password="123456" | False | False | True | a-c-e-f | |
| CASE4 | username="admin",password="111111" | False | False | False | True | a-c-e-g-h |
| CASE5 | username="abc",password="123" | False | False | False | False | a-c-e-g-i |
任务5
题目:
根据下面的代码段,画出程序流程图,对程序流程图进行分析,设计一组测试用例,满足语句覆盖。
任务步骤:
- 分析代码,画出程序流程图;
- 分析流程图,写出分析结果;
- 设计测试用例,用例结果书写方式参考案例。
代码段:
public class Leapyear {
public void Year(int year) {
if(year %4 ==0 && year%100!=0){
System.out.println("leap year.");
}else if(year%400==0) {
System.out.println("Century leap year.");
}
else {
System.out.println("It is not leap year.");
}
}
}
流程图:

程序流程图
答案:
根据流程图分析,包括内容如下:
3个语句:S1、S2、S3。
2个判断:M1、M2。
(1)假设输入一组数据year=2004:
- 经过M1判定时,M1为True,所以走b路径,执行S1;
(2)假设输入一组数据year=2000:
- 经过M1判定时,M1为False,所以走c路径;
- 经过M2判定时,M2为True,所以走d路径,执行S2;
(3)假设输入一组数据year=2018:
- 经过M1判定时,M1为False,所以走c路径;
- 经过M2判定时,M2为False,所以走e路径,执行S3;
用例设计:
语句覆盖用例如下:
| 测试用例 | 输入 | M1 | M2 | 被测路径 |
| CASE1 | year=2004 | True | ab | |
| CASE2 | year=2000 | False | True | acd |
| CASE3 | year=2018 | False | False | ace |

1461

被折叠的 条评论
为什么被折叠?



