早期在软件测试行业还没有发展起来的时候,企业根本就没有软件测试组织,就算微软这样的大型企业,最初也没有软件测试工程师,后来由于产品的缺陷过多,经常被客户投诉,导致修复缺陷的成本太高,此时微软意识到测试的重要性。但当初微软也没有单独的软件测试组织架构,他们选择一部分开发工程进行测试工作,但效果并不明显。
为了尽可能地发现更多的软件缺陷,提高产品质量,微软就成立了独立的测试组织,并且测试工程师不再是开发工程师,而如今微软的测试工程师与开发工程师的比例为2:1,微软测试组织演变的过程其实就是软件测试行业测试组织的演变过程。
现在随着软件外包的发展,国内大多数企业都有专门的测试部门,但还有一些小企业由于资金问题,没有设立软件测试部门,即使有专门的测试部门,测试工程师也少得可怜,测试工程师与开发工程师的比例大约是1:5,甚至更高。
一、测试部在企业的位置
前几年国内很少有企业设置专门的软件测试部门,但随着软件测试行业的不断发展,现在IT企业一般都有独立的测试部门,如图3-1 所示。
图3-1 测试部在企业的位置
从图中可以看出软件测试与软件开发并行,这也说明软件测试的重要性,并且从项目立项启动的时刻起,软件测试工程师就参与其中,而当软件测试工程师参与到项目中时,其实差不多就脱离了测试部,更多的是由该项目的测试经理来分配测试任务。当然在一些特殊情况下项目中可能没有测试经理或者由于项目比较小,就没有必要有测试经理了,此时更多的是与项目经理进行沟通测试工作安排。所以一般情况下,测试部门会根据项目组或产品线来划分内部的组织架构,这样做的目的是更好地将测试融入到开发团队中。
二、项目团队模型
早期在软件开发过程中项目团队一般只包括四大角色:团队主管(即项目经理)、一般的开发工程师、测试工程师和高级开发工程师,虽然说这是四大角色,但只能算是开发和测试两大角色。随着软件质量体系的不断完善,这个团队模型已经不再适用了,当前最典型的项目团队模型如图3-2 所示。
项目团队的核心是开发工程师和测试工程师,另外将用户体验、产品管理、程序管理和发布管理四大对质量管理的维度都添加进来了,当然最引人注目的是将用户视为项目团队的一部分,这充分体现了用户才是产品质量好坏的评判人。
在该项目团队模型中包括六种角色,如图3-3 所示。其主要职责与功能如下:
(1)产品管理角色的主要任务是提高客户满意度。
(2)程序管理角色的主要任务是在规定的项目资源、期限等限制条件下,确保产品能够如期发布。
(3)开发角色的主要任务是使用适当的技术和工具实现项目目标、满足客户需求、进行技术咨询,帮助防范风险、提供解决方案、参与设计过程。
(4)测试角色的主要任务是在产品最终发布之前找到尽可能多的缺陷或错误。
(5)用户体验角色的主要任务是协助用户更好地使用产品,排除用户在使用产品时遇到的问题和障碍。
(6)发布管理角色的主要任务是确保产品的顺利发布,为项目的正常运营提供服务和支持。与项目团队角色对等的团队结构如图3-4 所示。
图3-2 典型项目团队模型
在项目运作过程中,项目团队中六大工作目标与六大角色的关系见表3-1。
三、测试组织的演变
随着软件测试行业的发展,软件测试组织经历了三个发展阶段:混淆阶段、严格区分阶段和专业协作阶段,如图3-5 所示。
图3-5 测试组织演变
(1)混淆阶段。
在混淆阶段(早期的测试过程)并没有专职的测试工程师,企业并没有招聘专职的测试工程师,也没有专门的测试职能部门,测试工作更多的是由开发工程师自己完成。此时开发工程师是有质量意识的,因为没有专职的测试工程师,开发工程师会尽量努力做好程序,这直接影响个人的年终考核。当然在这种情况下,就无法谈测试流程如何了。
但是并不是说企业有专门的测试职能部门就表示测试已经不在混淆阶段了,一些企业测试部门就只有一两名工程师,没有较完善的测试流程,测试手段也很简单,只是手工测试,测试全面性也不够,也未对测试用例和测试缺陷进行有效的管理,这种测试也是处于混淆阶段。
(2)严格区分阶段。
应该说现在大部分企业的测试阶段都处于这个阶段,在严格区分阶段企业有独立的测试部门,有专职的测试工程师,并且不单只有黑盒的测试工程师,还可能有专职的自动化测试工程师、性能测试工程师和白盒测试工程师,此时公司有严格的测试流程,企业所有产品的测试都必须按流程来处理,并且在测试过程中使用了很多的测试工具和测试管理工具。在测试过程中,测试部门会不断地思考,对测试流程进行相应的修改和完善,并对测试手段和测试技术进行不断的完善。
虽然严格区分阶段比混淆阶段进步了,但可能存在以下两个方面的问题:
第一:在这个阶段的早期可能会出现这样的问题,虽然有了独立的测试部门,但发现产品的质量不但没有改善反而有下降的趋势。这是因为当有专职的测试部门时,开发工程师质量意识下降,他们潜意识认为不管产品开发得怎么样,后面还要进行测试,最坏的结果就是多了一些缺陷,但这样可能直接导致产品质量下降。因为如果此时测试的成熟度不高,产品虽然经过了测试,但依然有很多问题被遗漏,这样就可能出现质量下降的情况。
第二:可能出现沟通不畅通的情况,因为开发和测试完全是两个独立的部门,开发工程师和测试工程师并没有把提高产品质量作为共同的目标,这样可能导致双方相互指责的情况出现,并且由于开发和测试考核的指标不一样,可能出现一些争执。
(3)专业协作阶段。
专业协作阶段在严格区分阶段的基础上有了很大的改进,在这个阶段测试流程已经很完善了,并且在整个项目团队中每个工程师都具备质量意识,开发与测试不再相互独立,而是共同面对产品质量问题,协作改善产品质量。在专业协作阶段项目团队成员随时进行沟通,并且沟通完全透明,在每个构建过程和每个阶段的测试过程中,都会及时通过会议来沟通,出现问题时不再是争执,而是协作找到问题的原因与及解决措施。
四、测试工程师晋升通道
国内软件业快速发展的最近十年,软件开发工程师的人数和职业水平得到了很大的提高,当前国内高水平的软件开发工程师的数量已经可以和许多软件业发达的国家相比。但是,软件测试人才严重缺乏,尤其是既懂质量管理,又懂测试技术的软件测试工程师,更是凤毛麟角。
现阶段软件测试工程师的晋升通道有两种:一种是专业通道,成长为高级软件测试工程师或专职的性能测试工程师、自动化测试工程师、白盒测试工程师,这时能够独立测试很多软件,甚至可以成为软件测试架构设计师,当然随着技术的积累也可以转做项目管理;第二种是管理通道,从测试工程师到组长(Lead),再到测试经理(Manager),以至更高的职位。测试工程师晋升通道如图3-6 所示。
虽然软件测试工程师缺乏并且职业晋升通道明确,但这个行业并没有受到明显的青睐,很多人并不认为软件测试是一个比较好的职业,大多数人认为开发比测试职业发展更好,这主要有以下两个原因:
图3-6 测试工程师晋升通道
第一:软件测试行业入门要求比软件开发行业低,认为软件测试未来没有竞争力。坦白说如果纯做手工测试,其要求的知识水平确实不高,但开发的入门要求明显比软件测试高出很多,所以很多人依然选择开发而不选择软件测试。然而相反的是,如果要成为一名资深的软件测试工程师,需要的知识无论从广度还是深度来说都比开发的要求高出很多。
第二:职业初期,软件测试的工资待遇比开发低。现在人比较浮躁,特别是彼此间的攀比,导致这种情况加剧,使得很多人并不看好软件测试这个职业。
五、测试工程师职业发展
软件测试工程师晋升通道对应的工程师的职业发展也分两个方面:一是向技术方面发展,成为技术专家;二是向管理方面发展,成为管理者,如图3-7 所示。就技术方面来说,现阶段更多的是黑盒测试,即手工测试,这也是入门级的软件测试工程师最基础的要求。但只做手工测试在未来没有竞争力,对个人职业发展也不好,现在自动化测试和性能测试越来越受到企业的重视,这样自动化测试和性能测试也就成为测试工程师未来的一个发展方向,而这两个方面显然比手工测试更有竞争力,同时待遇也要高出许多。也可以向白盒测试方面发展,白盒测试工程师必须能看懂代码,否则测试很难开展。而随着未来云计算的发展,云测试将成为一个新的分支,但就要求对自动化和性能有一定的了解。就管理方面来说,软件测试工程师未来可以选择在测试经理、测试总监、业务专家、产品经理、配置管理和质量保障几大方面发展。
将测试技术做到一定程度后即有机会成为测试管理者,也就是所说的测试经理或测试总监。由于测试工程师对产品和业务很熟悉,这样可以成为专业的产品经理和业务专家,现在很多公司在Beta 测试过程则有专门的业务工程师或业务专家参与测试。配置管理和质量保障(或质量管理)也是软件测试工程师职业的一个发展方向。
图3-7 测试工程师职业发展
本章首先介绍了测试部在企业的位置,由此可见测试的重要性。然后介绍了项目团队模型,软件测试是项目团队模型核心之一。接着介绍了软件测试组织演变的三大过程,进一步介绍了软件测试的发展。最后介绍了测试工程师晋升通道和测试工程师个人的职业发展,在未来很长一段时间内,软件测试工程师职业发展还是很明确的,同时也意味着该行业的竞争压力。
本章主要讲解了关于“软件测试组织”的内容,大家觉得有用的话记得每天来这里和小编一起学习涨薪技能哦。另外,给大家推荐一个软件测试自学群,识别下方二维码,免费领取学习课件、视频哦。
附:川石信息全国校区最新开班时间,课程资料获取13691729932(微信同号)。