一、健壮性与正确性

1、健壮性

指一个系统不正常的输入或不正常的条件下仍然能够表现正常的程度。

面向健壮性的编程:可以处理未期望的行为和错误的终止;即使终止执行,也要展示错误信息;要假设用户是个白痴,可能有各种奇葩的输入。

原则:1、封闭实现细节,限定用户的恶意行为;2、考虑各种极端情况。

2、正确性

指程序按照规约执行的能力,是最重要的质量指标。

正确性确保程序永远不会给用户错误的结果,遇到错误情况直接报错退出;健壮性倾向于容错,遇到错误情况也要尽可能保持软件运行。

3、健壮性vs正确性

健壮性对用户友好,正确性对开发者友好。对外的接口要趋向于健壮(允许用户输入的开心),对内的实现要倾向于正确(利用checkRep、断言等)。

一些严格的程序倾向于选择正确性,即不返回结果比返回错误结果好;一些用户程序倾向于选择健壮性,返回一个结果比直接退出好。

对一些情况分别从健壮性和正确性角度去处理的一些例子:

二、度量

MTBF(平均故障间隔时间)、MTTF、残余缺陷率(每千行代码中遗留的bug数量)

三、本章目标

本章讲述不同阶段为了维护正确性和健壮性所做的事。

代码阶段:断言、异常、错误处理、防御式编程;

测试阶段:测试用例的设计、单元测试、黑白盒测试、测试优先;

debug阶段:定位诊断bug、打印跟踪日志。

6-1 健壮性与正确性相关推荐

  1. 软件构造-犯错的艺术——健壮性与正确性,异常,防御式编程,debugging与test的思考与总结...

    健壮性与正确性 健壮性与正确性是不同的--一个倾向于使程序尽可能保持运行,即使遇到错误,一个倾向于使程序尽可能正确,不在意保持运行 异常 异常分为两种--checked exception与unche ...

  2. 6-1健壮性与正确性

    本博客为哈工大计算机科学与技术学院大二软件构造课程的课件翻译.同时记录了部分本人上课时的学习笔记和感悟 该博客3700字左右,主题为6-2 错误与异常处理,基本更新完成 由于水平有限,翻译可能不是特别 ...

  3. 7.1 Robustness and Correctness健壮性与正确性

    7.1 Robustness and Correctness健壮性与正确性 1 什么是健壮性和正确性 2 怎么衡量健壮性和正确性 3 这章的目的 1.What are Robustness& ...

  4. 【软件构造】面向正确性和健壮性的软件构造小记

    本文介绍了面向正确性和健壮性的软件构造,介绍了健壮性和正确性,以及MTBF和MTTF,最后重点介绍了Error和Exception 文章目录 一.什么是健壮性和正确性? 1.健壮性 2.正确性 3.正 ...

  5. 正确性、健壮性、可靠性、效率、易用性、可读性(可理解性)、可扩展性、可复 用性、兼容性、可移植性

    现在国内IT 企业拥有学士.硕士.博士文凭的软件开发人员比比皆是,但他们在接 受大学教育时就"先天不足",岂能一到企业就突然实现质的飞跃.试问有多少软件开发 人员对正确性.健壮性. ...

  6. Robustness(健壮性)和 Correctness(正确性)

    Robustness & Correctness? 1.健壮性 (1)定义:健壮性,系统在不正常输入或不正常外部环境下仍能够表现正常的程度 (2)面向健壮性的编程 : a. 处理未期望的行为和 ...

  7. 第七章软件结构的健壮性——测试与测试优先编程

    1. 软件测试(Software Test) 测试:发现程序中的错误,提高程序正确性的信心. 程序确认的基本方法: 形式化推理(Formal reasoning) 代码评审(Code review) ...

  8. 2021-11-24系统健壮性

    目录 代码评审 烂代码 健壮性和鲁棒性 构建健壮性系统 负载均衡 容灾能力 数据健壮性 代码健壮性 失败的架构思维 混沌工程 代码评审 烂代码 人的视角 维护者脏话的频率高.维护者脏话的类型丰富.存在 ...

  9. 功能测试、健壮性测试

    功能测试.即测试软件系统的功能是否正确,其依据是需求文档,如<产品需求规格说明书>.由于正确性是软件最重要的质量因素,所以功能测试必不可少. 健壮性测试.即测试软件系统在异常情况下能否正常 ...

最新文章

  1. c语言课程设计链表 文件,C语言课程设计第三节课:指针和链表使用     150809205...
  2. vb计算机考试试题及答案,计算机二级考试《VB》操作试题及答案2016
  3. Android-源代码分析
  4. Keepalived配置日志文件
  5. python怎么设置函数超时时间_在python运行时为函数设置超时秒数
  6. [故障引起的故事]URL中带加号(+)的处理
  7. 启明云端分享| IDO-SOM2D01-V1-2GW核心板SPI调试总结
  8. C和指针之函数之把数字字符串转为整数并且返回这个数字(ascii_to_integer)
  9. html5 a-z字母排序,vue.js或js实现中文A-Z排序的方法
  10. RTT Nano+STM32F407ZGT6+LAN8720A+LWIP+CubeMX+MDK
  11. 2019女性开发者报告:3成16岁就会编程、JS/Python成女性掌握最多语言
  12. 阿里超大规模 Flink 集群运维体系介绍
  13. opengl大作业c语言,openGL-计算机图形大作业中出现的几个错误及解决
  14. Java SSH框架学习
  15. 异速联:解决打印样式个性化设置
  16. 2021西工大计算机专硕,计算机专硕2021考研形势分析,考研小白戳
  17. 【校招实习面试实战,身临其境】华为软件开发工程师面试复盘总结
  18. ChatGPT注册全流程
  19. 文本语义表征(Sentence-Bert、Simcse)的应用和实践
  20. 企业邮箱哪家最优惠?企业邮箱最优惠价格来了

热门文章

  1. (转)初识suse——linux
  2. JavaScript跨域脚本调用(iframe方式)
  3. Word 模板 - 新建向导
  4. 关于FP Spread for Web Forms 2.0.0.0
  5. 并发编程(4)同步并发操作
  6. day10-Python学习笔记(二十三)线程池,unittest参数化,协程
  7. dubbo与zookeeper的关系
  8. Java面向对象-抽象类
  9. webApp 开发技术要点总结
  10. 富文本 NSAttributedString