1 / 24

软件工程 Software Engineering

软件工程 Software Engineering. 电气与信息学院计算机系 Institute of Electrical & Information Department of Computer Science. 第一章 软件工程概述 第二章 软件过程 第三章 软件项目管理 第四章 需求工程 第五章 结构化设计分析 第六章面向对象建模方法. 第七章 面向对象分析 第八章 面向对象设计 第九章 体系结构设计 第十章 软件实现 第十一章 软件测试与演化. 教学内容. 内容提纲. 软件测试基础 软件测试及其目的和原则 软件全生命周期的测试活动和测试文档

roza
Download Presentation

软件工程 Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 软件工程Software Engineering 电气与信息学院计算机系 Institute of Electrical & Information Department of Computer Science

  2. 第一章 软件工程概述 第二章 软件过程 第三章 软件项目管理 第四章 需求工程 第五章 结构化设计分析 第六章面向对象建模方法 第七章 面向对象分析 第八章 面向对象设计 第九章 体系结构设计 第十章 软件实现 第十一章 软件测试与演化 教学内容

  3. 内容提纲 • 软件测试基础 • 软件测试及其目的和原则 • 软件全生命周期的测试活动和测试文档 • 软件测试策略 • 单元测试、集成测试、系统测试 • 验收测试 • 软件测试技术 • 黑盒测试与白盒测试 • 等价类划分、边界值分析、路径测试、基于状态的测试 • 面向对象的测试 • 测试策略与方法 • 类测试、类集成测试

  4. 黑盒测试与白盒测试 • 黑盒测试又称功能测试,它将测试对象看做一个黑盒子,完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。黑盒测试方法主要有等价类划分、边界值分析、因—果图、错误推测等,主要用于功能测试 • 白盒测试又称结构测试,它把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。白盒测试的主要方法有逻辑驱动、基本路径测试等,经常用于单元测试

  5. 等价类划分 • 等价类划分是一种典型的黑盒测试方法。等价类是指测试相同目标或者暴露相同错误的一组测试用例,等价类划分是将数量巨大的输入数据(有效的和无效的)划分成若干等价类,在每一个等价类中选取一个代表性的输入数据作为测试的输入条件,通过这些少量代表性测试数据覆盖整个输入数据集合,取得良好的测试效果

  6. 等价类划分的基本原则 • 等价类划分方法应具备以下基本原则: • 每个可能的输入属于某一个等价类 • 任何输入都不会属于多个等价类 • 用等价类的某个成员作为输入时,如果证明执行存在误差,那么用该类的任何其他成员作为输入,也能检查到同样的误差

  7. 边界值分析 • 边界值分析是等价类测试的特例,主要是考虑等价类的边界条件,在等价类的“边缘”处选择元素。前面提到,软件错误一般不是发生正常的输入范围内,却常常发生在输入或输出的边界上。因此各种边界情况的测试是十分重要的 • 使用边界值分析方法设计测试用例时,首先要确定边界情况,通常输入等价类和输出等价类的边界,就是应该着重测试的边界情况。选择测试用例时,一定要选择临近边界的合法数据,即最后一个可能合法的数据,以及刚刚超过边界的非法数据

  8. 举例 • [举例1]请使用等价类划分和边界值分析的方法,设计Date类decrease()方法的测试用例 • 设计测试用例: • 从等价类划分考虑,“年份”存在闰年和非闰年,“月份”存在31天月、30天月和2月;从边界值考虑,一个月的最后一天和12月31日

  9. 举例——设计测试用例 • 综合上述考虑,我们可以选择一种等价类划分: • D1={ 1≤date<本月最后一天} • D2={ 本月最后一天 } • D3={ 12月31日 } • M1={ 30天月 } • M2={ 31天月 } • M3={ 2月 } • Y1={ 2000 } • Y2={ 闰年 } • Y3={ 非闰年 } • 考虑有效等价类、无效等价类和边界值的情况,我们可以得到下表所示的测试用例

  10. 举例——设计测试用例

  11. 路径测试 • 路径测试是确定组件实现中错误的白盒测试技术,它假设通过至少一次代码的所有可能路径,大多数错误将引起故障。路径测试是在程序控制流图的基础上,分析控制构造的环路复杂性,导出基本可执行路径集合,由此设计测试用例,并保证在测试中程序的每一个可执行语句至少要执行一次

  12. 举例 • [举例2]下面是选择排序的程序,其中datalist是数据表,它有两个数据成员:一是元素类型为Element的数组V,另一个是数组大小n。算法中用到两个操作,一是取某数组元素V[i]的关键码操作getKey ( ),一是交换两数组元素内容的操作Swap( )。

  13. 举例——设计测试用例

  14. 举例——设计测试用例

  15. 举例——设计测试用例 • 首先画出该程序的流程图,再找出图中的所有独立路径,所谓独立路径是指包括一组以前没有处理的语句或条件的一条路径。 • 显然,该图有5条独立路径: • path1:1-3 • path2:1-2-5-8 …… • path3:1-2-5-9 …… • path4:1-2-4-6 …… • path5:1-2-4-7 ……

  16. 举例——设计测试用例 • 为上述每个路径设计测试用例:

  17. 基于状态的测试 • 基于状态的测试主要考虑面向对象系统,它根据系统的特定状态选择大量的测试输入,测试某个组件或系统,并将实际的输出与预期的结果相比较。在类环境中,从类的 UML 状态图中得出测试用例组成基于状态的测试。

  18. 基于状态的测试原则 • 测试每一状态的每一种内部转换,验证程序在正常状态转换下与设计需求的一致性 • 测试每一状态中每一种内部转换的监护条件,考虑条件为真、为假以及条件参数处于极限值附近的情况 • 测试每一状态中是否可能发生奇异的内部转换 • 测试状态与状态之间每一条转换路径,验证程序在合法条件下行为的正确性 • 测试状态与状态之间每一条转换路径的监护条件,考虑条件为真、为假以及条件参数处于极限值附近的情况 • 分析状态与状态之间可能发生的异常转换,并设计测试用例 • 将系统看作一个整体,针对系统的典型功能设计测试用例

  19. 举例 • [举例3]下面是一个20位的二进制加法器,它所实现的功能如下所述: • (1)点击“C”键:清除结果 • (2)点击“0”键:输出0 • (3)点击“1”键:输出1 • (4)点击“+”键:输出+ • (5)点击“=”键:显示计算结果

  20. 首先画出二进制加法器的状态图,再根据上述状态图设计测试用例的基本原则,将二进制加法器设计成三组测试用例,分别用于测试状态图中三个状态各自内部的转换、三个状态之间的转换以及加法算式的正确性首先画出二进制加法器的状态图,再根据上述状态图设计测试用例的基本原则,将二进制加法器设计成三组测试用例,分别用于测试状态图中三个状态各自内部的转换、三个状态之间的转换以及加法算式的正确性 • 在下面列出的三组测试用例中,使用状态1表示二进制加法器状态图中的Enter Op1、状态2表示Enter Op2、状态3表示Display result;另外,所有测试用例的执行要求:每次测试开始前需重新启动程序或者按C键复位,按照按键序列依次输入,并查看结果框中是否有期望的输出结果

More Related