《软件测试大作业.doc》由会员分享,可在线阅读,更多相关《软件测试大作业.doc(31页珍藏版)》请在三一办公上搜索。
1、精选优质文档-倾情为你奉上江西财经大学“软件测试与质量保证”课程作业(实验)报告组长姓名 学号 成 员 专 业 软件工程 班级 作业名称 多部电梯调度模拟软件功能性测试 指导教师 开课学期 2015 至 2016 学年1学期完成时间 2014 年 12 月 27 日专心-专注-专业 目 录 4.3.1等价类测试 7 4.3.1边界值测试 12 4.3.1白盒测试 149 1 前言电梯作为高层建筑中垂直运行的交通工具已于人们的日常生活密不可分,是建筑物中的永久性垂直交通工具。电梯实际上是一个人机交互式的控制系统,单纯用顺序控制或逻辑控制是不能满足控制要求的,而PLC控制的电梯运行可靠性高,程序设
2、计方便灵活,抗干扰能力强、运行稳定可靠等特点,所以现在的电梯控制系统广泛采用可编程控制器来实现。在工艺加工的最初,把多种原料在合适的实践和条件下进行需要加工得以得到产品一直都是在人监控或操作下进行的但是现在随着时代的发展,这些方式已经不能满足工业生产的实际需要。实际生产中需要更精确、更便捷的控制装置。可编程控制器液体混合控制系统的特点:(1)系统自动工作;(2)控制的单周期运行方式;(3)启动后能自动完成下一个周期的工作,并循环。我们采用的PLC具有小型化、高速度、高性能等特点。这次设计可以使我们熟练使用置位和复位等各条基本指令,通过对工程实例的模拟,熟练地掌握PLC的编程和程序调试。本报告首
3、先从软件测试的基本概念入手,介绍了与软件测试相关的一些理论知识。然后对我要地图网站的结构和功能进行了简单的分析。针对电梯划分的楼层,开关,载人数,独一性等功能模块进行测试。从等价类,边界值,白盒测试三种方法对这个电梯程序进行测试 最后对电梯实例缺陷进行总体概括分析。2 软件测试概述2.1 软件测试的概念软件测试是指在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。目前,国际上已对软件测试形成一个共识:软件测试就是在软件投入使用前,对软件的需求分析、设计规格说明和系统编码的最终复审。由此可见,软件测试的对象不仅仅是程序,需求规格说明、概要设计、详细设计、源程序等都是软件测试的对象。首先
4、,测试不能表明软件中不存在错误,它只能说明软件中存在错误。从用户的角度来看,希望通过测试发现错误和缺陷,从而考虑是否可接受该产品。而从软件开发者的角度来看,则希望通过测试,表明软件产品中不存在错误。换句话说,测试的目的是以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。2.2 测试的目的基于不同的立场,也会有不同的测试目的,从用户角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品但从软件开发者的角度出发,则希望测试能成为表明软件产品中不存在错误的过程,验证该产品已确实地实现了用户的要求,确立人们对软件质量的信心。2.3 测试的原则基于测试是为了寻找软件的错
5、误和缺陷,评估与提高软件质量,我们在测试的时候遵循以下原则:(1)所有的软件测试都应追溯到用户需求。(2)应当把“尽早地不断地进行软件测试”作为软件测试者的座右铭。(3)完全测试是不可能的,测试需要终止。(4)测试无法显示软件潜在的缺陷。(5)充分注意测试中的群集现象。(6)程序员应避免检查自己的程序。(7)尽量避免测试的随意性。3 电梯内容结构简介电梯由安装在各楼层厅门口的上升和下降呼叫按钮进行呼叫操纵,其操纵内容为电梯运行方向。电梯轿箱内设有楼层内选按钮S1Sn,用以选择需停靠的楼层。L1为一层指示、L2为二层指示、L3为三层指示。电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反
6、方向的呼叫均无效。例如,电梯停在一层,在二层轿箱外呼叫时,必须按二层上升呼叫按钮,电梯才响应呼叫(从一层运行到二层),按二层下降呼叫按钮无效;反之,若电梯停在三层,在二层轿箱外呼叫时,必须按二层下降呼叫按钮,电梯才响应呼叫(从三层运行到二层),按二层上升呼叫按钮无效。 3.1系统界面图3.1 初始输入信息界面图3.2 进入多电梯控制面板3.2 程序流程输入楼层信息,电梯数目及最大载人数点击任意一组电梯的开关门点击选中电梯的上人点击选中电梯的关门点击选中电梯的楼层选择点击外部大楼选择面板的某楼层的上或者下循环点击,直到按下关闭程序键4 制定测试计划和实施4.1 测试方法在实例电梯测试中,主要从以
7、下几个方法进行:边界值,等价类,白盒测试。4.2 测试通过标准(1) 如果测试结果与测试用例中预期结果一致测试通过否则不通过。(2) 数据安全、正确,测试通过,否则测试不通过。(3) 系统崩溃,无法测试,测试不通过。4.3 测试用例的设计与实施测试用例是将测试行为具体量化的方法之一,指设计一种情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的执行结果,为达到最佳的测试效果或高效的揭露隐藏的错误而精心设计的少量测试数据。一个好的测试用例是在于它能发现至今未发现的错误,在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率测试用例的使用令软件测试的实施重点突出、目的明确在软
8、件版本更新后只需修正少部分的测试用例便可展开测试工作,降低工作强度,缩短项目周期功能模块的通用化和复用化使软件易于开发,而测试用例的通用化和复用化使软件测试易于开展,并随着测试用例的不断精化其效率也不断攀升4.3.1 等价类测试一、黑盒测试等价类测试:1、初始化数据只由0-9组合而成的数据、字母、负数、特殊字符、字母和特殊字符的组合、字母和数字的组合、空格和其他字符的组合、小数。序号输入数据包含等价类预计输出实际输出测试结果楼层数电梯数最大载人数110510 初始化电梯控制台初始化电梯控制台Passed201005010 初始化电梯控制台初始化电梯控制台Passed30.10.10.1初始化失
9、败,提示输入非法初始化失败,未提示Failed截图一4abc初始化失败,提示输入非法初始化失败,未提示Failed截图二5-10-5-10初始化失败,提示输入非法初始化失败,未提示Failed截图三6#¥初始化失败,提示输入非法初始化失败,未提示Failed截图四7a%b%c%初始化失败,提示输入非法初始化失败,未提示Failed截图五8a10b5c10初始化失败,提示输入非法初始化失败,未提示Failed截图六91空格02 1空格0初始化失败,提示输入非法初始化失败,未提示Failed截图七截图一:原因说明:对于不合法的输入数据没有给出提示。截图二:原因说明:对于不合法的输入数据没有给出提示
10、。截图三:原因说明:对于不合法的输入数据没有给出提示。截图四:原因说明:对于不合法的输入数据没有给出提示。截图五:原因说明:对于不合法的输入数据没有给出提示。截图六:原因说明:对于不合法的输入数据没有给出提示。截图七:原因说明:对于不合法的输入数据没有给出提示。2、初始化界面A、 楼层数 = 电梯数 = 最大载人数B、 楼层数 = 电梯数 最大载人数C、 楼层数 电梯数 = 最大载人数D、 楼层数 电梯数 最大载人数E、 楼层数 最大载人数 电梯数F、 电梯数 楼层数 = 最大载人数G、 电梯数 楼层数 最大载人数H、 电梯数 最大载人数 楼层数I、 最大载人数 电梯数 = 楼层数J、 最大载
11、人数 电梯数 楼层数K、 最大载人数 楼层数 电梯数测试用例:序号输入数据包含等价类预计输出实际输出测试结果楼层数电梯数最大载人数1666A电梯控制台成功初始化初始化界面显示不完全Failed截图一2667B电梯控制台成功初始化初始化界面显示不完全Failed截图二3677C初始化失败提示错误原因初始化失败Failed截图三4789D初始化失败提示错误原因初始化失败Failed截图四5798E初始化失败提示错误原因初始化失败Failed截图五6727F电梯控制台成功初始化初始化界面显示不完全Failed截图六7768G电梯控制台成功初始化初始化界面显示不完全Failed截图七81028H电梯控
12、制台成功初始化电梯控制台成功初始化Passed9776I电梯控制台成功初始化初始化界面显示不完全Failed截图八10876J电梯控制台成功初始化初始化界面显示不完全Failed截图九11786k初始化失败提示错误原因初始化失败Failed截图十截图一:原因说明:按钮的界面为绝对布局,此时楼层数不够高,导致界面高度不够,按钮未完全展示。截图二:原因说明:按钮的界面为绝对布局,此时楼层数不够高,导致界面高度不够,按钮未完全展示。截图三:原因说明:电梯层数高于楼层数。截图四:原因说明:电梯层数高于楼层数。截图五:原因说明:电梯层数高于楼层数。截图六:原因说明:按钮的界面为绝对布局,此时楼层数不够高
13、,导致界面高度不够,按钮未完全展示。截图七:原因说明:按钮的界面为绝对布局,此时楼层数不够高,导致界面高度不够,按钮未完全展示。截图八:原因说明:按钮的界面为绝对布局,此时楼层数不够高,导致界面高度不够,按钮未完全展示。截图九:原因说明:按钮的界面为绝对布局,此时楼层数不够高,导致界面高度不够,按钮未完全展示。截图十:原因说明:电梯层数高于楼层数。4.3.1 边界值测试边界值测试用例设计:序号输入数据预计输出实际输出测试结果楼层数电梯数最大载人数1000failfailfail2-100failfailfail30-10failfailfail400-1failfailfail5111fail
14、passpass6101passfailfail7110passpasspass8011failfailfail9spacespace spacefailfailfail10nullnullnullfailfailfail11failfailfail12344passfailfail13541passpasspass14559999failpasspass15999911failpasspass截图缺陷:123.分析总结 这个程序的一些缺陷通过边界值测试分析出来了,主要是某些边界值如0这样的数字系统是会报错的,另外当楼层小于电梯数量的时候系统也会报错,还有一些非法字符系统也会出错。4.3.1
15、白盒测试白盒测试:(一)语句:A. LiftGroupMaster初始化各变量Init()1. protected void init() 2. outBtn = new OutButton(numOfFloor);3. distance = new intnumOfFloor + 1;4. minOrder = new intnumOfFloor + 1;5. upAlloateFail = new intnumOfFloor + 1;6. downAlloateFail = new intnumOfFloor + 1;7. group = new LiftMasternumOfLift +
16、 1;8. for (int i = 1; i = numOfLift; i+)9. groupi = new LiftMaster(numOfFloor);10. upCalls = new intnumOfFloor + 1;11. downCalls = new intnumOfFloor + 1;12. for (int i = 0; i = numOfFloor; i+) 13. upCallsi = downCallsi = 0;14. upAlloateFaili = downAlloateFaili = 0;15. 16. for (int i = 1; i = numOfLi
17、ft; i+) 17. groupi.gateTimer = new Timer(gateCycle, this);18. groupi.cageTimer = new Timer(cageCycle, this);19. groupi.cageTimer.start();20. 21. for (int i = 1; i = numOfLift; i+) 22. for (int j = 1; j = numOfFloor; j+) 23. groupi.innerBtn.stopButtonj.addActionListener(this);24. 25. groupi.innerBtn.
18、closeButton.addActionListener(this);26. groupi.innerBtn.openButton.addActionListener(this);27. 28. for (int j = 1; j = numOfFloor; j+) 29. outBtn.UPj.addActionListener(this);30. outBtn.DOWNj.addActionListener(this);31. 32. for (int i = 1; i = numOfLift; i+) 33. groupi.liftState.enterButton.addAction
19、Listener(this);34. groupi.liftState.exitButton.addActionListener(this);35. 36. reassignTimer = new Timer(reassignCycle, this);37. reassignTimer.start();38. waitCloseGate = new TimernumOfFloor + 1;39. for (int i = 1; i = numOfLift; i+)40. waitCloseGatei = new Timer(gateWaitCycle, this);41. LiftsHeigh
20、t = group1.PanelHeight + 30;42. LiftsWidth = numOfLift * (group1.PanelWidth + 20);43. outBtnHeight = group1.PanelHeight;44. outBtnWidth = 145;45. B、LiftGroupMaster构造函数1. LiftGroupMaster(int numOfFloor, int numOfLift, int numofPerson) 2. this.numOfFloor = numOfFloor;3. this.numOfLift = numOfLift;4. t
21、his.numOfPerson = numofPerson;5. init();6. JPanel liftGroup = new JPanel();7. liftGroup.setLayout(new GridLayout(1, numOfLift, 10, 8);8. for (int i = 1; i = numOfLift; i+)9. liftGroup.add(groupi);10. liftGroup.setBackground(Color.WHITE);11. liftGroup.setBounds(1, 1, LiftsWidth, LiftsHeight);12. outB
22、tn.setBounds(LiftsWidth + 3, 1, outBtnWidth, outBtnHeight);13. setLayout(null);14. add(liftGroup);15. add(outBtn);16. C、LiftMaster初始化各变量Init()1. void init(int numOfFloor) 2. this.numOfFloor = numOfFloor;3. ifOpen = false;4. state = FREE;5. floor = 1;6. toppestCall = numOfFloor + 1;7. lowestCall = 0;
23、8. upStop = new intnumOfFloor + 1;9. downStop = new intnumOfFloor + 1;10. for (int i = 1; i = numOfFloor; i+)11. upStopi = downStopi = 0;12. stop = new intnumOfFloor + 1;13. for (int i = 1; i = 1F1:电梯数 = 0F2:楼层数 = 1F3:楼层数 = 1F1:电梯数 = 1F1:楼层数 1 (2) 测试用例:A LiftGroupMaster初始化各变量Init():序号输入数据预计输出覆盖对象实际输
24、出测试结果楼层数电梯数最大载人数111213初始化电梯控制台T1、T2、T3初始化电梯控制台Passed2-1013初始化失败,提示输入非法F1、F2、F3初始化失败,未提示Failed截图一截图一:原因说明:对于不合法的输入数据没有给出提示。B LiftGroupMaster构造函数:序号输入数据预计输出覆盖对象实际输出测试结果楼层数电梯数最大载人数111213初始化电梯控制台T1初始化电梯控制台Passed211013初始化失败,提示输入非法F1初始化失败,未提示Failed截图一截图一:原因说明:对于不合法的输入数据没有给出提示。C LiftMaster初始化各变量Init():序号输入
25、数据预计输出覆盖对象实际输出测试结果楼层数电梯数最大载人数111213初始化电梯控制台T1初始化电梯控制台Passed20213初始化失败,提示输入非法F1初始化失败,未提示Failed截图一截图一:原因说明:对于不合法的输入数据没有给出提示。4 判定条件覆盖:A LiftGroupMaster初始化各变量Init():序号输入数据预计输出覆盖对象实际输出测试结果楼层数电梯数最大载人数111213初始化电梯控制台144、T1、T2、T3初始化电梯控制台Passed2-1013初始化失败,提示输入非法18、1012、16、21、25、26、28、32、36、3739、4144、F1、F2、F3初
26、始化失败,未提示Failed截图一截图一:原因说明:对于不合法的输入数据没有给出提示。B LiftGroupMaster构造函数:序号输入数据预计输出覆盖对象实际输出测试结果楼层数电梯数最大载人数111213初始化电梯控制台115、T1初始化电梯控制台Passed211013初始化失败,提示输入非法18、1015、F1初始化失败,未提示Failed截图一截图一:原因说明:对于不合法的输入数据没有给出提示。C LiftMaster初始化各变量Init():序号输入数据预计输出覆盖对象实际输出测试结果楼层数电梯数最大载人数111213初始化电梯控制台124、T1初始化电梯控制台Passed2021
27、3初始化失败,提示输入非法110、12、13、1524、F1初始化失败,未提示Failed截图一截图一:原因说明:对于不合法的输入数据没有给出提示。5 路径覆盖:ALiftGroupMaster初始化各变量Init():序号输入数据预计输出覆盖对象实际输出测试结果楼层数电梯数最大载人数111213初始化电梯控制台144初始化电梯控制台PassedBLiftGroupMaster构造函数:序号输入数据预计输出覆盖对象实际输出测试结果楼层数电梯数最大载人数111213初始化电梯控制台115初始化电梯控制台PassedCLiftMaster初始化各变量Init():序号输入数据预计输出覆盖对象实际输
28、出测试结果楼层数电梯数最大载人数111213初始化电梯控制台124初始化电梯控制台PassedDLiftMaster构造函数:序号输入数据预计输出覆盖对象实际输出测试结果楼层数电梯数最大载人数111213初始化电梯控制台116初始化电梯控制台Passed6 数据流测试:A LiftGroupMaster初始化各变量Init():def(group)= 7,9,17,18,19,23,25,26,33,34 use(group)= 41,42,43 定义-使用路径:(1) 7-8-9-10-11-12-13-14-16-17-18-19-21-22-23-25-26-28-29-30-32-33
29、-34-36-37-38-39-40-41(2) 7-8-9-10-11-12-13-14-16-17-18-19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41-42(3) 7-8-9-10-11-12-13-14-16-17-18-19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41-42-43(4) 9-10-11-12-13-14-16-17-18-19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41(5) 9-10-11-1
30、2-13-14-16-17-18-19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41-42(6) 9-10-11-12-13-14-16-17-18-19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41-42-43(7) 17-18-19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41(8) 17-18-19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41-42(9) 17-18
31、-19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41-42-43(10) 18-19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41(11) 18-19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41-42(12) 18-19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41-42-43(13) 19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41(14) 19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41-42(15) 19-21-22-23-25-26-28-29-30-32-33-34-36-37-38-39-40-41-42-43(16) 25-26-28-29-30-32-33-34-36-37-38-39-40-41(17) 25-26-28-29-30-32-33-34-36-37-38-39-40-41-42(18) 25-