【软件构造】课程提纲5

第七章

  1. 健壮性和正确性

(1)健壮性:处理各类情况的能力

(2)正确性:正确实现规格说明的能力

(3)测量:平均故障间隔时间(MTBF)、残余缺陷率(软件发布后留下的bug)

  1. Throwable:有两个子类,即error和exception

(1)error:程序无法处理的错误,通常是JVM的问题,不需要catch

·处理策略:预先阻止、错误中恢复、优雅地退出

·处理方式

– 返回中立值

– 替换下一个有效数据

– 返回与前一次相同的答案

– 代替最接近的法律价值

– 将警告消息记录到文件

– 返回错误代码:设置状态值 -> 返回状态值 -> 利用异常机制

– 调用一个错误处理例程/对象

– 显示错误信息

– 在本地处理错误

– 关掉程序

(2)exception:程序自身可以处理,代码可以通过异常机制将错误或异常事件传递给调用它的代码,Java无法以正常方式完成其任务时允许每种方法都有一个替代退出路径

  1. Runtime 异常、其他异常

(1)Runtime异常:程序员自己的错误,如空指针、数组越界、类型转换等

(2)其他异常:通常为IOE异常,即找不到文件路径等

  1. Checked 异常、Unchecked 异常

(1)Checked 异常:每个调用者都应知道并处理的错误

·处理机制

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

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

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

– 清理现场、释放资源(finally):finally中语句不论有无异常都执行

(2)Unchecked 异常:JVM抛出,如空指针、数组越界、数据格式、不合法的参数、不合法的状态、找不到类等

  1. 自定义异常类:继承自Exception,在构造函数中可通过super(key)修改默认值

  2. 断言

(1)作用:允许程序在运行时检查自己,测试有关程序逻辑的假设,如前置条件、后置条件、不变量等,可将黑盒测试转换为白盒测试

(2)应用场合

·输入/输出参数落在预期范围内

·程序运行/结束时文件流的打开和关闭

·程序开始(结束)时文件处于开始(结束)

·文件流以只读、只写或读写方式打开

·输入变量的值不被方法改变

·判断指针不是空值

·判断数据结构是否是指定长度

·判断真值表是否初始化

·当一个方法开始执行时(或完成时)容器是空的(或满的)

·高度优化的复杂方法的结果与较慢但清晰编写的例程的结果相匹配

(3)注意

·编译时加入-ea选项运行断言,-da关闭断言

·条件语句或开关没有涵盖所有可能的情况,最好使用断言来阻止非法事件

·可以在预计正常情况下程序不会到达的地方放置断言:assert false

·在开发和调试阶段设置断言,在软件发布时禁止断言

·断言有代价,需慎用,一般用于验证正确性,处理绝不应该发生的情况

·不能作为公共方法的检查,也不能有边界效应

  1. 调试(Debugging)

(1)进攻式编程:在开发阶段让异常显现出来,而在产品运行时让其自我恢复

·产品版与开发版:开发版只要开发顺利可以放肆一些,产品版必须克制

【软件构造】课程提纲5

(2)在每个测试方法前说明测试用例是如何选择的

【软件构造】课程提纲5
  1. JUnit 测试用例写法

(1)@Before:每个测试方法前执行一次

(2)@After:每个测试方法后执行一次

(3)@Test:表明测试方法,内含Assert语句

·@Test(expected=*.class):对错误的测试,expected的属性值是一个异常

·@Test(timeout=xxx):测试方法在制定的时间之内没有运行完则失败

(4)@ignore:忽略测试方法

  1. 测试覆盖度

(1)通常无法完全覆盖,因此只需尽量提高

(2)代码覆盖率高的程序在测试期间执行了更多的源代码,与低代码覆盖率的程序相比,包含未检测到的软件错误的可能性较低

(3)基本覆盖标准:函数、语句、决策或分支、条件或谓词、路径

(4)覆盖强度:路径 > 分支 > 语句

来源:毫无天赋的菜鸡

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年5月20日
下一篇 2019年5月20日

相关推荐