计算器软件测试数据,计算器软件测试报告.doc

《计算器软件测试报告.doc》由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关《计算器软件测试报告.doc》文档请在天天文库搜索。

1、江西工业职业技术学院毕业综合实践课题名称: 安卓手机计算器 作 者: 廖杰 学 号: 20112715 分 院: 电子与信息工程分院 专 业: 计算机网络技术 指导老师: 占华为 专业技术职务 讲师 2013年 11 月 14日一、问题描述: 用Java实现求两整数的加、减、乘、除运算结果,要求两整数的范围都是[0,100]。从键盘输入数m,数n,判断他们的范围,若不在[0,100]范围内,则输出提示语,要求重新输入,并且在做除法运算时,当除数为0时,输出提示语,说明除数不能为0。将两数的范围定在[0,100],以更好的进行边界值分析,等价类测试等黑盒测试方法;为充分体现白盒测试的特点,有些地方故意用了if-else语句,while循环;另外,加、减、乘、除运算分别用了四个函数来计算,这样既可以在主函数中调用,又可以在Junit框架中分别对这四种运算进行测试。二、程序源代码:1. imp。

2、ort 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. i。

3、f(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("请输入0~100的两个m,n整数:");35. System.out.println("请输入第一个数:");36. while(true){ //若输入值不在要求范围内,则有循环直到输入正确为止37. int m = scanner.nextInt();38. if(m>=0&&m=0&&n=0&&m=0&&n<=100 F T c执行语句块3 出口。

4、1.1、语句覆盖: 每个可执行的语句必须至少执行一次,则测试用例: 表 7 语句覆盖测试用例 测试用例 通过路径 条件取值m1=-1,m2=1;n1=101,n2=99 a,f,b,d,c F1,T1,F2,T21.2、(判定)分支覆盖: 每个判定必须至少获得一次“真”值和“假”值,则测试用例: 表 8(判定)分支覆盖 测试用例 通过路径 条件取值m=1,n=99a,b,cT;Tm1=-1,m2=1,n=99a,f,b,cF1,T1;T2m=1,n1=-1,n2=99a,b,d,cT;F1,T1m1=-1,m2=1;n1=101,n2=99a,f,b,d,cF1,T1;F2,T21.3、条件判定覆盖: 每个判定中的每个条件的所有可能值(真/假)至少出现一次并且每个判定本身的结果(真/假)也至少出现一次,则测试用例: 表 9 条件判定覆盖测试用例通过路径条件取值m=1,n=99a,b,cT,。

5、T1.4、路径覆盖: 测试用例要求覆盖所有可能的路径: 表10 路径覆盖 测试用例 通过路径 条件取值m1=-1,m2=1;n1=101,n2=99 a,f,b,d,c F1,T1,F2,T2 2.基路径测试:(为简便画图,开始点从主要代码第36行开始,其他无分支节点用省略号表示)1 (从节点1到节点36) ...3637563839405741425243(从节点43到51) ... 53515455585960所以:圈复杂度V(G)= 5 4个独立路径为:P1:1,...,36,37,38...42,43...54,55,58,59,60P2:1,...,36,37,56,57,58,59,60P3:1,...,36,37,38...42,52,53,54,55,58,59,60P4:1,...,36,37,38...42,43...54,42,52,53,54,55,58,59,60。

6、P5:1,...,36,37,56,57,58,36,37,56,57,58,59,60三、 Junit动态测试:import junit.framework.TestCase; //引入Junit框架中所有类public class ComputerTest extends TestCase { private Computer a; //定义变量 private Computer b; private Computer c; private Computer d; public ComputerTest (String name) { super(name); //构造函数,使用super关键字直接引用父类TestCase的构造函数 } protected void setUp() throws Exception { super.setUp(); //建立环境,可以进行一些测试数据的。

7、初始化,还可以把数据库联接写在此处,以减少重复性工作,提高效率 a = new Computer(1,99); b = new Computer(101,5); c = new Computer(1,2); d = new Computer(1,0); } protected void tearDown() throws Exception { super.tearDown(); } public void testComputer() { int x=1; int y=1; assertSame(x,y); //assertSame() } public void testAdd() { //加法测试 assertEquals(100.0, a.add()); } public void testAdd1() { assertEquals(106.0, b.add()); //输入值超出。

8、要求范围 ,测试失败,因为要求0~100范围,所以,在构造Computer()函数时,要规定变量x,y的范围 } public void testMinus() { //减法测试 assertEquals(-89,a.minus()); //预期值和结果不相等,测试失败 } public void testMinus1() { assertEquals(-89.0,a.minus()); } public void testMultiply() { assertEquals(2.0,c.multiply()); } public void testMultiply1() { Object tx = null; try{ assertEquals(2.0,c.multiply()); //c.multiply()的正常结果是2.0,所以在此不应抛出异常 fail("should have t。

9、hrown an exception"); //上面不抛出异常,不执行fail() }catch (Exception e) { tx = e; } assertNotNull(tx); //断言tx不为空,则一定有异常 } public void testDivide() { assertEquals(0.0,d.divide()); //因divide()函数中,当d=0时,返回0.0,所以这里测试应该成功,虽然希望得到“被除数不能为0!”的情况 } public void testDivide1() { assertEquals(0.5, c.divide()); } public void testEmpty(){ try{ c.divide(); fail("should have thrown an exception "); }catch(RuntimeException E。

10、x){ assertTrue(true); //assertTrue(true); } }}截图:(1) 、测试testAdd1()时,由于b=newComputer(101,5);assertEquals(106.0, b.add());输入值范围超出定义范围,测试异常;(2)、测试testMinus()时,assertEquals(-89,a.minus());预期值和实际值不相同,测试异常;(3)、测试testMultiply()时,断言不为空,抛出异常Junit集成测试:在Junit中,Test Case总是对所有方法进行测试,而Test Suite中可对其中的一部分方法测试,而且一个测试类中还可以包含其他测试类。在Test Case类中声明一个public static Test suite()方法即可完成多个测试类的集成。例如,在上例ComputerTest类中,添加: pub。

11、lic static Test Suit() { TestSuite suite=new TestSuite(); suite.addTest(new ComputerTest("testAdd")); suite.addTest(new ComputerTest("testMultiply1")); return suite;}若在另一个ComputerTest1类中,要测试ComputerTest中的所有测试方法,则应:public class ComputerTest1 extends TestCase { public ComputerTest1(String name) { Super(name); } public static Test Suit() { TestSuite suite=new TestSuite(); suite.addTestSuite(ComputerT。

12、est.class); return suite;}}四、测试用例设计体会:在这次软件测试过程中,我扮演了用户、程序员、测试员三钟角色,为了充分体现黑盒、白盒以及Junit动态测试的特点,我特意设计了一个[0,100]之间的整数简单加减乘除运算。对于黑盒测试,在设计测试用例时完全没有考虑程序内部的逻辑结构和内部特性,只纯粹的依据功能和要求来设计测试用例进行测试。测试时使用了多种测试方法,包括边界值测试(边界值分析、健壮性测试、特殊值测试),等价类测试(弱一般、强一般、弱健壮、强健壮等价类测试),基于决策表的测试等。虽然黑盒测试很容易生成测试用例,但实际上只有一小部分可能的输入被测试到,某些代码得不到测试,不能直接对隐蔽了许多问题的特定程序段进行测试,不易进行充分性测试。比如:在上例中,若输入的数据是2,0,则输出的是0.0 ,很明显这个结果是不正确的。对于白盒测试,在设计测试用例时首先对程。

13、序进行分析,从程序的内部结构出发设计测试用例,涉及到程序的控制方法、源语句、编码细节、数据库设计等。设计测试用例时应用了白盒测试中的多种测试方法,其中包括:测试覆盖(语句覆盖、分支覆盖、分支条件覆盖等)、基路径测试等方法。白盒测试中,对代码的测试比较透彻,但不容易生成测试用例,而且测试工作量很大,。因为白盒测试是基于代码的基础上,所以对变量的定义、数据的分析、精度的度量都有严格的要求。如:上例中要求输入的值是[0,100]之间的int型,而输出的结果却要求的是double型。对于Junit,编写了另一段代码来测试要执行的代码,代码中的一个测试类(TestCase)包含了很多测试方法(testXXXX),每个测试方法中又有很多测试断言(assertXXXX),在方法中测试预期值是否和实际值一致。总之,在这次测试设计让我对软件测试有了一个深入了解,对于测试方法、测试过程,都有了较好的认识,学会了如何进行黑盒测试、白盒测试、以及一些测试工具(如Junit)。当然,对于以后企业上的软件测试,还有待很大的提高。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值