计算器软件测试报告
江西工业职业技术学院毕业综合实践课题名称: 安卓手机计算器 作 者: 廖杰 学 号: 20112715 分 院: 电子与信息工程分院 专 业: 计算机网络技术 指导老师: 占华为 专业技术职务 讲师 2013年 11 月 14日一、问题描述: 用Java实现求两整数的加、减、乘、除运算结果,要求两整数的范围都是0,100。从键盘输入数m,数n,判断他们的范围,若不在0,100范围内,则输出提示语,要求重新输入,并且在做除法运算时,当除数为0时,输出提示语,说明除数不能为0。将两数的范围定在0,100,以更好的进行边界值分析,等价类测试等黑盒测试方法;为充分体现白盒测试的特点,有些地方故意用了if-else语句,while循环;另外,加、减、乘、除运算分别用了四个函数来计算,这样既可以在主函数中调用,又可以在Junit框架中分别对这四种运算进行测试。二、程序源代码:1. import java.util.Scanner;2. public class Computer 3. private int a;4. private int b;5. public Computer (int x,int y) /构造函数,初始化6. 7. a=x; /注意:Juint中需要输入测试值在0100范围内8. b=y;9. 10. public double add() /加法11. 12. return a+b;13. 14. public double minus() /减法15. 16. return a-b;17. 18. public double multiply() /乘法19. 20. return a*b;21. 22. public double divide() /除法,要求除数不能为0,否则输出提示语23. 24. if(b!=0)25. return a/b;26. else27. System.out.println("除数不能为0!");28. return 0;29. 30. public static void main(String args)31. 32. Scanner scanner = null;33. scanner = new Scanner(System.in);34. System.out.println("请输入0100的两个m,n整数:");35. System.out.println("请输入第一个数:");36. while(true) /若输入值不在要求范围内,则有循环直到输入正确为止37. int m = scanner.nextInt();38. if(m>=0&&m<=100)39. 40. System.out.println("请输入第二个数:");41. while(true)42. int n = scanner.nextInt();43. if(n>=0&&n<=100)44. 45. Computer cpt=new Computer(m,n);46. System.out.println("运算结果是:"); 47. System.out.println("加法:"+m+"+"+n+"="+cpt.add();48. System.out.println("减法:"+m+"-"+n+"="+cpt.minus();49. System.out.println("乘法:"+m+"*"+n+"="+cpt.multiply();50. System.out.println("除法:"+m+"/"+n+"="+cpt.divide();51.52.else 53.System.out.print("输入n值不在要求区间,请重新输入n:n");54. 55. 56.else 57.System.out.print("输入m值不在要求区间,请重新输入m:n");58.59. 60. 三、 黑盒测试: 1、边界值测试: 1.1、边界值分析:输入要求是0100之间的整数,因此产生了0和100两个边界,边界值分析可产生4*2+1=9个测试用例。可构造(50,0)、(50,1)、(50,50)、(50,99)、(50,100)、(0,50)、(1,50)、(99,50)、(100,50) 这9组测试用例。 表1 边界值分析测试用例 用例 m n 预期输出(+、-、*、/) 实际输出(+、-、*、/) 150050.0、50.0、0.0、除数不为0!50.0、50.0、0.0、0.0 2501 51.0、49.0、50.0、50.051.0、49.0、50.0、50.0 35050100.0、0.0、2500.0、1.0100.0、0.0、2500.0、1.0 45099149.0、-49.0、4950.0、0.505109.0、-9.0、2950.0、0.5050505050505051 5 50100150.0、-50.0、5000.0、0.5150.0、-50.0、5000.0、0.5 6050 50.0、-50.0、0.0、0.050.0、-50.0、0.0、0.0 7 15051.0、-49.0、50.0、0.0251.0、-49.0、50.0、0.02 8 9950149.0、49.0、4950.0、1.98149.0、49.0、4950.0、1.98 910050150.0、50.0、500.0、2.0150.0、50.0、500.0、2.0 在该测试时,发现(50,0)这个测试的除法的预期输出和实际输出不一致,是因为代码中return 0;当除数n=0时,实际返回的是0.0。 public double divide()if(b!=0)return a/b;elseSystem.out.println("除数不能为0!");return 0; /出现Bug 1.2健壮性测试:健壮性测试可产生6*2+1=13个测试用例,在上面边界值分析测试用例的基础上再添加(50,-1)、(50,101)、(-1,50)、(101,50)这4个测试用例即可。 表2 健壮性测试用例 用例 m n 预期输出(+、*、/) 实际输出 1050-149.0、51.0、-50.0、-50.0输入n值不在要求区间 1150101 151.0、-51.0、5050.0、0.495输入n值不在要求区间 12-15049.0、-51.0、-50.0、-0.02输入m值不在要求区间 1310150151.0、51.0、5050.0、2.02输入m值不在要求区间2、 等价类测试: 规定了输入值m,n的范围0,100,则 变量的有效等价类: M1=m:0m100 N1=n:0n100 变量的无效等价类: M2=m:m0 M3=m:m100 N2=n:n0 N3=n:n02.1、弱一般等价类测试: 该测试可用每个等价类的一个变量实现,可生成1个测试用例。 2.2、强一般等价类测试: 该测试基于多缺陷假设,需要1*1=1个测试用例。 表3 强、弱一般等价类测试用例 用例 m n 预期输出(+、*、/) 实际输出 WN1,SN15050100.0、0.0、2500.0、1.0100.0、0.0、2500.0、1.02.3、弱健壮等价类测试: 该测试基于单缺陷假设,不仅对有效值测试,还考虑了无效值,可生成1+2+2=5个测试用例。 表 4 弱健壮等价类测试用例 用例 m n 预期输出(+、*、/) 实际输出 WR15050100.0、0.0、2500.0、1.0100.0、0.0、2500.0、1.0 WR250-149.0、51.0、-50.0、-50.0输入n不在要求区间 WR350101151.0、-51.0、5050.0、0.495输入n不在要求区间 WR4-15049.0、-51.0、-50.0、-0.02输入m不在要求区间 WR510150151.0、51.0、5050.0、2.02输入m不在要求区间2.4、强健壮等价类测试: 该测试基于多缺陷假设,从所有等价类笛卡尔积的每个元素中获得测试用例,可生成(1+2)*(1+2)=9个测试用例。 表5 弱健壮等价类测试用例 用例 m n 预期输出(+、*、/) 实际输出 SR1-1-1-2.0、0.0、1.0、1.0输入m值不在要求区间 SR2-15049.0、-51.0、-50.0、-0.02输入m值不在要求区间 SR3-1101100.0、-102.0、-101.0、0099输入m值不在要求区间 SR4