6-1 健壮性与正确性
一、健壮性与正确性
1、健壮性
指一个系统不正常的输入或不正常的条件下仍然能够表现正常的程度。
面向健壮性的编程:可以处理未期望的行为和错误的终止;即使终止执行,也要展示错误信息;要假设用户是个白痴,可能有各种奇葩的输入。
原则:1、封闭实现细节,限定用户的恶意行为;2、考虑各种极端情况。
2、正确性
指程序按照规约执行的能力,是最重要的质量指标。
正确性确保程序永远不会给用户错误的结果,遇到错误情况直接报错退出;健壮性倾向于容错,遇到错误情况也要尽可能保持软件运行。
3、健壮性vs正确性
健壮性对用户友好,正确性对开发者友好。对外的接口要趋向于健壮(允许用户输入的开心),对内的实现要倾向于正确(利用checkRep、断言等)。
一些严格的程序倾向于选择正确性,即不返回结果比返回错误结果好;一些用户程序倾向于选择健壮性,返回一个结果比直接退出好。
对一些情况分别从健壮性和正确性角度去处理的一些例子:
二、度量
MTBF(平均故障间隔时间)、MTTF、残余缺陷率(每千行代码中遗留的bug数量)
三、本章目标
本章讲述不同阶段为了维护正确性和健壮性所做的事。
代码阶段:断言、异常、错误处理、防御式编程;
测试阶段:测试用例的设计、单元测试、黑白盒测试、测试优先;
debug阶段:定位诊断bug、打印跟踪日志。