软件测试 | 期末复习——面向对象的软件测试

这篇博客探讨了面向对象软件测试的重要性,包括面向对象分析(OOA)、设计(OOD)和编程(OOP)的测试。文章指出,面向对象测试需关注对象状态变化、方法间影响、封装、继承和多态对测试的影响。它强调了开发前期的静态测试,如OOA Test、OOD Test,以及开发后期的单元测试、集成测试和系统测试,确保对象操作、类结构和类库的支持等方面符合设计要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 面向对象测试的概述

面向对象软件测试的目标与传统测试一样:用尽可能低的测试成本和尽可能少的测试用例,发现尽可能多的软件缺陷。

面向对象的测试策略也遵循从“小型测试”到“大型测试”,即从单元测试到最终的功能性测试和系统性测试。

 

变化

面向对象 = 对象 + 类 + 继承 + 通信

新特点:封装、继承、多态

这些变化带来了产生新错误的可能,带来了测试的变化

(1)基本功能模块

系统的基本构造单元不再是传统的功能模块,而是类和对象。

在测试过程中,不能仅检查输入数据产生的输出结果是否与预期结果相吻合,还要考虑对象的状态变化、方法间的相互影响等。

(2)系统的功能实现

系统的功能体现在对象间的协作上,而不再是简单的过程调用。

(3)封装对测试的影响

封装使对象的内部状态隐蔽,如果类中未提供足够的存取函数来表明对象的实现方式和内部状态,则类的信息隐蔽机制将给测试带来困难。

(4)继承对测试的影响

继承削弱了封装性,产生了类似于非面向对象语言中全局数据的错误风险。

若一个类得到了充分的测试,当其被子类继承后,继承的方法在子类的环境中的行为特征需要重新测试。

(5)多态对测试的影响

多态依赖于不规则的类层次的动态绑定,可能产生非预期的结果。

 

面向对象的开发模型突破了传统的瀑布模型,将开发分为:

面向对象分析(OOA)

面向对象设计(OOD)

面向对象编程(OOP)

三个阶段。

 

开发阶段的面向对象的软件测试

 面向对象分析的测试(OOA Test)

面向对象设计的测试(OOD Test&#

### 软件工程与面向对象期末复习资料 #### 关于软件工程的核心概念 软件工程是一门研究如何有效地开发和维护软件系统的学科。其核心目标在于提高软件的质量、降低开发成本并提升生产效率。在软件生命周期的不同阶段,包括计划、需求分析、设计、编码、测试以及后期的维护工作中,都应遵循严格的管理规范和技术标准[^1]。 对于重要功能的描述应当清晰明了;而软件确认准则是指验证最终产品是否满足最初定义的需求规格说明书的要求。另外,在评估一款软件产品的性能时,则需关注响应时间、吞吐量等方面的表现情况。值得注意的是,程序流程图作为一种传统工具被广泛应用于表达算法思路或业务逻辑,但在实际操作过程中需要注意保持良好的控制流特性——即每个处理过程仅有一个入口点和一个出口点。 #### 单元测试的重要性及其影响因素 单元测试作为软件开发生命周期中的一个重要环节,主要作用是对各个独立的功能模块进行细致入微地检验,从而尽早发现问题所在。尽管它通常是在编程完成后立即执行的任务之一,但这并不意味着会对后续可能涉及的技术支持工作造成不利影响。事实上,有效的单元测试反而有助于增强应用程序的整体稳定性和健壮性,进而间接促进了长期内的可维护性改进。 #### 影响软件可维护性的关键要素 当讨论到哪些方面会显著影响到软件项目的易维护程度时,除了直观可见的因素外还有一些容易被人忽视的地方值得特别留意: - **结构化的设计理念**:采用分层架构模式能够使得各层次之间职责分明,便于理解和调整; - **高质量的文档记录**:详尽准确的文字说明可以帮助新加入团队成员快速上手项目; - **合理的代码组织方式**:比如函数命名规则统一、注释充分等良好习惯都有助于减少理解上的障碍; - **持续集成实践的应用**:自动化构建部署机制可以在很大程度上预防潜在风险的发生。 据统计数据显示,大约70%以上的总工时消耗发生在软件发布之后针对缺陷修复以及其他变更请求所开展的一系列活动中。因此重视上述提到的各项措施显得尤为重要。 #### 面向对象方法学简介 面向对象方法学强调以现实世界中存在的实体为蓝本建立抽象的数据模型,并通过封装、继承、多态三大支柱来实现复杂系统建模的目的。具体来说就是将具有相似行为特征的对象归类组合成一个个相互关联又各自独立存在的组件,再利用消息传递机制完成交互协作任务。这种方法不仅简化了问题域的理解难度,同时也提高了重用率降低了耦合度,成为现代大型信息系统建设不可或缺的一部分[^2]。 #### 计算机硬件组成部分间的联系 计算机由多个子部件构成,其中包括但不限于中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出设备(I/O devices),它们共同构成了完整的计算平台框架体系。其中央处理器负责执行指令序列,内存用于临时保存正在运行的信息,外部存储介质则提供了持久化的数据存放空间。至于显示器、键盘、鼠标这类外围装置主要用于辅助用户界面展示及命令输入等功能。从面向对象的角度来看待这个问题的话,可以把每种物理器件视作特定类型的实例对象,彼此间存在着紧密依赖关系的同时也保持着相对松散的合作边界[^3]。 ```cpp // C++ 示例展示了简单类之间的关系模拟 class Computer { public: CPU cpu; Memory memory; Storage storage; InputDevice input_device; OutputDevice output_device; void powerOn() { /* ... */ } }; int main(){ Computer myPC; myPC.powerOn(); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值