读构建之法第二章:个人技术和流程

author author     2022-08-28     650

关键词:

绝大部分软件都是由多人合作完成的,大家的工作相互有依赖关系。某人负责的模块的功能被其他人调用,但如何让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证???单元测试就是一个很有效的解决方案。

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

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

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

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

创建完就可以运行单元测试了,同时可以看看代码覆盖报告,代码百分百地都被覆盖了。

 

怎样才算一个好的单元测试呢单元测试应该准确、快速地保证程序基本模块的正确性

验证单元测试好坏的一系列标准:

1.单元测试应该在最基本的功能、参数上验证程序的正确性;

2.单元测试必须由最熟悉代码的人(程序的作者)来写;最好是在设计的时候就写好单元测试,这样单元测试就能体现API的语义,保障语义的准确性。

3.单元测试过后,机器状态保持不变;这样就能不断地运行单元测试

4.单元测试要快(一个测试的运行时间是几秒钟,而不是几分钟);快才能保证效率

5.单元测试应该产生可重复、一致的结果;

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

7.单元测试应该覆盖所有代码路径,包括错误处理路径;(要注意:100%的代码覆盖率并不等同于100%的正确性

8.单元测试应该集成到自动测试的框架中;把单元测试自动化,这样每个人都能随时随地运行单元测试。

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

在单元测试的基础上,建立关于这一模块的回归测试(Regression Test)

针对一个Bug Fix,我们也要做Regression Test。目的是1.验证新的代码的确改正了缺陷 2.同时要验证新的代码有没有破坏模块的现有功能,有没有Regression

回归测试中的回归可以将其理解为“回归到以前不正常的状态”

回归测试最好要自动化,这样就可以对于每一个构建快速运行所有回归测试,以保证尽早发现问题。

VSTS提供了方便的效能分析工具,让我们能很快地找到程序的效能瓶颈,从而能有的放矢,改进程序。

效能分析可以选择两种分析方法:

1.抽样(Sampling)优点:不需改动程序,运行较快,可以很快找到瓶颈,缺点:不能得出精确的数据,也不能准确表示代码中的调用关系树

2.代码注入(Instrumentation)缺点是程序的运行时间会大大加长,还会产生很大的数据文件,相应的增加了数据分析的时间,同时注入的代码也影响了程序真实的运行情况。

一般的做法是先用抽样的方法找到效能瓶颈所在,然后对待定的模块用代码注入的方法进行详细分析。

看个人项目耗时对比记录表,显然,从学生到职业程序员,并不是更加没完没了的写程序——花在写代码上的时间反而少了许多。

实践是理论的基础和验证标准

实践最简单的项目:WC,根据书上项目要求,实现一个统计程序

如何保证质量——回归测试

如何为这个程序做有效的测试,有以下几种方法,自动化程序由低到高。

1.手动测试,手工比较

2.要做到不断地测试,可以把WC的主要功能封装成一个类,然后测试程序员调用这一个类的主要函数,得出结果并与标准作比较。

3.更进一步,比较测试的输出和标注结果

4.再进一步,把自动构建脚本和构建验证测试结合起来。记录出现的bug。

我看完认为第二章主要讲的是 在设计的时候就写好单元测试,保证程序基本模块的正确性;在单元测试的基础上,建立模块的回归测试,保证之前所有已经发现并修复的bug的确得到了修复,并没有在最后一个版本中复发,才能保证尽早发现问题。还有对程序的效能分析,提高效能,优化程序。

 

构建之法第二章个人技术和流程

这一章重点介绍的是以前了解过但未曾注重过的单元测试&回归测试;个人技术素养是团队协作的基础。1.VSTS单元测试源代码publicClassUser(){publicUser(stringuserEmail){memail=userEmail;}privatestringmemail;//private变量拒绝外部类访问(除非用g... 查看详情

构建之法(第二章个人技术和流程)

在第二章的学习之中,了解到第二章主要讲:单元测试,回归测试,效能分析,个人软件开发流程(PSP) 1.单元测试  软件是由多人合作完成的,不同的工作有相互依赖的关系。单元测试应该准确,快速地保证程序基本模... 查看详情

构建之法第二章个人技术和流程

如果说第一章我还有点概念,那么第二章我可以说一窍不通,什么是VSTS,什么是单元测试,什么是回归测试,还是什么是效能分析……好多的新名称,第一次看见,是那么的没有头绪。要不是百度了,仅仅看书,我完全不知VSTS... 查看详情

构建之法--第二篇

构建之法——第二章在这一周中,我计划学习了《构建之法》的第二章,我认为从第二章开始,才算真正进入到了这本书的主题。这一章讲到的是个人技术和流程。首先,个人技术是衡量你是否能成为一名合格的软件工程师。而... 查看详情

《构建之法》读书记录w3

...件工程师的成长”,感觉本章内容是对第一章“概论”和第二章“个人技术和流程”的总结,从基本概念的介绍转到了实际,我们这种学习中的程序员未来的发展方向。读完了本章内容让我颇有收获。为了比较能力,作为一个在... 查看详情

《构建之法》2

这周,我阅读了《构建之法》的第二章和第三章,了解了个人技术和流程,以及软件工程师的成长。团队是由个人组成的,想要组成团队,开始软件工程工作,首先得确保每个成员是一个合格的软件工程师。单元测试、回归测试... 查看详情

《构建之法》第二次随笔

...念和技术,即单元测试、回归测试和效能分析工具。书的第二章讲述了个人技术和流程,给我们着重介绍了PSP(个人软件开发流程)。  绝大部分 查看详情

构建之法——第二篇

...在,那么对于我们而言真正的软件工程包括什么呢?根据构建之法中的描述,软件工程包括了开发,运营,维护软件的过程中的很多技术,做法,习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发... 查看详情

构建之法第二章

构建之法第二章本章为个人技术和流程,主要介绍了单元测试、回归测试、效能分析和个人软件开发流程等内容。单元测试:如何能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得... 查看详情

《构建之法》读书笔记二

 这周读了《构建之法》的第二章。第二章主要讲到了个人技术和流程。 软件是由多人合作完成的,不同人员的工作相互有依赖关系。一个团队需要一定的流程来管理开发活动,每个工程师在软件生命周期所做的工作也应... 查看详情

读构建之法第三章:软件工程师的成长

本章理论和知识点:评价软件工程师水平的主要方法软件工程把相关的技术和过程统一到一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营、维护的效率,以及提升用户满意度、软件的可靠性和... 查看详情

《构建之法(第三版)》第二章

第二章:个人技术和流程书本内容回顾概述一个团队需要一定的流程来管理开发活动,每个工程师在软件生命周期所做的工作也应该有一个流程,在这一章里会介绍PS(PersonalSoftwarePro-cess,个人软件开发流程)。单元测试单元测试... 查看详情

《构建之法》-第二周

第二章的主要内容是个人技术和流程,由单元测试和个人开发流程组成。 单元测试主要通过举了例子阐述了在多人合作的软件开发中,如何能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模... 查看详情

构建之法粗读读后感_1

...解了软件工程的目标以流程,个人与团队合作之间差别;第二章,个人技术和流程其实就是讲由于软件是由多人合作完成的,不同的人员的工作相互有依赖关系,一个人写的模块会被其他人调用,而软件的很多错误都来源于程序... 查看详情

个人技术和流程(构建之法)

 一个成功的商业软件的发不可能是一个人单枪匹马做出来的,而是一个团队通力协作共同完成的。而团队并不能让每个人都了解你的程序,也不能让你了解每个人的程序。所以一个团队要想做出一款好的产品团队里的成员必... 查看详情

构建之法(概论,个人技术和流程)

构建之法这本书第一章给我们讲述了软件以及软件工程的含义。软件=程序+软件工程。书中用编写出加减法题目的程序的例子生动形象的说明了程序,软件,工程之间的关系,以及软件工程的一些概念。程序,在这里指的是源程... 查看详情

《构建之法》第二次

  第二章讲的是个人技术和流程。绝大多数软件是由多人合作完成的。单元测试能够让自己负责的模块功能定义更加明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证。  创建一... 查看详情

构建之法第2章个人技术和流程

1单元测试(1)单元测试(2)回归测试回退操作2效能分析工具先用抽样的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法进行详细分析3个人开发流程(1)计划明确需求和其他相关因素,指明时间成本和依赖关系分析需求生... 查看详情