实验二+117+陈俊超

  实验二结构性测试(4学时)

一、实验目的

掌握基于覆盖理论与基本路径的基本白盒测试方法和实践

二、实验要求

运用逻辑覆盖测试的覆盖准则设计被测程序的测试用例,并运行测试用例检查程序的正确与否,给出程序缺陷小结。

三、实验内容

根据各位同学自己的被测程序,分别作出各类白盒测试技术的用例设计和相应的Junit脚本。

所有的覆盖的技术:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖,基本路径测试方法。

包括的内容有:

1) 被测原代码

2)依据覆盖技术,测试用例列表:

3)相应Junit测试脚本、执行结果

4)给出测试参数化和打包测试的脚本,并生成执行结果

四、实验步骤

1) 被测原代码

package exe1;

import java.util.Arrays;

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {

        int[] num;

        num = new int[3];

        Scanner input = new Scanner(System.in);

        System.out.print("请输入三角形的三条边:\n");

        try{

            System.out.print("第一条边:");

            num[0] = input.nextInt();

            System.out.print("第二条边:");

            num[1] = input.nextInt();

            System.out.print("第三条边:");

            num[2] = input.nextInt();

        }catch(Exception ex){

            System.out.println("输入数值类型错误!");

        }

        1.if(num[0]>100||num[0]<1||num[1]>100||num[1]<1||num[2]>100||num[2]<1){

2.            System.out.print("边的值不在范围内!");

3.            return;

        }     

4.       Arrays.sort(num);

5.        System.out.println(triangle(num[0],num[1],num[2]));

    }

6.   static String triangle(int a,int b,int c){

7.        String str=null;

8.       if(a+b>c) {

9.           if((a == b)||(b == c)&&(a!=c))

            {

 10.               str = "等腰三角形";

            }

 11.          else if(a == b&& b== c)

            {

 12.              str = "等边三角形";

 13.           }else if(a*a+b*b==c*c){

 14.               str = "直角三角形";

                

 15.          }else

 16.               str="一般三角形";    

        }

 17.       else {

 18.              str = "不构成三角形";

            }

 19.      return str;

    }

}

 

 

DD-路径(只压缩链路经)

程序图节点

DD-路径

1

A

2

B

3

C

4

D

5

E

6

F

7

G

8

H

9

I

17,18

J

10

K

11

L

12

M

13

N

14

O

15,16

P

19

Q

 

2)依据覆盖技术,测试用例列表:

I)语句覆盖:

1.A-B-C  2.A-D-E-F-G-H-J-Q  3.A-D-E-F-G-H-I-K-Q  4.A-D-E-F-G-H-I-L-M-Q

5.A-D-E-F-G-H-I-L-N-O-Q  6.A-D-E-F-G-H-I-L-N-P-Q

测试用例:

用例ID

输入值

执行路径

预期输出

A

B

C

STR

1

0

0

0

A-B-C

边的值不在范围内!

2

1

2

3

A-D-E-F-G-H-J-Q

不构成三角形

3

1

2

2

A-D-E-F-G-H-I-K-Q

等腰三角形

4

3

3

3

A-D-E-F-G-H-I-L-M-Q

等边三角形

5

3

4

5

A-D-E-F-G-H-I-L-N-O-Q

直角三角形

6

4

5

6

A-D-E-F-G-H-I-L-N-P-Q

一般三角形

 

II)分支覆盖(判断覆盖):

1.A-B-C(1.左) 2.A-D-E-F-G-H-J-Q1.右,2右)  

3.A-D-E-F-G-H-I-K-Q1.右,2左,3右)  

4.A-D-E-F-G-H-I-L-M-Q1.右,2左,3左,4右)

5.A-D-E-F-G-H-I-L-N-O-Q1.右,2左,3左,4左,5右)

6.A-D-E-F-G-H-I-L-N-P-Q1.右,2左,3左,4左,5左)

测试用例:

用例ID

输入值

执行路径

预期输出

A

B

C

STR

1

0

0

0

A-B-C

边的值不在范围内!

2

1

2

3

A-D-E-F-G-H-J-Q

不构成三角形

3

1

2

2

A-D-E-F-G-H-I-K-Q

等腰三角形

4

3

3

3

A-D-E-F-G-H-I-L-M-Q

等边三角形

5

3

4

5

A-D-E-F-G-H-I-L-N-O-Q

直角三角形

6

4

5

6

A-D-E-F-G-H-I-L-N-P-Q

一般三角形

 

III)路径覆盖:

    1.A-B-C(1.左) 2.A-D-E-F-G-H-J-Q1.右,2右)  

3.A-D-E-F-G-H-I-K-Q1.右,2左,3右)  

4.A-D-E-F-G-H-I-L-M-Q1.右,2左,3左,4右)

5.A-D-E-F-G-H-I-L-N-O-Q1.右,2左,3左,4左,5右)

6.A-D-E-F-G-H-I-L-N-P-Q1.右,2左,3左,4左,5左)

测试用例:

用例ID

输入值

执行路径

预期输出

A

B

C

STR

1

0

0

0

A-B-C

边的值不在范围内!

2

1

2

3

A-D-E-F-G-H-J-Q

不构成三角形

3

1

2

2

A-D-E-F-G-H-I-K-Q

等腰三角形

4

3

3

3

A-D-E-F-G-H-I-L-M-Q

等边三角形

5

3

4

5

A-D-E-F-G-H-I-L-N-O-Q

直角三角形

6

4

5

6

A-D-E-F-G-H-I-L-N-P-Q

一般三角形

 

IV)条件覆盖:各个条件取真或假的可能至少执行一次

 

编号

num[0]>100

 

 

num[0]<1

 

num[1]>100

 

 

num[1]<1

 

num[2]>100

 

 

num[2]<1

num[0]>100||num[0]<1||num[1]>100||num[1]<1||num[2]>100||num[2]<1

覆盖路径

1

T

F

F

F

F

F

T

A-B-C

2

T

T

F

F

F

F

T

A-B-C

3

T

T

T

F

F

F

T

A-B-C

4

T

T

T

T

F

F

T

A-B-C

5

F

F

F

F

F

F

F

A-D

总共2^6总选择

 

编号

A+B>C

覆盖路径

6

T

H-J

7

F

H-I-K

 

编号

a == b

b == c

a!=c

(a == b)||(b == c)&&(a!=c)

覆盖路径

8

T

T

T

T

I-K

9

T

T

F

F

I-L

10

T

F

T

T

I-K

11

T

F

F

F

I-L

12

F

T

T

T

I-K

13

F

T

F

F

I-L

14

F

F

T

F

I-L

15

F

F

F

F

I-L

 

编号

a == b

b == c

a == b&& b== c

覆盖路径

16

T

T

T

L-M

17

T

F

F

L-N

18

F

T

F

L-N

19

F

F

F

L-N

 

编号

a*a

b*b

c*c

  a*a+b*b==c*c

覆盖路径

20

T

T

T

T

N-O

21

T

T

F

F

N-P

22

T

F

T

F

N-P

23

T

F

F

F

N-P

24

F

T

T

F

N-P

25

F

T

F

F

N-P

26

F

F

T

F

N-P

27

F

F

F

F

N-P

 

测试用例:

用例ID

输入值

执行路径

覆盖条件

预期输出

A

B

C

X

1

1

1

101

A-B-C

1

边的值不在范围内!

2

3

1

4

A-D-E-F-G-H-J-Q

1,8

不构成三角形

3

2

2

1

A-D-E-F-G-H-I-K-Q

8,9

等腰三角形

4

3

3

3

A-D-E-F-G-H-I-L-M-Q

9,11

等边三角形

5

3

4

5

A-D-E-F-G-H-I-L-N-O-Q

11,13

直角三角形

6

4

2

3

A-D-E-F-G-H-I-L-N-P-Q

13,15

一般三角形

.....

.....

.....

.....

......

......

.....

 

3)相应Junit测试脚本、执行结果

package Test1;

 

import static org.junit.Assert.*;

import org.junit.Before;

import org.junit.Test;

 

public class TestTest {

 

@Before

public void setUp() throws Exception {

}

@Test

public void testTriangle() {

    assertEquals("等腰三角形", Test1.Test.triangle(2,2,1));

        assertEquals("等边三角形", Test1.Test.triangle(3,3,3 ));

        assertEquals("直角三角形", Test1.Test.triangle(3,4,5));

        assertEquals("一般三角形", Test1.Test.triangle(4,2,3));

        assertEquals("不构成三角形", Test1.Test.triangle(3,1,4));

}

}

 

4) 测试小结:

1.测试找到的缺陷清单:判断等腰三角形有缺陷

2. 对源代码的修改建议

   由于前面有对数据排序,所以(a == b)||(b == c)&&(a!=c)改成a == b&&a=c即可

3.测试心得:

   绘制程序流程,方便接下来对程序做路径或条件覆盖等测试,流程图应正确清晰给出.流程要是都给错了,那么可能导致接下来做的东西都是错误的, 所以在这一步时应认真对待,最好可以与编写该程序的开发人员进行沟通,让他确认给出的流程是否正确.并对其功能的完整性进行检查.

     依照流程图,选择合适的测试方法,并进行测试:白盒测试方法有很多种类,语句覆盖->判定覆盖->条件覆盖测试->判定/条件覆盖->条件组合覆盖->路径覆盖测试等,其检错能力左到右是由弱到强的,但是不能盲目选择检错性较强的测试方法,因根据程序需要而定,有些程序路径千千万万,可以适当选择条件覆盖测试方法.

转载于:https://www.cnblogs.com/cjccjc/p/6706269.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值