第3次作业+105032014161
1.测试对象:http://www.cnblogs.com/ELPSY/p/6622579.html
2.修正流程图:
3.测试用例设计:
语句覆盖:
用例编号 |
输入 |
期待结果 |
实际结果 |
结论 |
001 |
-1 2 3 |
输入格式错误 |
输入格式错误 |
通过 |
002 |
101 60 80 |
边的值不在范围内 |
边的值不在范围内 |
通过 |
003 |
1 2 3 |
不构成三角形 |
不构成三角形 |
通过 |
004 |
100 100 100 |
等边三角形 |
等边三角形 |
通过 |
005 |
100 1 100 |
等腰三角形 |
等腰三角形 |
通过 |
006 |
30 40 50 |
直角三角形 |
直角三角形 |
通过 |
007 |
100 99 2 |
一般三角形 |
一般三角形 |
通过 |
判定覆盖:
用例编号 |
输入 |
期待结果 |
实际结果 |
结论 |
001 |
-1 2 3 |
输入格式错误 |
输入格式错误 |
通过 |
002 |
101 60 80 |
边的值不在范围内 |
边的值不在范围内 |
通过 |
003 |
1 2 3 |
不构成三角形 |
不构成三角形 |
通过 |
004 |
100 100 100 |
等边三角形 |
等边三角形 |
通过 |
005 |
100 1 100 |
等腰三角形 |
等腰三角形 |
通过 |
006 |
30 40 50 |
直角三角形 |
直角三角形 |
通过 |
007 |
100 99 2 |
一般三角形 |
一般三角形 |
通过 |
条件覆盖:
用例编号 |
输入 |
期待结果 |
实际结果 |
结论 |
001 |
1 1 2 |
不构成三角形 |
不构成三角形 |
通过 |
002 |
101 101 101 |
边的值不在范围内 |
边的值不在范围内 |
通过 |
003 |
2 2 3 |
等腰三角形 |
等腰三角形 |
通过 |
004 |
3 3 3 |
等边三角形 |
等边三角形 |
通过 |
005 |
3 4 5 |
直角三角形 |
直角三角形 |
通过 |
006 |
5 6 7 |
一般三角形 |
一般三角形 |
通过 |
条件判定组合覆盖:
用例编号 |
输入 |
期待结果 |
实际结果 |
结论 |
001 |
3 4 5 |
直角三角形 |
直角三角形 |
通过 |
002 |
6 6 6 |
等边三角形 |
等边三角形 |
通过 |
003 |
7 8 9 |
一般三角形 |
一般三角形 |
通过 |
004 |
1 1 3 |
不构成三角形 |
不构成三角形 |
通过 |
005 |
101 101 101 |
边的值不在范围内 |
边的值不在范围内 |
通过 |
4.单元测试框架:
1 import static org.junit.Assert.*; 2 import org.junit.Before; 3 import org.junit.Test; 4 5 public class JudgeTriangleTest { 6 7 @Before 8 public void setUp() throws Exception { 9 10 } 11 12 @Test 13 public void testJudge() { 14 String[] str1={"2","3","4"}; 15 String[] str2={"1","2","3","4"}; 16 String[] str3={"1","2","%"}; 17 assertTrue("true",JudgeTriangle.Judge(str1)); 18 assertFalse("false",JudgeTriangle.Judge(str2)); 19 assertFalse("false",JudgeTriangle.Judge(str3)); 20 //fail("Not yet implemented"); 21 } 22 23 @Test 24 public void testTriangle() { 25 assertEquals(JudgeTriangle.triangle(1, 1, 1),"等边三角形"); 26 assertEquals(JudgeTriangle.triangle(100, 100, 100),"等边三角形"); 27 assertEquals(JudgeTriangle.triangle(101, 101,101),"边的值不在范围内"); 28 assertEquals(JudgeTriangle.triangle(0, 0,0),"边的值不在范围内"); 29 30 assertEquals(JudgeTriangle.triangle(3, 3, 5),"等腰三角形"); 31 assertEquals(JudgeTriangle.triangle(1, 1, 2),"不构成三角形"); 32 assertEquals(JudgeTriangle.triangle(100, 100, 99),"等腰三角形"); 33 assertEquals(JudgeTriangle.triangle(0,0,1),"边的值不在范围内"); 34 35 assertEquals(JudgeTriangle.triangle(3, 4, 5),"直角三角形"); 36 assertEquals(JudgeTriangle.triangle(2, 4, 5),"一般三角形"); 37 assertEquals(JudgeTriangle.triangle(70, 11, 20),"不构成三角形"); 38 assertEquals(JudgeTriangle.triangle(100, 101,99),"边的值不在范围内"); 39 //fail("Not yet implemented"); 40 } 41 }
5.测试结果:测试通过。
6.测试小结:
- 通过本次测试,我了解到了很多关于覆盖测试方面的知识,这方面的知识对我来说很容易弄混,主要还是要靠自己去理解。在做语句覆盖的时候,我一直认为语句覆盖要一次测试中将所有的语句覆盖,一直以为它没有语句覆盖。后来仔细研究案例理解了可以进行多次测试使被测试的程序的每一条可执行语句至少执行一次。 在做测试的过程中发现有很多覆盖会重复,当判断条件很多时,各种覆盖就很容易混淆。
- 采用单元测试框架感觉比main()方法更加简单快速,根据每个不同大的方法编写各自的测试方法,再用Junit运行。而且每个方法之间是独立的,更加灵活,再者测试方法一般不会直接写在原类中,而是单独的测试类,这样测试代码就完全与逻辑代码分开了。
- 测试是为了发现错误,而调试是为了找出错误的原因和错误发生的地方不是软件测试的任务。我觉得测试是不断地对程序进行挑错,但是调试是对程序进行排错,测试只需要找出错误,至于调试就是根据测试到的错误去对程序进行修改,不断地检查出错误的原因和位置然后进行修正。