过程改进及测试管理的一些想法
 

2009-12-10 作者:平凡子 来源:51Testing博客

 

通过个人在几家不同类型企业的工作经历和测试工作经验总结,以及学习相关资料和培训经历,大致有如下一些想法和总结。

最大的感受是:管理过程比管理人更容易、更易于实现目标。有什么流程,就有什么结果,流程决定结果。

目前国内大部分软件企业开发软件都是纯目标管理的思想核心,最快完成软件为目标,软件开发过程混乱、不规范、质量得不到保证、文档、数据不全后期维护困难。面对软件系统越来越大,用户质量要求越来越高,竞争越来越强烈的市场,这样的企业保住现有地位都很困难,想进一步扩大就更难。所以世界上许多牛企业、大企业、想进一步发展的企业都在进行业务流重组过程改进。即改变目标管理的思想,强调管理过程,实现从职能管理到面向业务流程管理。它们相信好的流程就能产生好的产品,有质量的过程就有有质量的结果。

进行过程改进可参考的典型过程模型有:

1、 软件能力成熟度模型(CMM)

2、 个体软件过程(PSP)

3、 团队软件过程(TSP)

4、 能力成熟度模型集成(CMMI)

5、 IBM-Raional的统一过程(RUP)

6、 极限编程过程(XP)

7、 微软解决方案框架(MSF)

企业如果想进行过程改进要从何做起呢?

我这里把我的一些想法大致写一下:

首先要调研明确企业目前的软件开发过程,是否有如下的软件开发过程?有是怎么样的?是否合理?是否规范?

1、 客户需求管理过程

2、 系统需求分析设计过程

3、 软件开发与设计过程

4、 软件测试过程(单元测试、集成测试、系统测试、验证测试、确认测试)

5、 系统与软件维护过程

6、 文档编制过程

7、 配置管理过程

8、 质量保证过程

9、 验收产品过程

10、 评审过程

11、 解决问题过程

12、 过程改进过程

13、 培训过程

14、 其它一些过程

然后再根据调研过程总结,建立适合本公司的过程,初期也许由于各方面原因达不到所有过程都规范,但是要有相应的过程就行,先建起来,然后定期收集大家的需求,确认合适的过程,逐步完善,逐渐做到所有过程规范化内容文档化,乃至最后形成系列过程规范。

这些过程规范的建立除了参考上面的七个模型也可依一些国际国家标准如:《GB9585 软件需求说明编制指南》、《GB9386 测试文件编制指南》、《GB/T12505 软件配置管理编制指南》、《GB8566 软件开发规范》、《GB12504 软件质量保证规范》等标准规范。

在这些过程中我主要谈一下我最主要关注的过程,过程改进过程、配置管理过程、测试过程。

一、过程改进过程需要注意的是:

1、 过程改进要符合企业的现状,不能盲目照抄其它过程模型;

2、 过程改进是一个不断完善不断升级的活动,要按阶段进行,定期总结评审;

3、 过程改进要得到组织、管理层领导、开发人员、测试人员的支持,因为过程改进的变化引起员工的反感就不好了。开发人员和测试人员要做好过程改进的挑战和冲击准备;

4、 过程监控、日报、周报制度要建立,这样实际数据能够准确收集,并进行分析;

5、 过程改进要及时调整;

6、 过程改进需要看结果,更要看到过程改进过程中的创新。创新就应该得到奖励。

二、配置管理过程:

1、基线控制流程

2、版本控制

是对系统软件不同版本进行标识和跟踪的过程,是对软件开发过程中所有文件系统对象,包括源代码、文档、数据、执行文件、位图、目录变更的控制和跟踪。

3、变更控制流程

三、测试过程

确定测试过程模型:多V模型或叫W模型

起步阶段先从确认测试和业务功能测试做起。逐步增加其它测试过程。比如电力系统对生产安全特别重视,可以引进保密安全性测试和可靠性测试。再次对逻辑组态的准确性进行测试,GUI测试也很重要。

嵌入式测试和普通软件测试的目的也是一样的,都是为验证或达到用户要求的可靠性测试。但是它有很多和普通测试不一样的地方。比如:

1、 嵌入式测试要在特定的硬件环境、物理环境(如工业强磁场干扰)上进行测试;

2、 必要的可靠负载测试,如:连续长时间不断电工作测试;

3、 还需要对实时性进行测试,如:在规定的时间内输入输出某些数据等。

但是不管做什么类型的测试,具体的测试过程都由以下流程进行。

1、 测试需求分析:测试工程师对用户原始需求、软件功能需求进行测试分析,对分析结果进行测试分解的过程。首先确定测试需求分析来源:开发需求、用户需求、协议规范、测试经验;其次明确测试类型,如:功能测试、一致性测试、安全性测试、性能测试、压力测试、恢复测试、系统指标测试、备份测试、大容量测试、抗干扰测试、互操作测试和Web测试;再次进行功能分解,最后进行功能测试分解。

2、 测分评审:评审测试需求分析的准确性、完整性、一致性。

3、 测试计划:明确测试目标、测试范围;测试任务分解、工作量估计;明确测试依据、测试策略、测试内容和方法;制定人员角色和进度安排;了解测试环境;风险分析。

4、 测试计划评审:评审测试计划的准确性、完整性、一致性、可行性。

5、 测试设计:测试用例编写、黑盒测试、白盒测试内容和方法,测试脚本开发。

6、 测试设计评审:评审测试用例的准确性、完整性、一致性、可行性。

7、 测试执行:根据测试设计进行操作执行。

8、 测试报告:完成整个测试项目总结、缺陷报告、缺陷跟踪报告。

9、 测试报告、缺陷报告评审。

10、 回归测试设计、测试执行。

11、 回归测试报告、缺陷报告。

12、 项目总结报告,项目提交发布。

由于项目各种原因影响可以调整简化相关步骤。以至达到最适合公司本身的流程。

有这样一个流程, 那又怎样搭建一个测试团队呢, 怎样将上面的过程有序的执行下去呢?团队各人员又需要哪些能力呢?

测试团队的搭建,首先要有一个优秀的测试团队管理者。怎样的测试管理者才能算好?

1、 也许不需要在某些技术上研究的很深的能力,但是要有对软件测试政策、标准、测试过程、测试工具、测试培训、测试度量、测试策略和方法理解的能力;

2、 领导的测试团队必须是坚强有力、积极向上、勇于挑战、敢于报错、独立自主、办事规范没有偏见的;

3、 吸引并留住杰出测试专业人才的能力,让整个团队的工作气氛非常乐观、和谐;

4、 领导、勾通、协调、支持和控制的能力;

5、 测试时间、质量和成本控制的能力, 如:。

其次就是要有合格的测试人员,他们要有:

1、 正常能力:表达清楚、思路清晰,交流、协调和学习能力强、质量意识要强,过程方法、软件工程基础扎实;

2、 具有测试技能:测试基本概念及方法、测试工具及环境、熟悉编程语言、操作系统、网络及数据库等基础知识;

3、 测试规化能力:测试风险分析及防范、软件接收/放行准则、测试计划和设计;

4、 测试执行能力:测试数据/脚本/用例的准备,测试比较分析、缺陷记录及跟踪、自动化工具;

5、 测试分析、报告和改进能力:测试度量、统计技术、测试报告、过程监控及持续改进。

然后就是团队的培训:

1、 测试基础知识和技能培训;

2、 测试设计和测试工具培训;

3、 测试对象-软件产品培训;

4、 测试过程培训;

5、 测试管理培训;

6、 测试人员与开发人员、质量保证人员、项目经理及客户勾通协调培训。

说的很少但要做的很多,过程改进是一个长期的过程、一个长期的工作、它需要长期的积累、需要创新、需要规范。由于个人经验所限有很多不足之处, 请各位老大以后多多教益。这对于我个人来说也是一个过程积累, 一次提高。更是一次挑战!

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。

资源网站: UML软件工程组织