1.被测源码:
package 软件测试实验1;import java.util.Arrays;import java.util.Scanner;public class test01 { public static void main(String[] args){ int[] length=new int[3]; String result=null; boolean flag=true; Scanner sc = new Scanner(System.in); while(flag){ System.out.print("***********************\n"); System.out.print("请输入三角形的三条边\n"); System.out.print("第一条边:"); length[0]=sc.nextInt(); System.out.print("第二条边:"); length[1]=sc.nextInt(); System.out.print("第三条边:"); length[2]=sc.nextInt(); Arrays.sort(length);//对三条边进行排序 if(length[0]<1||length[2]>100){ System.out.print("Attention!边的值不在范围内!!"); } else { result=triangle(length[0],length[1],length[2]); System.out.print(length[0]+","+length[1]+","+length[2]+"可构成"+result); System.out.print("\n***********************\n"); } System.out.print("是否要继续输入数据?1:Yes 2:No"); String temp=sc.next(); switch(temp) { case"1": flag=true; break; case"2": flag=false; System.out.print("您已退出程序"); break; } } } public static String triangle(int a,int b,int c){ String sort=null; /* * //修改处:因为对三条边进行排序,所以判断语句会比较简单。 */ if((a+b>c)&&((c-b)
2.依据覆盖技术,测试用例列表:
3.相应Junit测试脚本、执行结果
测试脚本:
package exam1;import static org.junit.Assert.*;import org.junit.Before;import org.junit.Test;public class AutoTest { @Before public void setUp() throws Exception { } @Test public void testTriangleStatementCoverage1() { assertEquals("不能构成三角形",test01.triangle(1, 2, 3)); } @Test public void testTriangleDecisionCoverage2() { assertEquals("边的值不在范围内",test01.triangle(1, 2, 3)); } @Test public void testTriangleDecisionCoverage3() { assertEquals("不能构成三角形",test01.triangle(1, 2, 3)); } @Test public void testTriangleDecisionCoverage4() { assertEquals("等腰三角形",test01.triangle(3,3, 4)); } @Test public void testTriangleDecisionCoverage5() { assertEquals("等边三角形",test01.triangle(3, 3, 3)); } @Test public void testTriangleDecisionCoverage6() { assertEquals("一般三角形",test01.triangle(4, 5, 6)); } @Test public void testTriangleConditionDecisionCoverage7() { assertEquals("一般三角形",test01.triangle(48, 61, 79)); } @Test public void testTriangleConditionDecisionCoverage8() { assertEquals("直角三角形",test01.triangle(12, 9, 15)); } @Test public void testTriangleConditionCoverage9() { assertEquals("不能构成三角形",test01.triangle(5, 11, 77)); } @Test public void testTriangleConditionCoverage10() { assertEquals("等腰三角形",test01.triangle(66, 33, 66)); } @Test public void testTriangleConditionCoverage11() { assertEquals("等边三角形",test01.triangle(77, 77, 77)); } @Test public void testTriangleConditionCoverage12() { assertEquals("一般三角形",test01.triangle(66, 77, 88)); }}
4.测试结果:
测试小结:
被测代码在边界值,等腰和等边的判断存在问题
修改建议:将边界值判断放到triangle函数中,同时调整等腰和等边的判断顺序
通过这次实验对白盒测试的各种覆盖有了进一步的了解,同时学会的junit的使用方式。对代码规范有了更进一步的了解