一.关于软件质量保障的体会

软件在功能,成本,时间三个方面满足利益相关者的需求,一个团队也许可以靠一些特殊的办法来提高程序的质量,但是软件工程的质量需要长期的过程来提高。

二.如果你是一个项目的QA,那么你认为你的工作职责范围是什么?

QA(QUALITY ASSURANCE,中文意思是"质量保证",其在ISO8402:1994中的定义是"为了提供足够的信任表明实体能够满足质量要求,而在质量管理体系中实施并根据需要进行证实的全部有计划和有系统的活动"。有些推行ISO9000的组织会设置这样的部门或岗位,负责ISO9000标准所要求的有关质量保证的职能,担任这类工作的人员就叫做QA人员 .软件团队为了让软件达到事先定义的质量标准而进行的所有活动,包括测试工作。在CMMI中,QA的主要工作是过程评审和产品审计。
从实践经验来看,QA只完成这两项工作很难体现出QA的价值。为了让QA组织的产出大于组织的投入,实现增值,就应该根据企业需要适当增加QA的职责,比如过程指导、过程度量和过程改进等。过程指导主要是项目前期辅助项目经理制定项目计划(包括辅助定义或修改项目过程和过程模型、协助项目估计、建立项目验收准则、设置质量目标等),对项目成员进行过程和规范的培训以及在过程中进行指导等。过程度量(包括产品度量)在CMMI中已经成为CMMI ML2级中一个单独的过程域,但却是对所有过程的一个共性要求。特别是成熟度越高,对度量的要求也越高,难度也越大。这就要求有专业的人员来负责,QA就是一个很好的选择。主要职责包括收集、统计、分析度量数据,以支持管理信息需求。过程改进在CMMI中主要是EPG的职责。但事实上,QA更接近于过程实施的环境,更了解过程运行的情况,也就更容易发现“木桶中最短的那块”。同时,QA也是改进过程实施的重要推动力量。
在了解了QA的这些工作以后,是否认为每个企业的QA职责应该都一样或者差不多呢?目前国内不少企业的现状确实是这样,这也是QA整体效果低下的一个很重要的因素。我们在确定QA职责的时候应该考虑自身的需要和环境,主要包括业务需求、过程成熟度水平和企业文化。业务需求主要是确定了QA需要完成哪些方面的工作,比如执行同行评审过程中,QA可以协助评审和组织会议;在存在外包的情况下,可能需要QA在监控外包方方面发挥作用。

三.如果你是一个项目经理,那么你认为这你的项目中需要专职的QA么?还是只需有Test即可?如果一旦出现问题,你如何界定由谁担责?

如果我是项目经理,我认为需要专职QA并且还需要Test。以研发QA(包括PQA、HQA、SQA等)为例,一个合格的QA在项目中会充当三种角色:警察、老师、医生,典型的职责包括过程指导、过程评审、产品审计、过程改进、过程度量。作为警察的角色,QA以业务流程为依据,需要及时发现和报告项目的问题,有选择性地参加项目的技术评审,定期对项目的工作产品和过程进行审计和评审。作为老师的角色,QA辅助项目经理制定项目计划,包括根据质量体系中的标准过程裁剪得到项目定义的过程,帮助项目进行估算,设定质量目标等;对项目成员进行过程和规范的培训以及在过程中进行指导等。作为医生的角色,QA可以承担收集、统计、分析度量数据的工作,对项目过程进行诊断,帮助分析原因,开处方。Test(软件测试)运用一定的流程和工具,验证软件能实现预先设计的功能和特性,工作的流程和结果通常是可量化的。例如,测试用例,Bug,代码覆盖率,MTTF,软件效能的参数,等等。正因为流程和结果是明确定义的,可量化的,所以很多测试工作可以自动化。
都有自己的特色与作用,每个都有自己扮演的角色,自己承担的部分,在做事前就界定好他们的工作范围,最后出问题就找出问题的一方就好。