概括:
理论和知识点:单元测试,回归测试,效能分析,个人软件开发流程(PSP)。
这一章我学的内容是代码的测试和PSP,通过对文章的阅读,我更新了对代码测试的认识,同时学习了PSP一点点内容,我以前一直只知道代码测试就是对写好的代码运行结果测试,使其出现正确的答案,
现在我对代码测试有了新的认识,对代码测试的分类,代码测试的本质和性质都有了更深的了解,另外我也了解到了神魔是PSP,对PSP有了一个初步的了解,尤其是其中的过程。下面是我学习之后总结下来的一
些笔记:
一:单元测试
1.好的单元测试标准:
(1)单元测试应该在最基本的功能/参数上验证程序的正确性。
单元测试应该测试程序中最基本的单元,在此基础上,可以测试系统中最基本的功能点,单元测试要测试API中的每一个方法和参数。
(2)单元测试必须有最熟悉代码的人(代码的作者)来写。
代码的作者组了解代码的目的,特点和实现的局限性。
(最好是在设计的时候就写好单元测试,这样单元测试就能体现API的语义)
(3)单元测试过后,机器状态保持不变。
这样可以不断的运行单元测试,如果单元测试创建了临时的文件或目录,应该在测试结束后删除。
(4)单元测试应该产生可重复,一致的结果。
(用随机数来增加测试的真实性是不现实的,因为随机数不确定,如果这一次随机数错误导致程序出错,但是下一次运行又不能重复这一错误。单元测试不能解决所有问题,不必期望会发现所有缺陷。)
(5)独立性
单元测试的运行、通过、失败不依赖于别的测试 ,可以人为构造数据。
这是比较重要的几点,其他的就不一一赘述。
在以前我只是使用其中的前三条标准,因为那些都是最基础的,也是交作业时的最基本的要求,现在我对后面的内容也有一些认识,随机数不能解决所有问题,另外单元测试不能解决所有的问题,其
实这些性质都是最基本的,如果让我直接说是说不出来的,看到之后也感觉就是这麽回事,这些标准在我们的变成过程中会有意识或者无意识的遵循着这些规则。
2.回归测试(Regression Test)
1.定义:从正常工作的稳定状态退化到不正常工作的不稳定状态。
2 目的:验证新的代码的确修改了缺陷和同时验证新的代码有没有破坏模块的现有功能。
回归测试对我来说时很陌生的,我好像以前很少或者几乎不适用,我认为这个在以后可能会用到,我也会在编程的过程中去有意识地想这个。
二.效能分析。
1.效能分析就是让自己夫人程序跑得越快越好,最好是比别人快一个数量级。
2.两种分析方法:抽样和代码注入。
抽样就是当程序运行的时候,时不时看一看这个程序运行在哪一个函数并记录下来。
优缺点:不需要改动程序,可以很快找到瓶颈,但是不能准确表示代码中的调用关系数。
代码注入 是将检测的代码加入到每一个函数中,这样的程序一举一动都会被记录下来。
优缺点:程序的各个效能数据都会被精准的测量,但是程序的运行时间会大大将长,还会产生很大的数据文件。
使用方法:一般是用抽样的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法做详细分析。
像我以前认为程序的方法快就是我的代码长度短,方法比较简单,现在发现好像不是折磨一回事,而且我的代码注入也不是这莫用的,我会在代码调试的时候,
在函数中加入一些代码来判断是否执行,现在对代码注入有了新的理解,
3.效能分析涉及到的名词。
(1)调用者:函数foo()中调用了bar(),foo()就是调用者。
(2)被调用函数:上例中的bar()就是被调用函数。
(3)调用关系树:从程序的主函数开始,调用者和被调用函数就形成了一个树形关系
还有消逝时间,应用程序时间,本函数时间,所有时间等等。
三.个人开发流程。
1.内容:(1)计划(估计这个任务需要多少时间)
(2)开发(包括 分析需求,生成设计文档,设计复审,代码规范(为目前的开发定制合适的规范),具体设计,具体编码,代码复审,测试(包括自测,修改代码,提交修改))
(3)记录用时
(4)测试报告
(5)计算工作量
(6)事后总结
(7)提出过程改进计划
(8)
·我们在大学里进行的最多的是个人的开发流程,所以我们目前需要注重这方面的培养,我在这个计划方面做的很差,就比如我做一个四则运算的程序,使其有真分数的功能,总感觉用不
了很多时间,但是实际我在做的时候遇到好多阻碍,跟我想的不一样, 在调试过程,也是光出问题,甚至有时只是打错一个变量,就差了很长的时间都没有查出来。所以我对自己的能力没有
一个清晰的认识,根据老师指点,我们应该培养对于给自己的这个工程,自己花多长时间能调试好,应该跟自己预估的差不多,这样才能在将来的工作中完成的更好。另外我编写代码的时候,
总是不能静下心来,有时候还喜欢开着音乐播放器,总是感觉敲着代码的时候还能做点别的事,不能把全部精力放在这上面,以后我会试着去改变自己,有意识的去改正自己的不足。
我们以前一直认为会敲代码是开发流程中最重要的部分,可是这在开发流程只是占有一个步骤,最重要的还是策划,对方法的使用,以及对自己所做的内容进行总结,这也是老师让我们
写实验报告的原因,虽然我以前对试验报告不是很重视,但是以后我会对自己写的内容进行总结的。
2.PSP特点
(1)不局限于某一个软件技术,而是着眼于软件开发的流程,这样开发不同应用的软件工程师可以相互比较。
(2)不依赖与考试,而主要靠工程是自己手机数据,然后分析,提高。
(3)PSP依赖于数据,需要工程师输入数据,记录工程师的各项活动这需要很多时间,再加上数据不准确或者有遗失,或者这些数据不利于工程师本人。
(4)PSP的目的世纪路工程如何实现需求的效率,而不是记录顾客对产品的满意度。
通过对PSP特点的理解,我认为PSP是对代码工程师自己的一个要求的标准,也是我们做一个小的项目或者工程时所应该遵循的步骤,我们不想要做码农,所以我们应该花更多的时间用来对自己的
所做的内容去总结,让自己对项目的实现有一个深刻的认识,对自己更加严格的要求,这样我们才能不断提高,有助于我们在在未来的工作中能有更高的成绩。
这本书介绍的内容都很有用,我从中收获很多,也有很多感触,其实我对未来还是比较迷茫的,总是感觉无所适从,现在看到这些指导后,给了我一个坚持做下去的方向,虽然不知道最后结果如何,
但是我可以收获很多。