第三次作业+105032014101

被测代码链接:http://www.cnblogs.com/ypzeng/p/6626269.html

1、修正流程图

 

 

2、测试用例设计

覆盖方式

用例编号

输入

期望输出

实际输出

是否通过

时间

a

b

c

语句覆盖

001

3

4

5

直角三角形

直角三角形

是

2017.03.29

语句覆盖

002

12

19

20

一般三角形

一般三角形

是

2017.03.29

判定覆盖

003

101

66

78

边值不存在

边值不存在

是

2017.03.29

判定覆盖

004

60

11

12

不构成三角形

一般三角形

否

2017.03.29

判定覆盖

005

66

66

66

等边三角形

等边三角形

是

2017.03.29

判定覆盖

006

66

77

77

等腰三角形

等腰三角形

是

2017.03.29

判定覆盖

007

13

14

15

一般三角形

一般三角形

是

2017.03.29

判定覆盖

008

5

8

13

直角三角形

直角三角形

是

2017.03.29

条件覆盖

009

10

15

50

不构成三角形

一般三角形

否

2017.03.29

条件覆盖

010

10

10

10

等边三角形

等边三角形

是

2017.03.29

条件覆盖

011

13

14

15

一般三角形

一般三角形

是

2017.03.29

条件覆盖

012

101

101

101

边值不存在

边值不存在

是

2017.03.29

判定/条件覆盖

013

0

101

101

边值不存在

边值不存在

是

2017.03.29

判定/条件覆盖

014

20

15

60

不构成三角形

一般三角形

否

2017.03.29

判定/条件覆盖

015

33

33

33

等边三角形

等边三角形

是

2017.03.29

判定/条件覆盖

016

3

3

5

等腰三角形

等腰三角形

是

2017.03.29

判定/条件覆盖

017

9

8

7

一般三角形

一般三角形

是

2017.03.29

判定/条件覆盖

018

6

8

10

直角三角形

直角三角形

是

2017.03.29

组合覆盖

019

5

5

5

等边三角形

等边三角形

是

2017.03.29

组合覆盖

020

9

12

15

直角三角形

直角三角形

是

2017.03.29

组合覆盖

021

101

102

89

边值不存在

边值不存在

是

2017.03.29

组合覆盖

022

23

23

32

等腰三角形

等腰三角形

是

2017.03.29

路径覆盖

023

20

20

20

等边三角形

等边三角形

是

2017.03.29

路径覆盖

024

12

25

16

一般三角形

一般三角形

是

2017.03.29

路径覆盖

025

13

12

13

等腰三角形

等腰三角形

是

2017.03.29

路径覆盖

026

10

20

40

不构成三角形

一般三角形

否

2017.03.29

路径覆盖

027

23

0

56

边值不存在

边值不存在

是

2017.03.29

路径覆盖

028

7

24

25

直角三角形

直角三角形

是

2017.03.29

3、单元测试框架

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

public class GetDataTest {

    @Before
    public void setUp() throws Exception {
    }

    public String change(char c) {
        switch (c) {
        case '1':
            return "等边三角形";

        case '2':
            return "等腰三角形";

        case '3':
            return "直角三角形";

        case '4':
            return "一般三角形";

        case '5':
            return "不构成三角形";

        default:
            break;

        }
        return null;
    }

    @Test
    public void testTriangle() {
        String s1 = change(GetData.triangle(3, 4, 5));
        assertEquals("直角三角形", s1);
        String s2 = change(GetData.triangle(12, 19, 20));
        assertEquals("一般三角形", s2);
        String s3 = change(GetData.triangle(60, 11, 12));
        assertEquals("不构成三角形", s3);
        String s4 = change(GetData.triangle(66, 66, 66));
        assertEquals("等边三角形", s4);
        String s5 = change(GetData.triangle(66, 77, 77));
        assertEquals("等腰三角形", s5);
    }

}

 

4、测试结果

  由图可见,在第45行出现了错误。即输入一组“不构成三角形”的数据得到的结果是“一般三角形”。

5、测试小结

  (1)根据六种覆盖方法编写的测试用例可以检测代码中的每条分支和路径,揭示隐藏在代码中的错误,对代码的测试会比较彻底,但无法检测代码中遗漏的路径和数据敏感性错误。

  (2)使用单元测试框架,测试框架为我们做的最基本的事情,就是允许我们按照某种更简单的方式写测试代码,把每一个测试单元写在一个测试方法里面,然后它会自动找出所有的测试方法,并且根据你的需要,运行所有的测试方法,或者是运行单个测试方法,或者是运行部分测试方法等等。而用main()方法调用,如果有很多类和方法,就可能要写一堆代码,写起来累,运行起来也累。

  (3)测试的目的是发现错误,至于找出错误的原因和错误发生的地方不是测试的任务,而是调试的任务。调试的目的是为了证明程序的正确,因此它必须不断地排除错误。它们的出发点不一样。前者是挑错,是一种挑剔过程,属于质盘保证活动。后者是排错,是一种排除过程,是编码活动的一部分。

posted @ 2017-03-29 23:34  xwhisper  阅读(209)  评论(0)    收藏  举报