读书记录W2

在过去的两周中,我抽空读完了邹欣老师的《构建之法》第二章 个人技术和流程。在前一章中,大多是关于软件工程这门学科的基本概念与介绍,而在这一章内容则是介绍软件开发过程中的必要测试和流程。由于邹老师举例用的C#语言并没有学过,在阅读这章内容中,带给我不少麻烦。

绝大部分软件都是由多人合作完成的,大家的工作互相有依赖关系。单元测试是一种可以让自己负责的模块功能定义尽量明确,使得模块内部的改变不会影响其他模块,而且模块的质量可以得到稳定的、量化的保证。

“// TODO:”一般这样的备注是程序员提醒自己待办事项,相当于备忘录一样的东西。管理设置文件必须双击设置文件才能进入管理及设置界面。进入设置界面后,可以让单元测试产生“demouser.dll”的代码覆盖报告。

创建单元测试函数的主要步骤是:

1.设置数据(一个假想的正确的E-mail地址)

2.使用被测试类型的功能(用E-mail地址来创建一个User类的实体)

3.比较实际结果和预期的结果(Assert.IsTrue(target!=null);)

单元测试应该准确、快速地保证程序基本模块的正确性。验证其好坏有一系列标准:单元测试应该在最基本的功能/参数上验证程序的正确性;

单元测试必须由最熟悉代码的人(程序的作者)来写;

单元测试过后,机器状态保持不变;

单元测试要快(一个测试的运行时间是几秒钟,而不是几分钟)

单元测试应该产生可重复,一致的结果。

独立性——单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。

单元测试应该覆盖所有的代码路径。(100%的代码覆盖率不等同于100%的正确性)

单元测试应该集成到自动测试的框架中。

单元测试必须和产品代码一起保存和维护。

基于单元测试的知识,还有个“回归测试”,即验证在软件升级后,过去正常的地方有没有退化为不正常的状态。这个环节一般在软件开发完毕或新版本升级后的测试阶段,目的就是减少bug的出现。尤其像微软,在一个项目的最后稳定阶段,要进行全面的测试工作,把过去的bug都拿出来测试。

除此之外,有个效能分析工具,即让自己的程序跑的比别人的又快又好。分析方法分两种:抽样(运行快,不精确)和代码注入(时间长)。一般的做法是,先用抽样的方法找到效能的瓶颈,然后对特定的模块用代码注入的方法进行详细分析。如果不经分析就盲目优化,也许会事倍功半。

个人开发流程(PSP)是针对软件工程师团队能力成熟度的一套模型。他每个版本对程序员有更多的要求,其依赖数据,需要大量的时间和精力。PSP的目的是记录工程师如何实现需求的效率,而不是顾客对产品的满意度。

虽然看懂了本章内容中关于单元测试、回归测试、效能分析工具及个人开发流程(PSP)中的基本概念,但由于对C#语言的一知半解,没看懂本章内容中的举例语句,并不能亲身体验下测试,等以后学会了,再学习测试吧。

时间: 2024-10-14 22:04:18

读书记录W2的相关文章

【Swift学习笔记-《PRODUCT》读书记录-CoreData数据存储】

<PRODUCT>中小记记录的文字信息,都是使用CoreData存储在本地的.下面将详细介绍,如何在xcode8中使用CoreData. 首先新建一个数据模型文件Diary.Xcatamodeld文件,如图: 选中这个数据库文件,右边可以给这个表增加属性字段 完成后,选中该文件,点击Editor菜单中的,"Ctreate NSManageObject Subclass"导出生成NSManagedObject 然后再对数据库文件做初始化,在appdelegate中创建mana

《C和指针》读书记录

2015年4月23日 星期四 第3章  数据 基本数据类型,整型,浮点型,指针,聚合类型 基本声明,  初始化声明,数组声明,声明指针,隐式声明 typedef与#define区别 常量,指针常量,常量指针 作用域,4类,文件作用域,函数作用域,代码作用域,原型作用域 连接属性,3种,内部,外部,无 存储类型,普通内存,运行时堆栈,硬件寄存器 static关键字 作用域+存储类型 第4章  语句 空语句,分号 表达式语句,x=y+3;a++; 代码块,{} if语句,if(exp){} whil

《C++ Primer》读书记录五

2015年6月9日  星期二 22:09 第五部分  高级主题 第17章~第18章 第17章 用于大型程序的工具 异常处理,C++的异常处理中,需要由问题检测部分抛出一个对象给处理代码,通过这个对象的类型和内容,两个部分能够就出现了什么错误进行通信 抛出类类型的异常,异常是通过throw对象而引发raise的.该对象的类型决定应该激活那个处理代码.被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位最近的那个.抛出指针通常是个坏主意,抛出指针要求在对于处理代码存在的任意地方存在指针所指向的对

《C++ Primer》读书记录

2015年5月11日 星期一 19:59 第1章 快速入门 第一部分 基本语言 第2章~第8章 第2章 变量和基本类型 基本内置类型,整型(整数,字符和布尔值),浮点型(float,double,long double),有符号/无符号类型 字面值常量 变量,左值和右值 变量名,定义对象,变量初始化规则 声明和定义 名字的作用域 const限定符,只读类型,而不是英文单词常量的意思. 引用,引用和指针的区别? typedef 枚举 类类型 第3章 标准库类型 命名空间的using声明 标准库st

《C专家编程》读书记录

其实,这本书适合没事的时候翻翻,随便打开哪一页,应该都可以看下去的.总体来说,写的比较欢脱,不像<C和指针>和<C陷阱和缺陷>的章节标题那么严肃,有时候还以为自己在看科技杂志.不过,理解书里面的内容反而需要有较高的C语言基础,内容结构比较松散,如果觉得没有逻辑性,可能是语言基础还掌握的不够. 比较喜欢第1章关于C语言的介绍,前世今生什么的. 2015年5月1日  星期五 天气 雨 第1章  C:穿越时空的迷雾 C语言的史前阶段:BCPL->B->New B->早期

读书记录

2016年读过: <明朝那些事儿> <创业维艰> <从0到1> <支付战争> <基督山伯爵> 2016年计划: <思考,快与慢> <宏观经济学> <微观经济学> <乌合之众> <浪潮之巅> <格鲁夫给经理人的第一课> <娱乐至死> <消费者行为> <失控> <长尾理论> <游戏改变世界> <认知盈余> &

2016读书记录

2016-05-03 实战LINUX SHELL编程与服务器管理    144页 2016-05-04 实战LINUX SHELL编程与服务器管理    172页

Head First设计模式读书记录

这本书读起来很有意思,插图很多,对话形式的内容,让人很有代入感. 第1章  设计模式入门 主要通过一个鸭子的例子向读者说明了设计模式的思想,提到了三个设计原则. 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起 针对接口编程,而不是针对实现编程 多用组合,少用继承(组合有更大的弹性,可以运行时动态改变行为) 第一个设计模式:策略模式定义了算法簇,分别封装起来,让他们之间可以相互替换,此模式让算法的变化独立于使用算法的用户. 第2章 观察者模式

《C++ Primer》读书记录二

第二部分 容器和算法  第9章~第11章 2015年5月13日  星期三 第9章 顺序容器 sequential contai顺序容器的定义 vector<string> svec; list<int> ilist; deque<double> ddeq; 容器元素的初始化,将一个容器初始化为另一个容器的副本,初始化为一段元素的副本,分配和初始化指定数目的元素 容器内元素的类型约束:元素必须支持赋值运算,元素类型的对象必须可以赋值.事实上,除了输入输出标注库类型外,其他