软件构造学习心得1

本文深入探讨了软件构造的多维度质量目标,如易理解性、可维护性和效率,并强调了正确性的重要性。同时,介绍了软件测试的不同层级,包括单元测试、集成测试和系统测试,以及黑盒测试和白盒测试的概念。测试优先的编程实践被提倡,以提高代码质量和减少调试时间。此外,讲解了软件构造过程中的迭代模型和敏捷开发,以及配置管理和版本控制系统的应用,如Git。
摘要由CSDN通过智能技术生成

第一章 软件构造的多维度视图和质量目标

软件的质量标准分为内部质量因素和外部质量因素

外部质量因素课程主要关注

Correctness and robustness: reliability

Extendibility and reusability: modularity

内部质量因素体现在代码层面

正确性是最重要的且不能折中

软件构造的五个关键质量目标

1.easy to understand

2.cheap for develop 对应可复用性

3.ready for changes, easy to extend 对应可维护性

4.safe from bug 对应健壮性和正确性

5.efficient to run

软件构造:视图之间的转换

第二章 软件测试与测试优先的编程

本章主要介绍了软件测试及其分类,并给出实例便于更好的理解

主要内容是 JUnit进行自动化单元测试和测试方法中的黑盒测试

测试及其分类

一个好的测试应该是能发现错误,不冗余,多种测试方案中最好的,别太复杂也别太简单的

回归测试:一旦程序被修改,重新执行之前的所有测试

1.功能测试层级 可理解为面向哪一层级测试

 单元测试 按照程序的模块单元进行测试 (验证特定代码部分功能的测试)

集成测试 创建的两个或多个类、包、组件、子系统的组合执行

系统测试 最终执行时的测试

验收测试 用户实际使用测试

2.功能测试方法分类

静态 or 动态 

黑盒 or 白盒

黑盒:不考虑程序内部的逻辑结构和内部特性,对程序外部表现出来的行为的测试

······

测试:发现是否存在错误

调试:识别错误根源,消除错误

测试用例:输入+执行条件+期望结果

测试优先的编程 在编写代码之前编写测试

1.测试优先有助于更好地理解规约

2.先写测试会节省大量的调试时间

3.先于编码之前写测试用例并不会产生额外的时间

黑盒测试

:用于检查代码的功能,不关心内部实现细节

1.基于等价类划分的测试:将被测函数的输入域划分为等价类,从等价类中导出测试用例

针对每个输入数据需要满足的约束条件,划分等价类

划分出的等价类应该覆盖输入域

2.边界值分析方法 是对等价类划分方法的补充

大量的错误发生在输入域的“边界”而非中央

白盒测试 黑盒测试完全从函数spec导出测试用例,不考虑函数内部实现

白盒测试要考虑内部实现细节

代码覆盖度

已有的测试用例有多大程度覆盖了被测程序

函数覆盖 语句覆盖 分支覆盖 条件覆盖 路径覆盖

测试效果:路径覆盖>分支覆盖>语句覆盖

测试难度:路径覆盖>分支覆盖>语句覆盖

一般考虑 分支覆盖和语句覆盖就可以

测试策略(根据什么来选择测试用例)非常重要,需要在程序中显式记录下来

第三章 软件构造过程与配置管理

本章主要讲了软件构造的过程和软件构造过程的模型,包括传统模型和目前较为常见的敏捷开发

构造过程可分为线性过程和迭代过程两种

线性过程的例如瀑布模型,增量模型等

迭代:开发出来之后由用户试用/评审,发现问题反馈给
开发者,开发者修改原有的实现,继续交给用户评审

敏捷开发:通过快速迭代和小规模的持续改进,以快速适应变化。

Agile = 增量 + 迭代     每次迭代处理一个小规模增量

软件配置管理 (SCM) 和版本控制系统 (VCS)

软件配置管理:追踪和控制软件的变化

核心:版本控制和基线的确立

软件配置项:软件中发生变化的基本单元(例如:文件)

基线:软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)

 Git  分布式版本控制系统

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值