预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共42页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第12章面向对象实现面向对象测试的目标,是用尽可能低的测试成本和尽可能少的测试方案,发现尽可能多的错误。面向对象程序中特有的封装、继承和多态等机制,也给面向对象测试带来一些新特点,增加了测试和调试的难度。必须通过实践,努力探索适合于面向对象软件的更好的测试方法。12.1程序设计语言12.2程序设计风格12.3测试策略12.4设计测试用例12.5小结12.1程序设计语言面向对象语言的技术特点纯面向对象语言着重支持面向对象方法研究和快速原型的实现smalltalk,java混合型面向对象语言的目标则是提高运行速度和使传统程序员容易接受面向对象思想。C++成熟的面向对象语言通常都提供丰富的类库和强有力的开发环境。支持类与对象概念的机制(内存回收)实现整体—部分结构的机制(内部指针)实现一般—特殊结构的机制(多继承)实现属性和服务的机制(多态)类型检查(编译时强弱类型检查)类库效率持久保存对象参数化类开发环境12.2程序设计风格提高可重用性面向对象方法一个主要目标,是提高软件的可重用性。软件重用有多个层次,在编码阶段主要考虑代码重用的问题。一般说来,代码重用有两种:一种是本项目内的代码重用,另一种是新项目重用旧项目的代码。设计重用内部重用主要是找出设计中相同或相似的部分,然后利用继承机制共享它们。为做到外部重用(即一个项目重用另一项目的代码),必须有长远眼光,需要反复考虑精心设计。提高方法的内聚(功能单一)减小方法的规模(提高内聚)保持方法的一致性(能够被子类替换)把策略与实现分开(抽象与实现)为提高可重用性,在编程时不要把策略和实现放在同一个方法中,应该把算法的核心部分放在一个单独的具体实现方法中。为此需要从策略方法中提取出具体参数,作为调用实现方法的变元。全面覆盖(考虑周全)尽量不使用全局信息(降低耦合)利用继承机制在面向对象程序中,使用继承机制是实现共享和提高重用程度的主要途径。调用子过程分解因子(方法中的switch语句,多态!!!)使用委托把代码封装在类中(走向继承)通过调用公用方法实现代码重用通过因子分解实现代码重用提高可扩充性上一小节所述的提高可重用性的准则,也能提高程序的可扩充性。此外,下列的面向对象程序设计准则也有助于提高可扩充性。封装实现策略不要用一个方法遍历多条关联链(功能不单一)避免使用多分支语句精心确定公有方法(对外接口)提高健壮性程序员在编写实现方法的代码时,既应该考虑效率,也应该考虑健壮性。通常需要在健壮性与效率之间做出适当的折衷。必须认识到,对于任何一个实用软件来说,健壮性都是不可忽略的质量指标。为提高健壮性应该遵守以下几条准则。预防用户的操作错误检查参数的合法性不要预先确定限制条件先测试后优化12.3测试策略面向对象的单元测试最小的可测试单元是封装起来的类和对象。一个类可以包含一组不同的操作,而一个特定的操作也可能存在于一组不同的类中。因此,对于面向对象的软件来说,单元测试的含义发生了很大变化。不能再孤立地测试单个操作,而应该把操作作为类的一部分来测试。面向对象的集成测试面向对象软件的集成测试有两种不同的策略。基于线程的测试(thread-basedtesting):把响应系统的一个输入或一个事件所需要的一组类集成起来。分别集成并测试每个线程,同时应用回归测试以保证没有产生副作用。基于使用的测试(use-basedtesting):首先测试几乎不使用服务类的那些类(称为独立类),接下来测试使用独立类的下一个层次的类(称为依赖类)。对依赖类的测试一个层次一个层次地持续进行下去,直至把整个软件系统构造完为止。面向对象的确认测试在确认测试或系统测试层次,不再考虑类之间相互连接的细节。和传统的确认测试一样,面向对象软件的确认测试也集中检查用户可见的动作和用户可识别的输出。为了导出确认测试用例,测试人员应该认真研究动态模型和描述系统行为的脚本,以确定最可能发现用户交互需求错误的情景。12.4设计测试用例随机测试银行系统的account(账户)类有下列操作:open(打开),setup(建立),deposit(存款),withdraw(取款),balance(余额),summarize(清单),creditLimit(透支限额)和close(关闭)。每个操作都可以应用于account类的实例,但该系统的性质对操作的应用施加了一些限制,如必须在其他操作之前先打开账户,完成全部操作之后才关闭账户。即使有这些限制,可做的操作也有许多种排列方法。一个account类实例的最小行为历史包括下列操作:open·setup·deposit·withdraw·close这是对account类的最小测试序列。但在下面的序列中可能发生许多其他行为:Open·setup·deposit·[deposit|with