《Code Complete》ch.22 开发者测试】的更多相关文章

WHAT? 单元测试(Unit Testing):是将一个程序员或一个开发团队所编写的,一个完整的类.子程序或者小程序,从完整的系统中隔离出来进行测试 组件测试(Component Testing):是将一个类.包.小程序或者其他程序元素,从一个更加完整的系统中隔离出来进行测试,这些被测试代码涉及到多个人或多个团队 集成测试(Integration Testing):是对两个或更多的类.包.组件或者子系统进行的联合测试,这种测试通常在有了两个可以进行测试的类的时候就应该尽快开始,并且持续到整个项…
软件的构建的主要流程: 定义问题 ( Problem Definition) 需求分析 (Requirements Development) 规划构建 (construction planning) 软件架构 (software architecture), 或高层设计(high-level design) 详细设计 (detailed design) 编码与调试 (coding and debugging) 单元测试 (unit testing) 集成测试 (integration testi…
最近在看code complete,学习了一些东西,作为点滴,记录下来. 关于类: 类的接口抽象应该一致 类的接口要可编程,不要对类的使用者做过多的假设.不要出现类似于:A的输入量一定要大于多少小于多少,一定要在某个函数前call之类的限制,而应该在assert等地方加入这些判断,让代码去做限制,而不是注释. 代码阅读的次数要比写的次数多得多 类的成员变量表征类拥有怎样一个属性 类的继承表征类还可以有另一个特殊的版本 类用到的其他类的次数叫做扇入(fan in),越少越好 要在构造函数中对所有的…
重读code complete 说说代码质量 2014年的第一篇文章本来计划写些过去一年的总结和新年展望,但是因为还有一些事情要过一阵才能完成,所以姑且不谈这个,说说最近重读code complete 的收获吧. 记得第一次读code complete 还是刚毕业的时候,身边好多朋友极力向我推荐此书,于是我就买了一本读起来,可能是当时功力不够,读起来总是觉得没啥味道,而且极为枯燥,总觉得不如<深入浅出MFC>,<CLR Var C#>,<Windows Internals&g…
2013-07-18 21:35:58 getchar()函数的返回值赋给char型,用if(ch=getchar() != EOF)测试,输入ctrl+z同样可以结束循环的分析. char是字符型数据,如果以为0~255共256个字符,但如果赋给char负数,会怎样? 如果将char强制转换为int型,结果又会怎样? 需要清楚一点,在计算机中,不管数据类型是char.int.long.double等,数据都是按照二进制的方式存储的,一般是以补码的形式存储的,这可以通过单步跟踪进行观察验证.ch…
Code Complete 读后总结和新的扩展阅读计划 用了一年时间终于将代码大全读完了,在这里做一个简单的总结,并安排下一阶段的扩展阅读计划. 1.选择代码大全作为我程序员职业入门的第一本书,我认为是很正确的.这本书语言生动,擅于用隐喻说明深刻的编程原理,虽然并不是写给新手看的,但作为一个新手,我依然从中学到了很多.    2.这本书有很多一针见血的论述:设计是一个启发式过程:编程的最大难题是解决其复杂性:要深入一种语言编程而不是在一种语言上编程,等等.    3.实践是这本书的核心,它提供了…
WHAT? 所有的协同构建技术都试图通过这样那样的途径,将展示工作的过程正式化,以便将错误暴露出来 WHY? 提高缺陷检出率,从而缩短开发周期,降低开发成本 发现不明显的错误信息,如不恰当的注释.硬编码的变量值.重复出现需要统一的代码模式——这些是测试所发现不了的 让人们知道他们的代码将要被复查,这样他们会小心谨慎检查自己的工作 提供技术交流平台,提升开发者水平 HOW? 结对编程 用编码规范来支撑编程 不要让结对编程变成旁观 不要强迫在简单的问题上使用结对编程 有规律地对结对人员和分配的工作任…
WHAT? 重构(refactoring),Martin Fowler将其定义为“在不改变软件外部行为的前提下,对其内部结构进行改变,使之更容易理解并便于修改”. WHY? 神话:一个管理很完善的软件项目,应该首先以系统化的方法进行需求开发,定义一份严谨的列表来描述程序的功能.设计完全遵循需求,并且完成的相当仔细,这样就让程序员的代码编写工作从头到尾直线型地工作.表明绝大多数代码首次编写后就已完美,测试通过即可被抛诸脑后.代码被修改的惟一时机发生在交付使用后在新版本进行功能的添加 现实:在初始开…
WHAT? 调试——发现错误的一种手段 WHY? 相对于不善于调试的程序员,善于调试的程序员只需要前者1/20的时间就可以找出问题所在 HOW? 科学的调试方法 把错误的发生稳定下来:假设-证实/证伪 确定错误原因:二分法 同他人讨论问题 忏悔式调试 抛开问题,休息一下 修正问题 动手之前先要理解问题 理解程序本身,而不仅仅是问题 验证对错误的分析 放松一下 治本,而不是治标 修改代码时一定要有正确的理由:不要随机地修改代码,在没有理解代码时对她做的改动越大,你对她能正确工作的信息就越低 检查自…
WHAT? 集成是这样一种软件开发行为:将一些独立的软件组合为一个完整的系统. WHY? 更容易诊断缺陷 尽早获得一个可工作的产品 更好的顾客关系 增强士气 更可靠地估计进度表 更准确的现状报告 HOW? 集成的两种方式 阶段式集成(爆炸集成) 增量集成(滚雪球集成) 增量集成的策略 自顶向下(Top-Down):使用底层stub类,逐渐替换为实际的类.若底层接口实现起来有bug,或者有性能问题,会导致顶层设计变更 自底向上(Bottom-Up):“让底层细节驱动高层类的设计”违反了信息隐藏原则…