13.3 软件测试的独立性
通过独立的软件测试工程师进行软件测试和评审,可以发现更多、更有效的缺陷。软件测试的独立性描述如下:[J1]
(1)不独立的软件测试工程师,比如:敏捷团队内既承担开发又承担测试的工程师。
(2)开发团队内的独立软件测试工程师。比如:敏捷团队内的独立测试工程师。
(3)组织内独立的软件测试小组或团队,向项目经理或执行经理汇报。比如:测试小组内的测试工程师、测试经理直接向研发经理汇报。
(4)来自业务组织、用户团体内的独立软件测试工程师。比如:测试部门内的测试工程师。测试经理直接向高层领导汇报。
(5)针对特定软件测试类型的独立软件测试专家。如用户体验性软件测试工程师、软件安全性测试工程师或认证软件测试工程师。
(6)外包或组织外的独立软件测试工程师。比如:第三方软件测试公司派来的软件测试工程师。
对于庞大、复杂或安全关键的项目,通常最好有多个级别的软件测试,并让独立的软件测试工程师负责某些级别或所有的软件测试。开发工程师也可以参与软件测试,尤其是一些低级别的软件测试,但是开发工程师往往缺少客观性,会限制他们软件测试的有效性。独立软件测试工程师有权要求和定义软件测试过程及规则,但是软件开发工程师应该只有在存在明确管理授权的情况下,才能充当这种过程相关的角色。
独立软件测试存在以下优点。
(1)独立的软件测试工程师是公正的,可以发现一些其他不同的缺陷。
(2)一个独立的软件测试工程师可以验证在系统规格说明和实现阶段所做的一些假设。
但是,独立软件测试也存在以下缺点。
(1)与开发小组脱离(如果完全独立)。
(2)开发工程师可能丧失对软件质量的责任感。
(3)独立的软件测试工程师可能被视为瓶颈或者成为延时发布而被责备的对象。
在这里,做几点说明。
(1)开发工程师可以进行测试,特别是在目前互联网模式下,用户需求变更快,或者在不能马上了解用户需求的情况下,不需要安排专门的软件测试工程师。
(2)对于质量级别比较高的产品,最好开展独立的测试,并且配备专门的专职测试工程师(在某银行研发中心测试分中心下,分为以下几个部门:功能测试部门、性能测试部门、可靠性测试部门、用户体验性测试部门、可维护性测试部门、安全测试部门等)。
(3)一般情况下,测试包括单元测试、集成测试、系统测试和验收测试:
Ø 单元测试和集成测试由开发工程师进行测试。
Ø 系统测试由组织内独立的测试小组或团队进行测试。
Ø 验收测试由用户或者系统操作人员进行测试。
案例13-4:来自业务组织、用户团体内的独立软件测试工程师
如图13-1所示。
图13-1 来自业务组织、用户团体内的独立软件测试工程师
由此可见,各个测试小组归测试经理管理,测试经理直接汇报给公司技术总监。
案例13-5:组织内独立的软件测试小组或团队
如图13-2所示。
图13-2 组织内独立得软件测试小组或团队
从图13-1与图13-2可以看出,案例13-4与案例13-5最大的区别在于:案例13-4测试部门与开发部门是同等地位,直接向公司CTO汇报;而案例13-5测试部门属于研发部门里面一个子部门,向研发部门汇报,而研发部门向公司CTO汇报。
案例13-6:SCRUM团队
在图13-3的SCRUM团队,John既是开发工程师又是测试工程师,而Susan是团队里面的独立测试工程师。
图13-3 SCRUM团队
顾翔凡言:
不是好的工作会给你带来好的心情,而是好的心情会给你带来好的工作