Java程序构造©Day3

Java程序构造©Day3

March 12th, 2018
标签(空格分隔): Java程序构造



第七章

7.5 软件测试 测试优先的编程

  • 认可测试价值
  • 学会两种黑盒测试方法 等价划分边界值分析方法 为模块设计测试用例
  • 可用工具度量一组测试用例对代码的覆盖度

参考阅读:MIT6.03103 代码大全第22章 软件工程-实践者的研究方法第17-18章

1 软件测试
什么是测试

测试:发现程序中的错误 提高程序正确性的信心

程序正确确认的基本方法:

  • 形式化推理
  • 代码评审
  • 测试

测试是提高软件质量的重要手段

  • 确认是否可达到可用的级别
  • 关注系统某一侧面的质量特性

  • 是否满足需求

  • 是否正确响应所有需求
  • 性能是否可接受
  • 是否可用
  • 可否正确部署安装
  • 是否达到期望
测试分类
  • 单元测试
  • 集成测试
  • 系统测试
  • 回归测试
  • 验收测试
白盒测试 黑盒测试

白盒测试:对程序内部代码结构的测试 只关注代码内部的问题

黑盒测试:对程序外部表现出来的行为的测试 采用两个方法

  • 等价划分
    将程序可能的输入进行分类 划分为不同集合 包括不合法数据
  • 边界值分析方法
    在各个集合中尽量去取用边界极限的测试用例

黑盒测试

测试困难
  • 软件行为在离散输入空间中差异巨大
    • 大多数正确 少数错误
    • bug出现不遵循特定概率分布
  • 无统计规律可循
2 测试用例

这一部分和其他部分联系紧密 不再赘述

3 测试优先编程

在编码之前写出测试 测试接口功能 测试方法正确性

Specification文档 需求

按照规定的语法编写注释 生成文档
Sepc

4 单元测试

针对软件的最小单元模型开展测试 隔离各个模块 容易定位错误和调试

  • 模型接口
  • 本地数据结构
  • 所有的正常输出
  • 边界条件
  • 所有的错误处理

第三章 ADT OOP

3.1 数据类型和类型检查

  • 动态 静态类型检查
  • 可变 不可变类型检查
  • 可变数据的危险性
  • 不变数据的优越性
  • 用snapshot图理解数据类型

软件构造理论基础–ADT
软件构造技术基础–OOP

参考阅读:MIT6.031 01 02 09 CMU15-214 02 Java编程思想第1-6章 11章

1 数据类型
数据类型
基本数据类型对象数据类型
int long byte short char
float double boolean
Classes interfaces
arrays enums annotations
只有值 无ID有值 有ID
不可变可变或不可变
在栈中分配空间在堆中分配空间
无法统一表达可以统一表达
代价低代价高昂
封装

把基本数据类型封装为对象类型 通常是在定义集合类型时使用它们

2 静态类型 动态类型

静态类型

  • 类型检查通常发生在编译阶段
  • 数据类型在定义后就确定 通常无法更改

动态语言

  • 在运行阶段检查
3 类型检查
三种检查策略
  • 静态类型检查
  • 动态类型检查
  • 不检查

折中

静态>动态>无检

静态类型检查

在编译阶段进行检查 避免将错误带入运行阶段 可提高程序正确性 健壮性

  • 语法错误
  • 类型错误
  • 参数数目错误
  • 函数名 类名错误
  • 返回值类型错误
动态类型检查
  • 非法参数值
  • 非法返回值
  • 越界
  • 空指针
易变性 永恒性
改变一个变量 和 改变它的值有什么区别
  • 改变一个变量 该变量指向另一个值得存储空间
  • 改变一个值 将变量指向的空间的值换成另一个值
不变性

不变数据类型 一旦建立 不能更改

例如final标签 尽量使用final作为方法的输入和局部变量

注意:

  • final类无法派生子类
  • final无法改变值 引用
  • final无法被子类重写

不变对象 和 可变对象

可变类型
可变类型
不可变类型
不可变类型

差异
差异

两种类型的效率上有差别

  • 不可变类型:频繁修改 需要垃圾回收
  • 可变类型:无需拷贝 效率高

但是不可变类型更加安全 其他质量指标表现更好

风险实例:

  • 1 改变源数据
    风险1
  • 2 返回可变类型
    风险2

稍后更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值