关键词:
2.1 单元测试
软件是由多人合作完成的,不同人员的工作相互有依赖关系。例如,一个人写的模块被其他人写得模块调用。软件的很多错误都来源于程序员对模块功能的误解、疏忽或不了解模块的变化。如何能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证?单元测试就是一个很有效的解决方法。
2.1.2 好的单元测试的标准
单元测试应该在最基本的功能/参数上验证程序的正确性。
单元测试必须由最熟悉代码的人(程序的作者)来写。
单元测试过后,机器状态保持不变。
单元测试要快(一个测试的运行时间是几秒钟,而不是几分钟)。
单元测试应该产生可重复、一致的结果。
独立性——单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。
单元测试应该覆盖所有代码路径。
单元测试应该集成到自动测试的框架中。How?
单元测试必须和产品代码一起保存和维护。
2.1.3 回归测试
针对一个Bug Fix,我们也要做Regression Test。目的是:
1.验证新的代码的确改正了缺陷
2.同时要验证新的代码有没有破坏模块现有的功能,有没有Regression
2.3 个人开发流程
PSP2.1 |
计划 |
*估计这个任务需要多少时间 |
开发 |
*分析需求 |
*生成设计文档 |
*设计复审(和同事审核设计文档) |
*代码规范(为目前的开发制定合适的规范) |
*具体设计 |
*具体编码 |
*代码复审 |
*测试(包括自测,修改代码,提交修改) |
记录用时 |
测试报告 |
计算工作量 |
事后总结 |
提出过程改进计划 |
2.4 实践
2.4.2 实践最简单的项目:WC
1. 实现一个简单而完整的软件工具(源程序特征统计程序)
2. 进行单元测试、回归测试、效能测试,在实现上述程序的过程中使用相关的工具
3. 进行个人软件过程(PSP)的实践,逐步记录自己在每个软件工程环节花费的时间。
4. 使用项目管理系统,练习使用其中的事件跟踪系统。(选用TFS,Bugzilla或者Trac,了解原理)
2.4.2.1 WC项目要求
程序处理用户需求的模式为:
wc.exe[parament][file_name]
各个参数的意义:
基本功能列表:
wc.exe-c file.c: char count
wc.exe-w file.c: word count
wc.exe-l file.c: line count
扩展功能:
-s递归处理目录下符合条件的文件。
-a返回高级选项(代码行/空行/注释行)。
空行:
本行全部是空格或格式控制符,如果包括代码,则只有不超过一个可显示的字符,例如“}”。
代码行:本行包括多于一个字符的代码。
注释行:本行不是代码行,并且本行包括注释。一个有趣的例子是有些程序员会在单字符后面加注释;
}//注释
在这种情况下,这一行属于注释行。
[file_name]:文件或目录名,可以处理一般通配符。
文本文件,确定字/词/句。
高级功能:
-x参数。这个参数单独使用。如果命令行有这个参数,则程序会显示图形界面,用户可以通过界面选取单个文件,程序就会显示文件的字符数、行数等全部统计信息。
需求举例:
wc.exe -s -a *.c
返回当前目录及子目录中所有*.c文件的代码行数、空行数、注释行数。
2.4.2.2 工作的细分
罗马不是一天建成的。三个估计时间。
2.4.2.3 如何保证质量——回归测试
1. 手动测试,手工比较。
2. 要做到不断地测试,可以把WC的主要功能封装成一个类,然后测试程序调用这个类的主要函数,得出结果并与标准做比较。
3. 更进一步,把测试文件和正确的测试结果保存在文件中,测试驱动程序只要比较测试的输出和标准结果就能得出答案。
4. 再进一步,把自动构建脚本和构建验证测试结合起来。每一次构建之后,就自动运行测试,然后记录出现的Bug。
构建之法之开发流程
一.什么是开发流程? 在开发,运营,维护软件过程中的技术,做法,思想统一到一个体系中,叫做“软件开发流程”。二.开发流程。1.写了再改模式 开发人员拿到需求文稿后,编码成功,交付客户,客户反馈意见,继... 查看详情
构建之法之阅读笔记02
一个项目可以一个人完成,但这需要耗费大量时间,最终让自己疲惫不堪,也可以多人完成,但这不仅仅需要个人技术能力,更需要团队的协调与合作能力。 一个合格的软件工程师的诞生,熟练的编程能力只是基础,工... 查看详情
构建之法之单元测试及设计流程
一.什么是好的单元测试?1.单元测试是“白盒测试”,应该覆盖各个分支流程,异常条件2.单元测试面向的是一个单元(“Unit”),是一个类或者几个类组成的单元3.单元测试运行一定要快!4.单元测试一定是可重复执行的5.单元... 查看详情
个人技术和流程(构建之法)
一个成功的商业软件的发不可能是一个人单枪匹马做出来的,而是一个团队通力协作共同完成的。而团队并不能让每个人都了解你的程序,也不能让你了解每个人的程序。所以一个团队要想做出一款好的产品团队里的成员必... 查看详情
构建之法(概论,个人技术和流程)
构建之法这本书第一章给我们讲述了软件以及软件工程的含义。软件=程序+软件工程。书中用编写出加减法题目的程序的例子生动形象的说明了程序,软件,工程之间的关系,以及软件工程的一些概念。程序,在这里指的是源程... 查看详情
读构建之法之感
读构建之法之感,为什么迟迟没有发构建之法这本书的观后感,是因为想要细细的看,为什么老师这么要求我们这么做,为什么要刻意的去发微博,原因都在构建之法的这本书中。构建之法这本书和其它的软件工程的书不同,构... 查看详情
构建之法第2章个人技术和流程
1单元测试(1)单元测试(2)回归测试回退操作2效能分析工具先用抽样的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法进行详细分析3个人开发流程(1)计划明确需求和其他相关因素,指明时间成本和依赖关系分析需求生... 查看详情
《构建之法》——个人技术和流程
#一、单元测试单元测试的作用:让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的保证。##1.1好的单元测试的标准单元测试应该在最基本的功能/参数上验证程序的... 查看详情
构建之法(第二章个人技术和流程)
在第二章的学习之中,了解到第二章主要讲:单元测试,回归测试,效能分析,个人软件开发流程(PSP) 1.单元测试 软件是由多人合作完成的,不同的工作有相互依赖的关系。单元测试应该准确,快速地保证程序基本模... 查看详情
《构建之法》第二次随笔
阅读了《构建之法》第一章中软件工程的概论,我学习到了“软件=程序+软件工程”这个黄金公式,并且对软件工程充满了兴趣和信心。但是,一个好的软件工程开发团队需要首先确保团队里的每个成员是合格的工程师... 查看详情
构建之法之现代软件工程问题
1.在软件需求方面,如何做到用尽量短的时间作出尽量全面的调查,既满足领导的要求,有符合用户的需求,并且适合程序员的开发习惯? 要从用户那里进行需求的获取,包括问题获取和分析等,可以使用访谈来了解用户领... 查看详情
构建之法第二章个人技术和流程
如果说第一章我还有点概念,那么第二章我可以说一窍不通,什么是VSTS,什么是单元测试,什么是回归测试,还是什么是效能分析……好多的新名称,第一次看见,是那么的没有头绪。要不是百度了,仅仅看书,我完全不知VSTS... 查看详情
构建之法之初遇
...恍惚惚中接触了编程,便从此与之接下了不解之缘。初见构建之法,更是让我体会颇多。程序员都知道“程序=数据结构+算法” 但是其中的数据结构和算法只是一个基本功,在算法和数据结构之上,软件工程决... 查看详情
构建之法第三章
构建之法第三章本章为软件工程师的成长,主要介绍了评价软件工程师水平的主要方法,技能的反面,TSP对个人的要求。软件开发流程:软件开发流程包括团队的流程,也包括个人的流程初级软件工程师有几方面成长:1、积累... 查看详情
《构建之法》第三次随笔
从《构建之法》前两章的阅读学习中,我了解到了软件工程的概论,知道了“软件=程序+软件工程”,明白了个人技术和流程。阅读了第三章之后,我体会到了软件工程师的成长。 软件工程包括了开发、运营、维护软件... 查看详情
构建之法第二章
构建之法第二章本章为个人技术和流程,主要介绍了单元测试、回归测试、效能分析和个人软件开发流程等内容。单元测试:如何能让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得... 查看详情
读构建之法第二章:个人技术和流程
绝大部分软件都是由多人合作完成的,大家的工作相互有依赖关系。某人负责的模块的功能被其他人调用,但如何让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的、量化的... 查看详情
《构建之法》一周小结
软件工程包括了开发、运营、维护软件的过程中的很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营、维护的效率,以及提升... 查看详情