主要任务
把面向对象设计结果翻译成用某种程序语言书写的面向对象程序 ,测试并调试面向对象的程序
程序设计语言
OO程序设计风格
- 包括传统的程序设计风格准则
- 也包括为适应面向对象方法所特有的概念(例如,继承性)而必须遵循的一些新准则
可重用性
-
提高方法的内聚
- 一个方法(即服务)应该只完成单个功能
-
可重用性
- 减小方法的规模
-
保持方法的一致性
- 功能相似的方法应该有一致的名字、参数特征(包括参数个数、类型和次序)、返回值类型、使用条件及出错条件等
-
把策略与实现分开
- 策略方法与实现方法
-
全面覆盖
- 各种可能的输入组合
-
尽量不使用全局信息
-
利用继承机制
- 调用子过程
- 分解因子
- 使用委托
- 把代码封装在类中
可扩展性
-
封装实现策略
- 对外只提供公有的接口
-
不要用一个方法遍历多条关联链
- 一个方法应该只包含对象模型中的有限内容
-
避免使用多分支语句
- 应该合理地利用多态性机制,根据对象当前类型,自动决定应有的行为,不要用DO_CASE
-
确定公有方法
健壮性
- 预防用户的操作错误
- 检查参数的合法性
- 不要预先确定限制条件
- 应该使用动态内存分配机制,创建未预先设定限制条件的数据结构
- 先测试后优化
测试策略
从单元测试开始,逐步进入集成测试,最后进行系统测和确认测试
集成测试
在面向对象的软件中不存在层次的控制结构,传统的自顶向下或自底 向上的集成策略就没有意义。此外,由于构成类的各个成分彼此间存在直接或间接的交互,一次集成一个操作到类中(传统的渐增式集成方法)通常是不现实的。
- 基于线程的测试
把响应系统的一个输入或一个事件所需要的那些类集成起来。分别集成并测试每个线程,同时应用回归测试以保证没有产生副作用
- 基于使用的测试
首先测试几乎不使用服务器类的那些类(称为独立类),把独立类都测试完之后, 再测试使用独立类的下一个层次的类(称为依赖类)。对依赖类的测试一个层次一个层次地持续进行下去,直至把整个软件系统构造完为止。
确认测试
和传统的确认测试一样,面向对象软件的确认测试也集中检查用户可见的动作和用户可识别的输出
设计测试用例
面向对象软件的测试用例的设计方法与传统软件测试(测试用例的设计由软件的输入—处理—输出视图或单个模块的算法细节驱动),面向对象测试关注于设计适当的操作序列以检查类的状态
单元测试
1.随机测试
2.划分测试
(1)基于状态的划分
改变/不改变状态
(2)基于属性的划分
使用/修改/不使用也不修改
(3)基于功能的划分
3.基于故障的测试
首先推测软件中可能有的错误,然后设计出最可能发现这些错误的测试用 例
集成测试
设计出的测试用例应该覆盖所有状态,也就是说,操作序列应该使得account类实例遍历所有允许的状态转换
1.随机测试
2.划分测试
3.从动态模型(状态图)导出测试用例