构建之法阅读心得(二)
第二章中,作者写到了好的单元测试的标:单元测试应该在最基本的功能/参数上验证程序的正确性、单元测试必须由最熟悉的人来写、单元测试过后,机器状态保持不变、单元测试要快、单元测试应该产生可重复、一致的结果。独立性——单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。单元测试应该覆盖所有代码路径,但是100%的代码覆盖率并不等同于100%的正确性、单元测试应该集成到自动测试的框架中、单元测试必须和产品代码一起保存和维护。
程序要进行单元测试来保证程序的健壮性。
还要进行回归测试,就是在原版本上运行的测试用例通过的话,在下一版本上再运行时,却没有通过,这就是软件"退化",所以需要进行回归测试。在新版本上运行所有已经通过的测试用例,来验证后面的版本没有出现软件"退化"的情况。
但是如果是模块功能发生了变化,那么测试用例也需要修改来测试新的模块。
程序还要进行效能分析,这个是以前从来没有了解过的。就是找出程序运行时,哪个函数或方法消耗的时间多,就是程序运行的瓶颈所在,进行效能分析,从而对相应模块的代码进行优化。进行效能分析的方法有抽样和代码注入,各有优缺点。不过普遍用的是先用抽样方法找到瓶颈所在,然后对特定模块的代码用代码注入的方法进行详细分析。还要注意避免没有做分析就过早进行"效能提高"。
对程序员或者工程师是有能力成熟度模型的。工程师在需求分析和测试上花的时间更多,而在具体编码中比大学生花的时间少一半多,从学生到职业程序员,以后在写代码的时间会少很多,更多是用在分析上。