软件质量保证人员(QA)是干什么的?
从事软件质量保证工作已有几个年头,经常有朋友问起软件质量保证到底是干什么的?每次总回答就是辅导和监督项目开发按照公司研发过程执行的,仔细想想实际并没有这么简单,为了让更多朋友了解质量保证这个岗位,在此结合这几年的工作经验进行如下总结,若有不对的地方欢迎大家指正与交流,谢谢!
在CMMI中,质量保证的英文全称是Process and Product Quality Assurance,即过程与产品质量保证。一般大家更习惯叫质量保证或QA,它的目的是为员工和管理层提供过程和相关工作产品的客观洞察。之所以说它客观是因为:
质量保证人员是一个独立于项目组之外的第三方审计人员,不能是直接参与开发、测试和项目管理的人(当然实际也有例外,有些公司QA可能是兼职的);
质量保证人员不受监督对象部门的绩效评价;
质量保证人员具有独立的问题汇报渠道(可以跨级上报——QA很重要的特权)
一般设有软件质量保证岗位的公司都有一套依据自己公司实际研发现状制定的完整研发过程体系,所有的软件质量保证人员入职一家新公司,首先需要做的事情就是学习和深刻了解该公司研发过程体系,否则后续工作是无法开展的。
一般软件质量保证工作内容主要分三大块:
1、过程辅导
依据研发过程体系辅导所有开发项目/版本前期及项目过程各个环节及各环节具体活动执行(含流程、方法、模板及过程中相关工具的使用)。
辅导时机:
到达项目/版本计划中计划的时间点
触发事件驱动(如:邮件)
辅导方式:
口头
邮件
电话
通讯工具(如:QQ、RTX等)
必要时可以开展正式的课堂培训(一般很少)
2、过程检查
所有开发项目/版本开发过程中,依据当前的研发过程体系客观的对实际执行情况进行检查与评价。
检查的方式:
参加项目会议(评审会、周会)
与各个环节人员沟通
触发事件驱动(如:邮件)地进行检查
检查工作产品
3、过程问题记录与跟踪
记录过程检查过程中发现的不符合项,并与相关负责人进行沟通,了解产生问题的原因,跟踪不符合项确保问题得到解决。
伴随上述工作过程中还会有一些其他工作内容,如下:
1、向项目组和管理层提供质量保证活动结果——风险预警与问题报告。
预警风险、及早报告项目问题,使项目免受损失或少受损失,是质量保证的重要价值体现。
有经验的质量保证人员能够基于过程中了解到的项目过程质量状况和产品质量状况,及时识别出项目过程中存在的风险和发现过程问题,并定期(一般都是一周)向项目组与管理层预警风险、报告问题。
项目组必须在规定的期限内回复质量保证人员报告的问题。对于无法协调一致的问题要及时升级
就质量保证问题的认定双方不能达成一致。
就质量保证问题的解决计划双方不能达成一致。
项目组未按计划解决质量保证问题。
……
管理层必须及时处理升级的问题
强制项目组解决
豁免
2、严重问题根因分析
质量保证人员需要定期(如每月/季度)对记录的问题进行分类与分析,对于过程中发生的严重问题或事故,必须了解问题产生的根源才能够在后续进行规避。一般若公司有多个质量保证人员,应以部门为单位开展问题根因分析活动,必要时还可以邀请EPG小组成员一起),问题根因分析活动结束后应向相关领导出具根因分析报告,提出当前的对策及未来建议。
3、收集与反馈过程改进建议,协助过程改进
一般公司EPG(过程改进小组)大都由其它岗位人员兼职的,我就职的公司质量保证人员都会兼EPG中的某个角色。
质量保证人员在项目过程中会与软件生命周期各个环节的人员打交道,有心的质量保证人员在此过程中肯定能够发现很多研发过程体系不合理或不够完善的地方,同时项目结项时质量保证人员要进行质量保证总结,在总结过程中也可以收集到很多过程改进建议,质量保证人员要定期将收集到的过程改进建议反馈给EPG组长,由EPG组长规划过程的改进。
4、其它
其它依据各个公司具体情况而定,如:定期进行交叉检查,开展研发过程体系培训,度量项目过程,协助项目经理监控项目进展。
软件质量保证工作的开展是有计划有序进行的,一般项目初期(如:项目计划阶段)质量保证人员要制订质量保证计划,质量保证计划要得到项目经理、质量部门负责人的评审/审批。
同时在实际检查过程中也是有依据的——QA检查单,一般公司研发过程体系中都会制订一份完整的QA检查单模板,各个项目要依据项目过程定义进行裁剪。
软件质量保证工作涉及到软件工程的各个方面,软件质量保证人员要与不同角色的人员进行沟通,因此软件质量保证人员除了要有较高的智商和情商外,还有具备如下的素质和能力:
要有控制软件质量的能力
也就是说要熟练掌握公司各种流程、标准和规范,做好第三方独立审计的工作并及时发现、纠正问题。在必要时可以利用向高层领导直接汇报的权力来“威慑”相关人员,以确保软件质量朝好的方向发展。在控制软件质量发展方向的同时要学会控制自己的情绪,因为并不是所有人员都很了解公司的研发流程、软件质量保证的工作以及如何从根本上去提高软件质量,工作中很多时候有“秀才遇到兵,有理说不清”的感觉,这时就更加需要控制自己的言语和情绪,找到合适的方式进行沟通,使问题最终得到解决。
对问题根源识别和归纳的能力,即透过现象看本质的能力。
举一反三的能力。
很强的沟通能力。
要适当强势,做好灵活性与原则性间的平衡的能力
客观、对事不对人的职业素养
技能要求:
软件工程/系统工程的理论、方法
工作过程标准
沟通、协调技能
基本的管理知识和技能
项目管理的理论、方法
质量保证工作的原理、方法
岗位等级:
交警(初级)
像交警查处交通违章那样,直接向所发现的不符合项贴“罚单”即可。
医生(中级)
像医生那样对项目进行检查和诊断,发现问题并可以开出“药方”。
老师(高级)
像老师那样发现学生的弱项,并找到如何提高学生能力的方案,然后对学生进行辅导和培训。
-------- THE END --------
🍁