江西工业职业技术学院
毕业综合实践
课题名称: 安卓手机计算器
作 者: 廖杰 学 号: 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中需要输入测试值在0~100范围内
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. else
27. 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("请输入0~100的两个m,n整数:");
35. System.out.println("请输入第一个数:");
36. while(true){ //若输入值不在要求范围内,则有循环直到输入正确为止
37. int m = Int();
38. if(m>=0&&m<=100)
39. {
40. System.out.println("请输入第二个数:");
41. while(true){
42. int n = Int();
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、边界值分析:
输入要求是0~100之间的整数,因此产生了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 | 预期输出(+、-、*、/) | 实际输出(+、-、*、/) |
1 | 50 | 0 | 50.0、50.0、0.0、除数不为0! | 硕鼠硕鼠 无食我黍 50.0、50.0、0.0、0.0 |
2 | 50 | 1 | 51.0、49.0、50.0、50.0 | 51.0、49.0、50.0、50.0 |
3 | 50 | 50 | 100.0、0.0、2500.0、1.0 | 100.0、0.0、2500.0、1.0 |
4 | 50 | 99 | 149.0、-49.0、4950.0、0.505 | 109.0、-9.0、2950.0、 0.5050505050505051 |
5 | 50 | 100 | 150.0、-50.0、5000.0、0.5 | 150.0、-50.0、5000.0、0.5 |
6 | 0 | 50 | 50.0、-50.0、0.0、0.0 | 50.0、-50.0、0.0、0.0 |
7 | 特别的近义词1 | 50 | 51.0、-49.0、50.0、0.02 | 51世界十大禁止游戏.0、-49.0、50.0、0.02 |
8 | 99 | 50 | 149.0、49.0、4950.0、1.98 | 149.0、49.0、4950.0、1.98 |
9 | 100 | 50 | 150.0、50.0、500.0、2.0 | 150.0、50.0、500.0、2.0 |
在该测试时,发现(50,0)这个测试的除法的预期输出和实际输出不一致,是因为代码中return 0;当除数n=0时,实际返回的是0.0。
public double divide()
{
if(b送老婆什么生日礼物好!=0)
return a/b;
else
System.out.println("除数不能为0!");
return 0; //出现Bug
}
1.2健壮性测试:
健壮性测试可产生6*2+1=13个测试用例,在上面边界值分析测试用例的基础上再添加(50,-1)、(50,101)、(-1,50)、(101,50)这4个测试用例即可。
表2 健壮性测试用例
用例 | m | n | 预期输出(+、—、*、/) | 实际输出 |
10 | 50 | -1 | 49.0、51.0、-50.0、-50.0 | 输入n值不在要求区间 |
11 | 50 | 101 | 151.0、-51.0、5050.0、0.495 | 输入n值不在要求区间 |
12 | -1 | 50 | 49.0、-51.0、-50月朗天门.0、-0.02 | 输入m值不在要求区间 |
13 | 101 | 50 | 151.0、51.0、5050.0、2.02 | 输入m值不在要求区间 |
2、等价类测试:
规定了输入值m,n的范围[0,100],则
变量的有效等价类:
M1={m:0≤m≤100}
N1={n:0≤n≤100}
变量的无效等价类:
新车选购 M2={m:m≤0}
M3={m:m≥100}
N2={n:n≤0}
N3={n:n≥0}
2.1、弱一般等价类测试:
该测试可用每个等价类的一个变量实现,可生成1个测试用例。
2.2、强一般等价类测试:
该测试基于多缺陷假设,需要1*1=1个测试用例。
表3 强、弱一般等价类测试用例
用例 | m | n | 预期输出(+、—、*、/) | 实际输出 |
WN1,SN1 | 50 | 50 | 100.0、0.0、2500.0、1.0 | 100.0、0.0、2500.0、1.0 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论