<读书笔记>软件调试之道 :从大局看调试-理想的调试环境
声明:本文档的内容主要来源于书籍《软件调试修炼之道》作者Paul Butcher,属于读书笔记。欢迎转载!
-----------------------------------------------------------------------------------------------------
自动化测试
1.有效的自动化测试
- 明确说明测试结果是否通过
- 不需要安装、测试后也能够撤销对环境所做的任何修改
- 单击运行所有的测试
- 全面覆盖,做到足够解决完全覆盖是可能的
2. 自动化测试可以作为调试的辅助
- 经过自动化测试的代码往往只有很少缺陷,容易修复,并且让你自信发布的软件可以正确运行。
- 可以防止引入回归
3.模拟测试、桩测试以及其他的代替测试技术
- 桩测试是被动的,模拟测试是主动的。
- 试图可靠的重现缺陷时,代替测试时非常有用的
版本管理系统
源码控制系统是除了编译器外你能使用的最重要工具了!
- 稳定性
通过创建分支,保持主干版本的稳定性
- 可维护性
创建分支单独在主干发布版本上进行维护和修复。
- 控制分支
分支往往消耗大量的时间、经理,因此要加以控制和合理利用。
静态分析
事实证明,很多缺陷可以仅仅通过静态检查源码就可以发现,静态分析可以集成到开发流程中,在代码未运行前就发现问题。
- 利用好编译器
现代编译器具备一系列的警告信息,比如keil编译时就会提示很多警告信息,要把警告当错误处理,消除警告。 利用在C程序中,可以利用lint发现缺陷
- 把静态分析工具和开发工具集成
lint可以集成到keil中,有专用文档介绍集成方法。
<读书笔记>软件调试之道 :从大局看调试-理想的调试环境的更多相关文章
- <读书笔记>软件调试之道 :从大局看调试-零容忍策略
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! ---------------------------------------- ...
- <读书笔记>软件调试之道 :从大局看调试-发现代码存在问题
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! ---------------------------------------- ...
- <读书笔记>软件调试之道 :问题的核心-修复后的反思
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! ---------------------------------------- ...
- <读书笔记>软件调试之道 :问题的核心-如何修复缺陷
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! 修复缺陷 对于一个好的修复来说,不仅仅是让软件运行正确,还需要为将来奠定基础.一 ...
- <读书笔记>软件调试之道 :问题的核心-诊断
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记. 不要急于动手! 尽管可以利用各种工具和技术以及软件自身查找缺陷,但是你最重要的财富是你的智 ...
- <读书笔记>软件调试之道 :问题的核心-重现问题
声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记. 重现第一,提问第二 问题重现是实证过程的最强大武器,如果不能重现问题,你也无法证明修复了它 ...
- <读书笔记> 代码整洁之道
概述 1.本文档的内容主要来源于书籍<代码整洁之道>作者Robert C.Martin,属于读书笔记. 2.软件质量,不仅依赖于架构和项目管理,而且与代码质量紧密相关,本书提出一 ...
- <读书笔记>软件调试之道 :实证方法
有效调试不仅仅是排除缺陷,其包含如下几个步骤 弄明白软件为何运行错误 修复这个问题 避免破坏其它部分 保持或者提高代码的总体质量 确保同样的问题不在其它地方发生,也不会再次发生 构建实验.观察结果 依 ...
- 【读书笔记】UEFI原理与编程(1)概述及开发环境的搭建
一.概述: 0.为什么会有这篇文章 说实在的,在2016初的时候,我就萌生了写一个操作系统的念头,但是这对于我一个菜鸟来说,犹如登天. 既然想了就去写,即使最后做不完,也不后悔. 抱着这样的念头,我开 ...
随机推荐
- jffs2文件系统制作
内核: linux-3.0 uboot: 2010.09 开发板: fl2440 交叉编译器: 2011. ...
- Unity中Instantiate一个prefab时需要注意的问题
在调用Instantiate()方法使用prefab创建对象时,接收Instantiate()方法返回值的变量类型必须和声明prefab变量的类型一致,否则接收变量的值会为null. 比如说,我在 ...
- 空的安卓工程添加activity
1.编写类继承activity,并重写onCreate方法 package org.tonny; import android.app.Activity; import android.os.Bund ...
- 改进:js修改iOS微信浏览器的title
问题简介 前端入门没多久,可能连入门也不算,最近网上流行各自书籍改名,什么<前端开发,从入门到放弃>,<Android开发,从入门到改行>之类的,程序员真是个爱自嘲的群体,但我 ...
- Linux系统安装之U盘引导
折腾了一天,终于把系统安装上去了,心里那个苦啊. 参考:http://blog.csdn.net/avilifans/article/details/13768139 安装步骤如下: 第一步:Ultr ...
- linux 持续构建(自动部署) 重启动tomcat或进程的脚本
#!/bin/sh TOMCAT_PATH=`dirname "$0"` echo "TOMCAT_PATH is /usr/local/tomcat" PID ...
- mysql.my.cnf
[client]port = 3306socket = /tmp/mysql.sock [mysqld]port = 3306socket = /tmp/mysql.sock basedir = /u ...
- nginx-my
#user nobody; 3 worker_processes 1; 4 5 error_log logs/error.log; 6 #error_log logs/error.log notice ...
- 坑的可以呀re
.findall() 直接匹配字母和数字 元字符:. ^ $ * + ? {} [] () \ import re print(re.findall("alex"," ...
- Python导入自定义包或模块
一般我们会将自己写的 Python 模块与 Python 自带的模块分开存放以达到便于维护的目的. Python 运行环境在查找模块时是对 sys.path 列表进行遍历,如果我们想在运行环境中添加自 ...