实验二+005+陈晓华

一、实验目的

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

二、实验要求

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

三、实验内容

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

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

  包括的内容有:

    1) 被测原代码:http://www.cnblogs.com/ChainYugi/p/6612975.html

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

      

                              

 

                     程序图                                                  DD-路径图

 

 

DD-路径:

程序图节点

DD-路径

19

A

20

B

23,24,26

C

27

D

29

E

30

F

33

G

36

H

55

I

      

(I)语句覆盖:

A-C-D-H-I 和 A-C-E-F-H-I A-C-E-G-H-I A-B-I

 

测试用例:

用例ID

输入值

执行路径

预期输出

headphone

shell

protector

string类型)

1

1

2

3

A-C-D-H-I

佣金金额:12.40\n

2

10

20

5

A-C-E-F-H-I

佣金金额:106.00\n

3

100

1

1

A-C-E-G-H-I

佣金金额:1463.60\n

4

-1

-1

-1

A-B-I

输入格式错误,请重试\n

 

(II)分支覆盖(判断覆盖):(与语句覆盖一样)

A-C-D-H-I 和 A-C-E-F-H-I A-C-E-G-H-I A-B-I

 

测试用例:

用例ID

输入值

执行路径

预期输出

headphone

shell

protector

string类型)

1

1

2

3

A-C-D-H-I

佣金金额:12.40\n

2

10

20

5

A-C-E-F-H-I

佣金金额:106.00\n

3

100

1

1

A-C-E-G-H-I

佣金金额:1463.60\n

4

-1

-1

-1

A-B-I

输入格式错误,请重试\n

 

(III)路径覆盖:(与语句覆盖一样)

A-C-D-H-I 和 A-C-E-F-H-I A-C-E-G-H-I A-B-I

 

测试用例:

用例ID

输入值

执行路径

预期输出

headphone

shell

protector

string类型)

1

1

2

3

A-C-D-H-I

佣金金额:12.40\n

2

10

20

5

A-C-E-F-H-I

佣金金额:106.00\n

3

100

1

1

A-C-E-G-H-I

佣金金额:1463.60\n

4

-1

-1

-1

A-B-I

输入格式错误,请重试\n

 

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

 

编号

headphone < 0 

shell < 0

protector < 0

headphone < 0 || shell < 0 || protector < 0

覆盖路径

1

F

F

F

F

A-C

2

F

T

F

T

A-B

3

T

F

F

T

A-B

4

T

T

T

T

A-B

 

 

编号

sum < 1000

5

T

6

F

 

编号

sum >= 1000 

 sum <= 1800

sum >= 1000 && sum <= 1800

覆盖路径

7

F

F

F

E-G

8

F

T

F

E-G

9

T

F

F

E-G

10

T

T

T

E-F

 

 

 

测试用例:

用例ID

输入值

执行路径

覆盖

条件

预期输出

headphone

shell

protector

string类型)

1

1

6

4

A-C-D-H-I

1,5,7

佣金金额:17.20\n

2

1

-5

4

A-B-I

2

输入格式错误,请重试\n

3

-1

120

1

A-B-I

3

输入格式错误,请重试\n

4

-2

-4

-4

A-B-I

4

输入格式错误,请重试\n

5

1

2

2

A-C-D-H-I

158

佣金金额:11.60\n

6

100

20

50

A-C-E-G-H-I

169

佣金金额:1580.00\n

7

10

50

60

A-C-E-F-H-I

1,6,10

佣金金额:217.00\n

 

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

      A.语句覆盖:

       

 1 public class CommissionTest {
 2 
 3     
 4     @Before
 5     public void setUp() throws Exception {
 6     }
 7 
 8     @After
 9     public void tearDown() throws Exception {
10     }
11 
12     @Test
13     public void TestStateCoverage1() {
14         assertEquals("佣金金额:12.40元\n",Commission.commission(1, 2, 3));
15     }
16     
17     @Test
18     public void TestStateCoverage2() {
19         assertEquals("佣金金额:106.00元\n",Commission.commission(10, 20, 5));
20     }
21     
22     @Test
23     public void TestStateCoverage3() {
24         assertEquals("佣金金额:1463.60元\n",Commission.commission(100, 1, 1));
25     }
26     
27     @Test
28     public void TestStateCoverage4() {
29         assertEquals("输入格式错误,请重试\n",Commission.commission(-1, -1, -1));
30     }
31 
32 }

      结果:

          

      B.条件覆盖:

 1 public class CommissionConditionTest {
 2 
 3     @Before
 4     public void setUp() throws Exception {
 5     }
 6 
 7     @After
 8     public void tearDown() throws Exception {
 9     }
10 
11     @Test
12     public void TestConditionCoverage1() {
13         assertEquals("佣金金额:17.20元\n",Commission.commission(1, 6, 4));
14     }
15     
16     @Test
17     public void TestConditionCoverage2() {
18         assertEquals("输入格式错误,请重试\n",Commission.commission(1, -5, 4));
19     }
20     
21     @Test
22     public void TestConditionCoverage3() {
23         assertEquals("输入格式错误,请重试\n",Commission.commission(-1, 120, 1));
24     }
25     
26     @Test
27     public void TestConditionCoverage4() {
28         assertEquals("输入格式错误,请重试\n",Commission.commission(-2, -4, -4));
29     }
30     
31     @Test
32     public void TestConditionCoverage5() {
33         assertEquals("佣金金额:11.60元\n",Commission.commission(1, 2, 2));
34     }
35     
36     @Test
37     public void TestConditionCoverage6() {
38         assertEquals("佣金金额:1580.00元\n",Commission.commission(100, 20, 50));
39     }
40     
41     @Test
42     public void TestConditionCoverage7() {
43         assertEquals("佣金金额:217.00元\n",Commission.commission(10, 50, 60));
44     }
45 
46 }

 

      结果:

        

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

      

 1 import org.junit.runner.RunWith;
 2 import org.junit.runners.Suite;
 3 
 4 @RunWith(Suite.class)
 5 @Suite.SuiteClasses({
 6     CommissionTest.class,
 7     CommissionConditionTest.class,
 8 })
 9 
10 public class AllCommissionTest {
11 
12 }

      结果:

        

 

4、测试小结:

  •      此次测试并未找到缺陷
  •      对源代码的修改建议:
      •   可以将判断不合法输入的工作放到方法(commission)外部,即在主函数内判断;commission方法仅仅用来计算佣金金额。
      •     commission的返回内容,我建议只有佣金金额(换行符可以放到外面来实现) 
  •      测试总结与心得体会 
      •   画路径图之前,最好先话程序的控制流图,这样更不容易出错;
      •      根据路径图设计测试用例,发现分析各种覆盖测试变得容易多了,不容易漏掉情况,没有之前写着那么晕,思路会更加清楚
      •      对Junit的使用比上次课更加熟悉了。之前在一个test方法里就写多个断言,出错之后,只能一个个检查,很麻烦;现在分方法进行测试,能够知道问题出在哪儿;但是对参数化测试还不是很熟练,课下要多练习练习。

转载于:https://www.cnblogs.com/ChenXh123/p/6709525.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值