- 1、本文档共42页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
;第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类实例的最小行为历史包括下列操作:
文档评论(0)