软件测试在软件生存期中横跨两个阶段。在软件编码阶段,当编写出一个模块后,通常要对它进行必要的测试(称为单元测试),这时测试与编码属于同一个阶段。在编码阶段结束后,对软件系统还要进行各种综合测试(集成测试与系统测试),这是一个独立阶段,即软件测试阶段。在这个测试阶段又有两种性质不同的测试:研制单位内部进行的集成测试和系统测试与用户(或第三方)进行的验收性测试。
在软件测试生命周期内,错误在软件开发的每个阶段都可能被带入。在软件测试中,某些错误被发现、分类、隔离,最终被纠正。由于软件不断被修改,所以这个过程是一个反复进行的过程。
二、沟通对项目实施效率的影响
沟通对项目实施效率的影响往往是间接的、不易觉察和量化的。不少项目管理者认为项目管理九大知识领域中的沟通是一个软指标,很难考核一个项目组成员的沟通能力。下面从几个与沟通有直接或间接关系因素讨论沟通对IT项目实施效率的影响。
项目复杂程度与实施效率
沟通路径所消耗掉的工作量多少取决于软件项目本身的复杂度和耦合度。原IBM在马里兰州盖兹堡的系统技术主管Joel Aron,在他所工作过的9个大型项目的基础上,对程序员的实施效率进行了研究。他根据程序员和系统部分之间的交互划分这些系统,得到了如下的实施效率:
| 非常少的交互 | 10,000指令每人年 |
| 少量的交互 | 5,000 |
| 较多的交互 | 1,500 |
一般说来,底层软件(操作系统、编译器、嵌入式系统、通信软件)的接口复杂度要比应用软件(MIS、操作维护软件、管理软件)要高得多。
在估算软件开发项目工作量时要充分考虑任务的类别和复杂程度,因为抽象的、接口复杂的系统开发过程中沟通消耗必然大。还有,有深厚行业背景的软件,要考虑开发人员为熟悉行业知识所要付出的沟通消耗。
团队规模与实施效率
IBM 360操作系统之父的F.P.布鲁克在他著的《人月神化》中提到:需要协作沟通的人员的数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流,以及更正沟通不当所引起的不良结果(系统调试)。
人与人之间必需通过沟通来解决各自承担任务之间的接口问题,如果项目有n个工作人员,则有n×(n -1)/ 2个相互沟通的路径。假设一个人单独开发软件,年实施效率为10000行代码,而每一条沟通路径上每年消耗掉的工作量可折合500行代码,则团队规模和沟通消耗以及实施效率存在以下关系:
| 团队规模 n |
沟通路径数 n×(n -1)/ 2 |
沟通消耗(LOC/人年) 沟通路径数×500 |
实施效率(LOC/人年) 10000-沟通消耗/n |
| 1 | 0 | 0 | 10000 |
| 4 | 6 | 3000 | 9250 |
| 6 | 15 | 7500 | 8750 |
| 10 | 45 | 22500 | 7750 |
由此可知,一个人单独开发一个软件,人均效率最高,只可惜大部分软件规模和时间要求都不允许一个人单独开发,而团队开发的沟通消耗却呈二次方增长。所以,项目团队应该尽可能精简,以较少的人在最可能允许的时间内完成任务是相对高效的。
团队的组织方式与实施效率
不难看出,通过减少沟通消耗、提高沟通效率能够提高项目团队工作效率。良好的团队组织可以减少不必要交流和合作的数量,是提高团队效率的关键措施。
减少交流的方法是明确的个人分工和接口定义。卡内基-梅隆大学的D.L.Parnas认为,编程人员仅了解自己负责的部分,而不是整个系统的开发细节时,工作效率最高。

