面向对象软件工程与UML 教学课件 作者 张京 第 6 章 面向对象的测试.ppt
文本预览下载声明
第 6 章面向对象的测试 6.1 面向对象的测试问题 6.2 面向对象的单元测试 6.3 面向对象的集成测试 6.4 面向对象的系统测试 6.1 面向对象的测试问题 本节的目标是找出由面向对象软件引出的测试问题。首先是测试的层次问题,而这又要求澄清如何划分面向对象单元;其次要考虑合成策略(与功能分解相反)引出的一些问题。 6.1 面向对象的测试问题 6.1.1 面向对象测试的单元 6.1.2 面向对象测试的层次 6.1.3 本章采用的例子 6.1.1 面向对象测试的单元 以类为单元有多种优点:在UML语境下,类和描述其行为的“状态图”关联起来;另外面向对象集成测试有更清晰的目标,例如可以检查已经通过单独测试的类的协同操作,这与传统软件测试类似。 6.1.2 面向对象测试的层次 基于单元的构成,面向对象测试采用三层或四层方式。 如果把单个操作或方法看做单元,则有四层测试,即操作/方法、类、集成和系统测试。 6.1.3 本章采用的例子 1 NextDate问题的面向对象实现 2 典型的GUI应用程序,即货币转换应用程序。 6.1.3 本章采用的例子 1.面向对象的日历 NextDate是含有3个变量(月份、日期和年)的函数。函数返回输入日期第二天的那个日期。变量月份、日期和年都具有整数值,且满足以下条件。 c1: 1≤月份≤12 c2: 1≤日期≤31 c3: 1812≤年≤2012 6.1.3 本章采用的例子 o-oCalendar程序是NextDate问题例子的一种面向对象实现。 图6.1和图6.2给出了o-oCalendar问题的UML类图和类的继承及聚合。 6.1.3 本章采用的例子 6.1.3 本章采用的例子 2.货币转换应用程序 货币转换程序是一个事件驱动程序,强调与图形用户界面关联的代码。图6.3给出的是采用Visual Basic构建的样本GUI。 6.2 面向对象的单元测试 面向对象的软件测试要面对许多新的挑战,如面向对象的编程语言中的继承性和多态性对测试者来说就是一个新的技术难点。同时,作为增量开发过程的一部分,设计良好的面向对象软件为改善传统测试过程提供了机遇,提高了软件的可维护性、复用性和灵活性等。 6.2 面向对象的单元测试 6.2.1 面向对象软件测试与传统软件的不同 6.2.2 类测试 6.2.3 类测试的主要问题 6.2.1 面向对象软件测试与传统软件的不同 传统的单元测试在面向对象的软件测试中是对类的测试 传统的集成测试包括自顶向下、自底向上等在面向对象中基本不适用,面向对象的集成测试主要是以下两个方面。 ① 类的线性测试、交互测试。 ② 类的独立性测试(跨平台)。 6.2.2 类测试 1.类测试的方法 (1)代码检查 ① 代码检查易受人为错误的影响。 ② 代码检查在新产品开发时明显需要更多的工作量 (2)执行测试用例 一旦确定了一个类的可执行测试用例,测试驱动程序创建一个或多个类的实例来运行一个测试用例,这时就必须执行测试驱动程序来运行每个测试用例,并给出每个测试用例运行的结果。 6.2.2 类测试 2.类测试的组成部分 对于每个类,是将其作为一个单元进行独立测试,还是以某种方式将其作为系统某个较大部分的一个组件进行独立测试需要基于以下因素进行决策。 ① 这个类在系统中的作用,尤其是与之相关联的风险程度。 ② 这个类的复杂性(根据状态个数、操作个数以及关联其他类的程度等进行衡量)。 ③ 开发这个类测试驱动程序所需的工作量。 6.2.2 类测试 在进行类测试时一般要考虑以下几个方面。 ① 测试人员。 ② 测试内容。 ③ 测试时间。 ④ 测试过程。 ⑤ 测试程度。 6.2.2 类测试 3.构建测试用例 首先看怎样从类说明中确定测试用例,然后根据类实现引进的边界值来扩充附加的测试用例。 根据前置条件和后置条件来构建测试用例的总体思想是为所有可能出现的组合情况确定测试用例需求。 6.2.2 类测试 4.类测试系列的充分性 充分性的3个常用标准是:基于状态的覆盖率、基于限制的覆盖率、基于代码的覆盖率。最低限度地符合这些标准将会产生若干不同的测试系列。将所有3个标准用于测试系列,将会提高用户对测试充分性的信任度。 6.2.2 类测试 ① 基于状态的覆盖率。 ② 基于约束的覆盖率。 ③ 基于代码的覆盖率。 6.2.2 类测试 5.构建测试的驱动程序 测试驱动程序是一个运行测试用例并收集运行结果的程序。 测试驱动程序的设计应该相对简单。 测试驱动程序必须是严谨的,结构清晰、简单,易于维护,并且对所测试类的说明变化具有很强的适应能力。 理想情况下在创建新的测试驱动程序时应该能够
显示全部