软件测试技术实验五 JUnit 单元测试案例开发一

一、实验目的

1、掌握 Junit4.x 进行单元测试

2、掌握 Junit4.x 编写测试代码方法

3、结合三角形案例源代码,逻辑覆盖法进行动态白盒测试。

、实验环境

操作系统:Windows 7 Win10

应用系统:Idea 以上版本或 MyEclipse

三、实验任务

1、根据问题描述,分析控制要求。

2、学习等价类划分方法,用等价类法设计测试用例。

四、实验步骤

1、被测函数源代码。

import java.util.Scanner;

public class Rjcs {
	public static void main(String[] args) {
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in);//接受键盘输入a,b,c
		System.out.println("请输入a的值");
		int a = sc.nextInt();
		System.out.println("请输入b的值");
		int b = sc.nextInt();
		System.out.println("请输入c的值");
		int c = sc.nextInt();
		if(a>=1 &&a<=200) {
			if(b>=1 && b<=200) {
				if(c>=1&&c<=200) {
					test(a,b,c);
				}else {
					System.out.println("c的值不合规!");
				}
			}else {
				System.out.println("b的值不合规!");
			}
		}else {
			System.out.println("a的值不合规!");
		}
	}
	//判断三角形类型
			public static void test(int a,int b,int c){
				boolean pd = false;
				if((a+b>c)&&(a+c>b)&&(b+c>a)){
					if((a==b)&&(b==c)) {
						System.out.println("等边三角形");
					}else if((a==b)||(b==c)||(a==c)) {
						System.out.println("等腰三角形");
					}else {
						System.out.println("一般三角形");
					}
				}else {
					System.out.println("不能构成三角形");
				}
			} 
}

2请根据函数源代码设计三角形问题的函数控制流程图。

(1)带注释的Main()控制流图

图 5.1 三角形问题函数 main () 的控制流程图

(2)带注释的test()控制流图

图 5.2三角形问题函 test () 的制流程图

3、三角形问题函数源代码共有多少个判定条件,请逐一列出

(1)两个函数流程图

 5.3 main(和 test()函数的流程图

(2)列出判定条件

5.1 三角形判定条件

ID

判定条件

备注

S-001

1<=a<=100

a边长取值范围

S-002

1<=b<=100

b边长取值范围

S-003

1<=c<=100

c边长取值范围

S-004

(a+b+c)&&(a+c>b)&&(b+c>a)

三角形构成条件

S-005

(a==b)&&(b==c)

等边三角形

S-006

(a==b)||(b==c)||(a==c)

等腰三角形

S-007

其他情况(a≠b≠c)

一般三角形

注释:三角形三边长分别为:abc……

五、逻辑覆盖方法设计测试用例

1、语句覆盖法设计测试用例(main()函数)

表 5.2 main 函数语句覆盖法设计的测试用例

ID

输入项

预期输出

通过路径

语句覆盖

a

b

c

A/B/C或X不合规

L-abcd

xx%

LC-001

0

10

15

A

M-L1

25%

LC-002

10

0

15

B

M-L2

25%

LC-003

10

15

0

C

M-L3

25%

LC-004

10

15

20

D

M-L4

25%

注:预期输出/测试结果取值为:

A: a 值不合理;B: b 值不合理;c: c 值不合理;D:a,b,c 取值合理

2、语句覆盖法设计测试用例(test()函数)

表 5.3 test 函数语句覆盖法设计的测试用例

ID

输入项

预期输出

通过路径

语句覆盖

a

b

c

A/B/C或X不合规

T

xx%

LC-001

10

15

25

D

T-L1

25%

LC-002

10

10

10

A

T-L2

25%

LC-003

10

10

15

B

T-L3

25%

LC-004

10

15

20

C

T-L4

25%

注:预期输出/测试结果取值为:

A: 等边三角形:B:等腰三角形;c:一般三角形;D:不构成三角形:x:X 不合规定,如:a 不合规定。

3、判定覆盖法设计测试用例

(1) 针对 main () 函数进行判定覆盖法进行测试用例设计

(2) 由 main()函数可知有三个判定条件构成: T1: 1Sas100;T2: SbS100:T3: 1≤c<100:

表 5.3 main0函数的判定覆盖法设计测试用例

ID

输入项

预期输出

判定覆盖

语句覆盖

a

b

c

A/B/C或X不合规

xx%

xx%

PD-001

0

15

20

A

25%

100%

PD-002

10

0

20

B

25%

PD-003

10

15

0

C

25%

PD-004

10

15

20

D

25%

注:A: a 值不合理:B: b 值不合理;C:c 值不合理;D: a,b,c 取值合理。

3、main()函数条件覆盖设计测试用例,要求语句覆盖率 100%(白盒)

条件覆盖: 每个复合判定表达式中,每个简单判定条件的取真、取假情况至少执行一次1Sa≤100,包括两个邻域,所以a取[假,真,假》; 同理 b,c。

判定覆盖:程序中每个判定节点的取真和取假分支至少执行一次。同“条件覆盖”的道理,1≤a≤100 包括两个判定节点,所以一个节点包括两组判定覆盖,所以 a取(假,真,假).同理 b,c。

表 5.3 条件覆盖法设计的测试用例main()函数

ID

输入项

预期输出

判断条件

通过路径

条件覆盖

判定覆盖

a

b

c

A/B/C

T1

T2

T3

M1...

XX%

XX%

TJ-01

45

50

60

D

T

T

T

M_L4

100%:

TJ-01

TJ-02

TJ-03

TJ-04

TJ-05

TJ-06

TJ-07

TJ-08

TJ-09

100%:

TJ-01

TJ-02

TJ-03

TJ-04

TJ-05

TJ-06

TJ-07

TJ-08

TJ-09

TJ-02

0

50

60

A

F

T

T

M_L1

TJ-03

101

50

60

D

F

T

T

M_L1

TJ-04

50

45

60

D

T

T

T

M_L4

TJ-05

50

0

60

A

T

F

T

M_L2

TJ-06

50

101

60

D

T

F

T

M_L2

TJ-07

50

60

45

D

T

T

T

M_L4

TJ-08

50

60

0

D

T

T

F

M_L3

TJ-09

50

60

101

D

T

T

F

M_L3

TJ-10

5

50

60

D

T

T

T

M_L4

冗余

冗余

TJ-11

50

5

60

D

T

T

T

M_L4

冗余

冗余

TJ-12

50

60

0

D

T

T

T

M_L4

冗余

冗余

注:

① A:a值不合规;B:b 值不合规,C: c 值不合规;D: 执行 Test ();

② T1: 1<a<100; T2: 1<b<100; T3: 1<c<100;

思考:

① TJ-01 与 TJ-10 能否在“条件覆盖”和“判定覆盖”的前提下互换? 同理,讨论TJ-11 与TJ-04:

答: main0函数只关注三个边长的取值范围,在互换的条件下,程序运行的路径不会发生变化,所以等够等价互换(互为冗余)

4、Test()函数条件覆盖设计测试用例,要求语句覆盖率 100% (白盒)

条件覆盖: 每个复合判定表达式中,每个简单判定条件的取真、取假情况至少执行一次a+b>c;a+c>b;b+c>a.

判定覆盖:程序中每个判定节点的取真和取假分支至少执行一次

表 5.4 条件覆盖法设计的测试用例(Test()函数)

ID

输入项

预期输出

判断条件

通过路径

条件覆盖

判定覆盖

a

b

c

T1

T2

T3

M1...

XX%

XX%

TJ-01

10

25

40

D

N

Tx

Tx

T_L1

100%

100%

TJ-02

25

25

25

A

Y

Y

Tx

T_L2

TJ-03

25

25

30

B

Y

N

Y

T_L3

TJ-04

25

35

45

C

Y

N

Y

T_L4

TJ-05

TJ-06

25

30

25

B

Y

N

N

T_L3

TJ-07

30

25

25

B

Y

N

Y

T_L3

TJ-08

25

10

40

D

N

Tx

Tx

T_L1

TJ-09

25

40

10

D

N

Tx

Tx

T_L1

注:  1、运行 Test() 的前提是 a,b,c 取值都在范围内

2、预期输出:A:等边三角形:B:等腰三角形:C:一般三角形:D:不构成三角形

3、判断条件如下;

① 构成三角形: T1: atb>c 且 atcb 且 c+b>a;

② 等边三角形:T2: a=b=c;

③ 等腰三角形: T3: a=b 或 a=c 或 b=c;

④ 一般三角形: T4: a头b≠c;

⑤ Tx:任意取值或取不到的值

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小孙同学1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值