Introductiontosoftwaretesting计算器课程设计报告.docx

上传人:叶*** 文档编号:89001001 上传时间:2023-05-05 格式:DOCX 页数:19 大小:43.88KB
返回 下载 相关 举报
Introductiontosoftwaretesting计算器课程设计报告.docx_第1页
第1页 / 共19页
Introductiontosoftwaretesting计算器课程设计报告.docx_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《Introductiontosoftwaretesting计算器课程设计报告.docx》由会员分享,可在线阅读,更多相关《Introductiontosoftwaretesting计算器课程设计报告.docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、软件测试课程设计报告题目:计算器程序测试专业:软件工程嵌入式班级:姓名:谢宇轩 学号:1441904205姓名:刘乐 学号:1441904220指导教师:陈向坚分工:谢宇轩-白盒测试 刘乐-黑盒测试一、问题描述: 用Java实现求两整数的加、减、乘、除运算结果,要求两整数的范围都是0,100。从键盘输入数m,数n,判断他们的范围,假设不在0,100范围内,那么输出提示语,要求重新输入,并且在做除法运算时,当除数为0时,输出提示语,说明除数不能为0。将两数的范围定在0,100,以更好的进展边界值分析,等价类测试等黑盒测试方法;为充分表达白盒测试的特点,有些地方成心用了if-else语句,whil

2、e循环;另外,加、减、乘、除运算分别用了四个函数来计算,这样既可以在主函数中调用,又可以在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. 1

3、4. 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 sc

4、anner = 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=0&n=0&m=0&n=100 F T c执行语句块3 出口、语句覆盖: 每个可执行的语句必须至少执行一次,那么测试用例: 表 7 语句覆盖测试用例 测试用例 通过路径 条件取值m

5、1=-1,m2=1;n1=101,n2=99 a,f,b,d,c F1,T1,F2,T2、判定分支覆盖: 每个判定必须至少获得一次“真值与“假值,那么测试用例: 表 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,T2、条件判定覆盖: 每个判定中的每个条件的所有可能值真/假至少出现一次并且每个判定本身的结果真/假也至少出现一次,那么测试用例: 表 9 条件判定覆盖测试用

6、例通过路径条件取值m=1,n=99a,b,cT,T、路径覆盖: 测试用例要求覆盖所有可能的路径: 表10 路径覆盖 测试用例 通过路径 条件取值m1=-1,m2=1;n1=101,n2=99 a,f,b,d,c F1,T1,F2,T2 2.基路径测试:为简便画图,开场点从主要代码第36行开场,其他无分支节点用省略号表示1 从节点1到节点36 .36 38563739 40 4352424157(从节点43到51) . 51535458596055所以:圈复杂度VG= 5 4个独立路径为:P1:1,.,36,37,38.42,43.54,55,58,59,60P2:1,.,36,37,56,57

7、,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,60P5: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 Compute

8、r c;private Computer d;public ComputerTest (String name) super(name); /构造函数,使用super关键字直接引用父类TestCase的构造函数protected void setUp() throws Exception super.setUp(); /建立环境,可以进展一些测试数据的初始化,还可以把数据库联接写在此处,以减少重复性工作,提高效率a = new Computer(1,99); b = new Computer(101,5); c = new Computer(1,2); d = new Computer(1,0

9、);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();/输入值超出要求范围 ,测试失败,因为要求0100范围,所以,在构造Computer()函数时,要规定变量x,y

10、的范围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()的正常结果是,所以在此不应抛出异常

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

12、Empty()try c.divide(); fail(should have thrown an exception ); catch(RuntimeException Ex) assertTrue(true); /assertTrue(true);截图:(1) 、测试testAdd1()时,由于b=newComputer(101,5);assertEquals(106.0, b.add();输入值范围超出定义范围,测试异常;(2)、测试testMinus()时,assertEquals(-89,a.minus();预期值与实际值不一样,测试异常;(3)、测试testMultiply()时,

13、断言不为空,抛出异常Junit集成测试:在Junit中,Test Case总是对所有方法进展测试,而Test Suite中可对其中的一局部方法测试,而且一个测试类中还可以包含其他测试类。在Test Case类中声明一个public static Test suite()方法即可完成多个测试类的集成。例如,在上例ComputerTest类中,添加: public static Test Suit() TestSuite suite=new TestSuite(); suite.addTest(new ComputerTest(testAdd); suite.addTest(new Compute

14、rTest(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(ComputerTest.class); return suite;四、测试用例设计体会:在这次软件测试过程中,我设计

15、了一个0,100之间的整数简单加减乘除运算来表达黑盒、白盒以及Junit动态测试的特点。在黑盒测试的过程中使用了多种测试方法,包括边界值测试边界值分析、强健性测试、特殊值测试,等价类测试弱一般、强一般、弱强健、强强健等价类测试,基于决策表的测试等。虽然黑盒测试很容易生成测试用例,但实际上只有一小局部可能的输入被测试到,某些代码得不到测试,不能直接对隐蔽了许多问题的特定程序段进展测试,不易进展充分性测试。比方:在上例中,假设输入的数据是2,0,那么输出的是0.0 ,很明显这个结果是不正确的。在设计白盒测试的过程中,在设计测试用例时首先对程序进展分析,从程序的内部构造出发设计测试用例,涉及到程序的

16、控制方法、源语句、编码细节、数据库设计等。设计测试用例时应用了白盒测试中的多种测试方法,其中包括:测试覆盖语句覆盖、分支覆盖、分支条件覆盖等、基路径测试等方法。白盒测试中,对代码的测试比拟透彻,但不容易生成测试用例,而且测试工作量很大,。因为白盒测试是基于代码的根底上,所以对变量的定义、数据的分析、精度的度量都有严格的要求。如:上例中要求输入的值是0,100之间的int型,而输出的结果却要求的是double型。总之,在这次测试设计让我对软件测试有了一个深入了解,对于测试方法、测试过程,都有了较好的认识,学会了如何进展黑盒测试、白盒测试、以及一些测试工具如Junit。当然,对于以后企业上的软件测试,还有待很大的提高。第 19 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 施工组织

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁