软件构造-7

健壮性和正确性

 

健壮性:系统在不正常输入或不正常外部环境下仍能够表现正常的程度,处理未期望的行为和错误终止。即使终止执行,也要准确/无歧义的向用户展示全面的错误信息

 

正确性:按照spec加以执行的能力。用户输入错误时,直接结束

 

测量健壮性和正确性的方法:

  1. 外部观察角度:Mean time between failures (MTBF,平均失效间隔时间):描述了可修复系统的两次故障之间的预期时间,而平均故障时间(MTTF)表示不可修复系统的预期故障时间。
  2. 内部观察角度:残余缺陷率:每千行代码中遗留的bug的数量

 

Throwable

Throwable是所有异常和错误的父类

 

异常(Exception):你自己程序导致的问题,可以捕获、可以处理。使我们可以处理的东西,可以有异常处理程序,若找不到异常处理程序那么整个系统就完全退出

Runtime异常,其他的异常都是checked

 

Ckecked异常和unchecked的异常

checked异常的处理机制:

——抛出:声明是throws,抛出时throw    

——捕获(try/catch):try出现异常,忽略后面代码直接进入catch;无异常不进入catch;若catch中没有匹配的异常处理,程序退出;若子类重写了父类方法,父类方法没有抛出异常,子类应自己处理全部异常而不再传播;子类从父类继承的方法不能增加或更改异常

——处理:不能代替简单的测试,尽量苛刻、不过分细化、将正常处理与异常处理分开、利用好层次结构、早抛出晚捕获、避免不必要的检查

——清理现场、释放资源(finally):finally中语句不论有无异常都执行,一定会执行除了finally语句块中有异常、或者程序所在线程死亡、或者程序提前exit结束。

unchecked异常:不需要try-catch,因为无法解决

 

断言的作用,应用场合

断言:在开发阶段的代码中嵌入,检验某些“假设”是否成立。若成立,表明程序运行正常,否则表明存在错误(在实际运行时不会影响性能)

断言的作用:断言主要用来处理绝对不可能发生的情况,比如指针为空 、子程序开始执行(结束)时,文件或流处于打开(关闭)状态、子程序开始执行(结束)时,文件或流的读写位置处于开头(结尾)

 

测试:

白盒测试:对程序内部代码的测试

黑盒测试:对程序外部表现出来行为的测试

——等价划分 :将程序可能的输入进行分类划分为不同集合包括不合法数据,基于等价类划分的测试:将被测函数的输入域划分为等价类,从等价类中导出测试用例。(比如正数,0,负数)

等价类划分可有两种不同的情况:有效等价类和无效等价类。

若一组对象自反、对称、传递,则为等价类

可产生相似结果的输入集合中的一个可代替整个集合

同理,对输出也可以划分等价类

极端:每个分区只有一个测试用例,覆盖所有分区

——边界值分析方法  :边界值分析法是对输入输出的边界值进行测试一种黑盒测试方法,是对等价类分析法的补充。

错误通常隐藏在边界中,如一位偏移、边界值需单独处理等

找到有效数据和无效数据的分界点(最大值、最小值),对该分界点以及两边的值分别单独进行测试。

 

等价类划分法可以挑选等价类范围内任意一个数据作为代表,而边界值分析法要求每个边界值都要作为测试条件。

 

代码测试覆盖度

类型:函数覆盖,分支覆盖,路径覆盖,语句覆盖,条件覆盖

测试效果./难度:路径覆盖>分支覆盖>语句覆盖

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值