首页 > 代码库 > 实验二+166+张珍珍

实验二+166+张珍珍

测试链接:http://www.cnblogs.com/zbxun/p/6628545.html

 

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

一、实验目的

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

二、实验要求

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

三、实验内容

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

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

包括的内容有:

1) 被测原代码

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

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

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

四、实验步骤

1) 被测原代码

 

1   Input(a,b,c)

2   String result;

3   if( a>=1 &&a<=100&&b>=1&&b<=100&&c>=1&&c<=100){

4     if(a<b+c &&b<a+c&& c<a+b){

5        if(a==b || a==c||b==c){

6          if(a==b &&b==c)

7            result = "等边三角形";

8         else

9                    result = "等腰三角形";

10      }else if(a*a+b*b==c*c || b*b+c*c==a*a || a*a+c*c==b*b){

11        result = "直角三角形";

12      }else{

13       result = "一般三角形";

14      }  

15    }else{

16      result = "不构成三角形";

17    }

18   }else{

19    result = "边的值不在范围内!";

20   }

21   OutPut(result)

 

2)依据覆盖技术的测试用例:

 

程序图  :

技术分享

              

DD-路径图:

技术分享

 

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

程序图节点

DD-路径

1,2

A

3

B

4

C

5

D

6

E

7

F

8,9

G

10

H

11

I

12,13,14

J

15,16,17

K

18,19,20

L

21

M

 

(I)语句覆盖:

A-B-C-D-E-F-M和A-B-C-D-E-G-M

和A-B-C-D-H-I-M和A-B-C-D-H-J-M

和A-B-C-K-M和A-B-L-M

测试用例:

用例ID

输入值

执行路径

预期输出

a

b

c

result

1

3

3

3

A-B-C-D-E-F-M

等边三角形

2

3

3

4

A-B-C-D-E-G-M

等腰三角形

3

3

4

5

A-B-C-D-H-I-M

直角三角形

4

3

4

6

A-B-C-D-H-J-M

一般三角形

5

1

1

3

A-B-C-K-M

不构成三角形

6

101

99

99

A-B-L-M

边的值不在范围内!

 

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

A-B-C-D-E-F-M和A-B-C-D-E-G-M

和A-B-C-D-H-I-M和A-B-C-D-H-J-M

和A-B-C-K-M和A-B-L-M

测试用例:

用例ID

输入值

执行路径

预期输出

a

b

c

result

1

3

3

3

A-B-C-D-E-F-M

等边三角形

2

3

3

4

A-B-C-D-E-G-M

等腰三角形

3

3

4

5

A-B-C-D-H-I-M

直角三角形

4

3

4

6

A-B-C-D-H-J-M

一般三角形

5

1

1

3

A-B-C-K-M

不构成三角形

6

101

99

99

A-B-L-M

边的值不在范围内!

 

(III)路径覆盖:

A-B-C-D-E-F-M和A-B-C-D-E-G-M

和A-B-C-D-H-I-M和A-B-C-D-H-J-M

和A-B-C-K-M和A-B-L-M

测试用例:

用例ID

输入值

执行路径

预期输出

a

b

c

result

1

3

3

3

A-B-C-D-E-F-M

等边三角形

2

3

3

4

A-B-C-D-E-G-M

等腰三角形

3

3

4

5

A-B-C-D-H-I-M

直角三角形

4

3

4

6

A-B-C-D-H-J-M

一般三角形

5

1

1

3

A-B-C-K-M

不构成三角形

6

101

99

99

A-B-L-M

边的值不在范围内!

 

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

 

编号

a>=1

a<=100

b>=1

b<=100

c>=1

c<=100

 

a>=1 &&a<=100&&b>=1&&b<=100&&c>=1&&c<=100

覆盖路径

1

T

F

F

F

F

F

F

B-C

2

T

T

F

F

F

F

F

B-L

3

T

T

T

F

F

F

F

B-L

4

T

T

T

T

F

F

F

B-L

5

T

T

T

T

T

F

F

B-L

6

T

T

T

T

T

T

F

B-L

7

T

T

T

T

T

T

T

B-C

总共2^6总选择

 

编号

a<b+c

b<a+c

c<a+b

a<b+c &&b<a+c&& c<a+b

覆盖路径

1

T

F

F

F

C-K

2

T

T

F

F

C-K

3

T

T

T

T

C-D

4

T

F

T

F

C-K

5

F

F

F

F

C-K

6

F

T

F

F

C-K

7

F

F

T

F

C-K

8

F

T

T

F

C-K

 

 

编号

a==b

a==c

b==c

a==b || a==c||b==c

覆盖路径

1

T

F

F

T

D-E

2

T

T

F

T

D-E

3

T

T

T

T

D-E

4

T

F

T

T

D-E

5

F

F

F

F

D-H

6

F

T

F

T

D-E

7

F

F

T

T

D-E

8

F

T

T

T

D-E

 

 

编号

a==b

b==c

a==b &&b==c

覆盖路径

1

F

F

F

E-G

2

F

T

F

E-G

3

T

F

F

E-G

4

T

T

T

E-F

 

编号

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

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

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

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

覆盖路径

1

T

F

F

T

H-I

2

T

T

F

T

H-I

3

T

T

T

T

H-I

4

T

F

T

T

H-I

5

F

F

F

F

H-J

6

F

T

F

T

H-I

7

F

F

T

T

H-I

8

F

T

T

T

H-I

 

测试用例:

用例ID

输入值

执行路径

预期输出

a

b

c

result

1

3

3

3

A-B-C-D-E-F-M

等边三角形

2

3

3

4

A-B-C-D-E-G-M

等腰三角形

3

3

4

5

A-B-C-D-H-I-M

直角三角形

4

3

4

6

A-B-C-D-H-J-M

一般三角形

5

1

1

3

A-B-C-K-M

不构成三角形

6

101

99

99

A-B-L-M

边的值不在范围内!

共2^17种

 

3)相应Junit测试脚本:

import static org.junit.Assert.*;

 

import org.junit.BeforeClass;

import org.junit.Test;

 

public class test1Test {

 

    @BeforeClass

    public static void setUpBeforeClass() throws Exception {

    }

 

    @Test

    public final void testTriangle() {

       //fail("Not yet implemented"); // TODO

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

       assertEquals("等腰三角形",test1.triangle(3,3,4));

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

       assertEquals("一般三角形",test1.triangle(3,4,6));

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

       assertEquals("边的值不在范围内!",test1.triangle(101,99,99)); 

      

    }

 

}

 

 技术分享

 

五 、测试小结:

1.测试找到的缺陷清单:无

2. 对源代码的修改建议

    (1)对源代码的修改情况:a==b &&b==c && a==c冗余,改成a==b &&b==c

    (2)添加控制程序退出,而不是用,while(true)无限循环

3.测试总结与心得体会

  (1)条件覆盖中会随着一个判断语句中条件的增多呈指数上升,很难手工全测试完。

     (2)各种覆盖方式容易重合,造成测试冗余。

  (3)测试人员很难说服开发人员修改他觉得没必要改,但其实很重要的修改。

实验二+166+张珍珍