HIT软件构造期末复习笔记第2,12章

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

·黑盒测试:对程序外部表现出来的行为进行测试;用于检查代码的功能,不关注内部的实现细节——检查是否符合规约
等价类划分:针对每个输入数据需要满足的约束条件,划分等价类;从等价类中导出测试用例
边界值分析:对等价类划分的一个补充(在等价类划分时将边界值作为等价类之一加入考虑)
测试用例:输入+执行条件+期望结果

·测试覆盖度:
(1)笛卡尔积:全覆盖
(2)每个维度的每个取值至少被一个测试用例覆盖一次即可
代码覆盖度:
函数覆盖、语句覆盖、分支覆盖、条件覆盖、路径覆盖
覆盖度标准(100%语句覆盖,90%路径覆盖)

·以注释的形式撰写测试策略:
在这里插入图片描述

·TDD:
(1)先写spec (2)再写符合spec的测试用例 (3)写代码、执行测试、有问题再改、再执行测试用例,直到通过它
·Junit assert xxx:
在这里插入图片描述

第十二讲: 面向正确性与健壮性的软件构造

·健壮性:系统在不正常输入或不正常外部环境下仍能够表现正常的程度——倾向于容错
·正确性:程序按照spec加以执行的能力(最重要的质量指标)——倾向于直接报错
可靠性 = 健壮性 + 正确性

·Error/Runtime异常
在这里插入图片描述

Error:内部错误,一旦发生,想办法让程序优雅的结束
Exception:异常:自己程序导致的问题,可以捕获,可以处理
(1)将错误信息传递给上层调用者,并报告“案发现场”的信息
(2)Return外的第二种退出途径
(3)若找不到异常处理程序,整个系统完全退出
(4)分为运行时异常和其他异常
运行时异常:程序员在代码中处理不当造成,可避免
其他异常:由外部原因造成,无法完全避免

·Checked异常,Unchecked异常
在这里插入图片描述

Checked异常:必须捕获并指定错误处理器handle,否则编译无法通过
在这里插入图片描述
在这里插入图片描述

·Checked异常处理机制
(1)使用throws声明异常
在这里插入图片描述

方法应throws的异常:
该方法调用的其他函数抛出的checked exception
当前方法检测并使用throws抛出的checked exception
若无handler来处理抛出的checked exception,程序就终止执行
在这里插入图片描述

(2)使用throw抛出异常:
1.找到一个能表达错误的Exception类/或者构造出一个新的Exception类
2.构造Exception类的一个实例,将错误信息写入
3.抛出错误(throw)
在这里插入图片描述

4.一旦抛出异常,方法不会再将控制权返回给调用它的client,因此也无需考虑返回错误代码

·自定义异常类
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Finally关键字:无论程序是否碰到异常,finally关键字都将被执行
在这里插入图片描述

·断言
在开发阶段的代码中嵌入,检验某些假设是否成立。若成立则表明程序运行正常,否则表明存在错误
断言即是对代码中程序员所做的假设的文档化,不会影响程序的性能
形式:
在这里插入图片描述

所构造的message将在发生错误时显示给用户,便于快速发现错误所在;实际运行阶段,不再使用断言!
出现AssertionError即表示内部某些假设被违反了
在这里插入图片描述

可使用assert的情况:
内部不变量、表示不变量、控制流不变量(switch-case)、方法的前置、后置条件
断言只检查程序内部的状态是否符合规约,断言一旦false,程序就停止执行,外部错误(不受自己控制)要使用Exception机制去处理

·防御式编程的基本思路:
(1)最好的防御就是不要引入bug
(2)若无法避免,则将bug限制在最小范围内;限定在一个方法内部,不扩散
(3)Fail fast

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值