欢迎来到天天文库
浏览记录
ID:46584451
大小:422.50 KB
页数:50页
时间:2019-11-25
《软件测试基础第5章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章面向对象软件的测试[本章要点]面向对象软件的测试与传统软件的区别;类测试价值的评估方法;类测试用例设计方法;特殊类的测试方法;划分面向对象软件测试的方法;开源工具Junit的使用方法。[本章目标]了解面向对象的测试与传统软件测试的异同;掌握类测试的基础知识;重点理解针对抽象类以及接口类等特殊类的测试技巧,设计类测试用例和测试驱动程序的几种方法;初步了解Junit,并掌握安装和卸载此工具的方法,以及如何使用它进行简单的测试。6.1面向对象的测试与传统测试的比较传统的测试计算机软件的策略是从“小型测试”开始,逐步走向“
2、大型测试”,且单元测试集中在最小的可编译程序单位——子程序。面向对象程序的结构不再是传统的功能模块结构,而是作为一个整体,并且对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。面向对象的软件测试分为:面向对象分析的测试,面向对象设计的测试,面向对象编程的测试,面向对象单元测试,面向对象集成测试,面向对象系统测试。1、传统的面向过程分析与面向对象分析(OOA)2、结构化的设计方法与面向对象设计(OOD)3、典型的面向对象程序具有继承、封装和多态的新特性。4、传统的单元测试的对象
3、是软件设计的最小单位——模块。5、传统的集成测试,主要有两种通过集成完成的功能模块进行测试的方式:①自顶向下集成②自底向上集成。6、为了保证软件的功能完整性,除了单元测试和集成测试,还必须经过规范的系统测试。6.1.1信息隐蔽对测试的影响类的重要作用之一是信息隐蔽。它对类中所封装的信息的存取进行控制,从而避免类中有关实现细节的信息被错误地使用。该隐蔽机制给测试带来了困难。6.1.2封装和继承对测试的影响若一个类得到了充分的测试,当其被子类继承后,继承的方法在子类的环境中的行为特征需要重新测试。6.1.3多态性对测试的影响传
4、统软件测试中经常使用静态分析技术对代码进行分析;面向对象软件中,由于动态绑定和多态性的存在所带来的不确定性,给测试覆盖率的满足增大了难度。6.2类测试基础1、类测试概念:验证类的实现是否和该类的说明完全一致。2、类测试的方法:通过代码检查或执行测试用例的方法来有效地进行类测试。(后者优于前者)。3、类测试人员类测试通常由开发人员来进行;(会带来好处和不足之处)。4、类测试时间类的测试伴随着开发过程中的各个阶段,当类的说明或实现发生变化时应该执行回归测试。5、类测试过程为类创建实例-->创造适当的环境-->运行测试用例(向一
5、个实例发送一个或多个消息)-->通过参数来检查测试运行的结果-->清除执行测试用例所需的测试环境。6.2.1类在UML中的描述UML(UnifiedModelingLanguage)语言是一种支持对象技术的建模语言,是在计算机系统中表示真实世界的语言,描述真实世界中的对象和它们之间的关系,支持应用的开发。在UML中,用来表示类的符号是矩形,并划分为三个区域,分别是:⑴名称区域:显示类的名称⑵属性区域:显示在类中定义的变量。⑶操作区域:显示在类中定义的方法。如图6-1所示:图6-1类的UML表示法类之间的关系分为六类,分别是
6、关联、泛化、实现、依赖、聚合和组合。每种关系分别使用不同的符号来表示(如:表6-1所示),并分别用私有的、保护的和公有的三个关键字来修饰类(如:表6-2所示)。表6-1UML类图符号描述表6-2UML类图作用域描述6.2.2类测试的价值选择将每个类作为一个单元进行单独的测试,还是将其同其他类绑定进行集成测试,需要使用如下3个要素来进行测试价值的评估:1、类本身的复杂程度2、类在整个系统中的层次3、开发该类测试驱动程序需要投入的成本4、类本身的风险程度6.2.3类测试用例设计一般基于如下3个标准设计测试系列,即基于状态的覆盖
7、率、基于限制的覆盖率和基于代码的覆盖率。设计测试用例的方法有多种:(例子详见教材)1、根据前置和后置条件确定测试用例2、根据状态转换确定测试用例3、根据访问控制修饰符(限定类、属性或方法被程序里的其他部分访问和调用的修饰符)来确定测试用例。6.2.4类测试驱动程序设计从开发的角度:测试驱动的基本思想是在对设计之前先考虑好测试代码;从测试的角度:为了执行测试,运行测试用例,找出软件中隐藏的BUG。因此,测试驱动程序的构建应该简单、透明、易维护,能够提供尽可能多的服务,同时兼顾自增量更新,更理想的情况就是能够复用已存在的测试驱
8、动程序的代码。编写类测试驱动程序的方法有很多种,以Java语言为例来说明测试驱动程序设计的结构。(主要以两票系统为例讲解,详见教材)1、在main方法中写入需要运行的测试用例,即实现main方法,然后编译、执行该类。2、在类中实现一个静态测试方法,通过调用该测试方法来收集每个测试用例的执行结果。3、实现
此文档下载收益归作者所有