软件测试实用技术与常用模板(第2版)
上QQ阅读APP看书,第一时间看更新

1.6 软件测试的前景分析

1.6.1 现今软件测试的发展趋势

近几年,我国的软件测试行业进入一个飞速发展时期,虽然比发达国家的软件测试起步晚,但是发展速度与专业性却让很多发达国家的测试专家愕然。软件测试工作需要积累,测试经验越多,工作年限越长,越“吃香”。在发达国家,许多测试专家都有长达40年的工作经验,但是在我国,10多年的测试人员就可以称为专家了。这些事实一方面体现了测试工作的长久性,另一方面也说明了我们的测试工作起步较晚,还需要不断学习、进步,我们的发展空间还是巨大的。

随着互联网技术的发展,出现了云计算、大数据、物联网、“互联网+”等新兴行业。在对这些新兴行业做测试时,传统测试方法已不能满足需要,一些测试爱好者开始探索新的测试方法,他们从不同的角度分析测试来满足测试需求。由于软件复杂度越来越高,功能越来越多,纯手工测试不能满足较快的迭代。为了解决这一问题,人们开始开发自动化工具来代替复杂的测试过程。由于大多数自动化工具都是由公司内部研发,所以对测试人员技能要求较高,只有会写代码的测试人员才能胜任这项工作。为了满足快速迭代,目前国内市场已经向自动化测试方向发展。

1.6.2 软件测试人员的发展方向

目前,软件测试正处于快速发展的阶段,软件测试人员的发展方向也多种多样。从软件测试行业发展来看,软件测试职业发展大致可分为技术路线、管理路线和业务路线三个方向,如图1-13所示。

图1-13 软件测试人员的发展方向

1.技术路线发展方向

软件测试工程师属于软件测试职业生涯的初级阶段,其适用范围是入行软件测试3年内的常规测试从业者,其主要工作内容是按照测试主管(即直接上司)分配的任务计划,编写测试用例、执行测试用例、提交软件缺陷,包括提交阶段性测试报告、参与阶段性评审等。

按照技术路线发展,初级软件测试工程师发展到高级阶段不仅要掌握软件测试方法和技能,还要具备测试设计、测试执行、测试支持的能力。例如此阶段的自动化测试工程师应掌握使用自动化测试工具进行相关的黑盒测试,并熟练使用自动化测试工具进行脚本回放和执行。白盒测试工程师主要进行代码走读、代码审查、代码测试覆盖率分析等,技术要求较高,并须熟悉开发语言。性能测试工程师主要对软件系统性能指标进行采集分析和运行效率检测,技术要求更高,因为软件的性能瓶颈归根结底将落实到代码的运行效率问题。要做好性能测试,性能测试工程师至少要懂开发:为了发现性能问题,要懂软件开发架构;为了定位性能问题,要懂操作系统、网络协议、应用服务器乃至数据库的原理与使用;为了最终解决性能问题,要根据定位的问题有针对性地对代码、操作系统、网络架构、服务器、数据库进行优化。

基于高级阶段再接着发展,可以细分为资深测试工程师(主要负责开发测试工具、开发测试用例、软件质量控制)和系统分析工程师(负责产品运行维护、售前支持、技术支持)。这些高级技术人才完全与常规测试经理平齐。

这一阶段的资深测试工程师包括资深自动化测试工程师、资深白盒测试工程师、资深性能测试工程师、安全性测试工程师、标准化工程师等。

资深自动化测试工程师是由自动化测试工程师晋升而来,主要负责自动化测试脚本的设计和编写,还要为公司整个自动化测试的发展,设计自动化测试框架,开发内部自动化测试工具。

资深白盒测试工程师的工作内容包含常规白盒测试工程师的内容,除此之外,要协助测试经理或测试总监攻关测试方法与技术性难题,因此其技术水平更加高深。如果常规白盒测试工程师是停留在某种程序设计语言类型的代码级测试,那么资深白盒测试工程师就要脱离程序设计语言本身,结合不同架构,在多种开发技术交互的情况下,寻找代码测试方法,并具有对代码优化的能力。

资深性能测试工程师来源于常规性能测试工程师,除了具备常规性能测试工程师要求的整体性能测试方案设计能力以及软件系统性能问题定位和性能优化能力之外,还要对主流的软件开发模式下的应用系统具有敏锐的洞察力和感知力。

安全性测试工程师其实是从性能测试工程师衍生而来,因为只有具备性能测试经验,才能对软件的开发模式、实现架构和技术本身充分了解,才会感知和预见软件系统存在的安全漏洞,而且其测试方面的经验,也能让他知道如何通过系统漏洞尝试攻击软件系统,达到测试的目的。

沿技术路线继续向上提升,我们称之为高级顾问。他们成为该领域的技术专家,技术专家在自已经营的领域里具有个人独到的见解和深厚的技术实力,而这类人才可以不再从事具体的测试工作,而是提供行业性测试技术咨询、培训、质量控制指导等,对软件测试整体行业的发展起到了鲜明的带头作用。

2.管理路线发展方向

向管理路线发展的测试工程师基本上已从事了多年的测试工作或担任业务专家,在长期的测试工作中定位了自己的发展方向。如发展为阶段负责人,进行项目管理工作,负责与各部门交流沟通,进行测试工作计划和方案的设计、测试进度的把控、测试报告的汇总以及组织各阶段的评审工作。

按照正常发展路线,要求管理与技术并重,所以测试工程师可向上晋升到测试主管、质量主管、项目主管,他们通常是拥有2~5年职业经验的测试从业者。项目主管的工作内容是根据项目经理或测试经理的计划安排,调配测试工程师执行模块级或项目级测试工作,并控制与监督软件缺陷的追踪,保证每个测试环节与阶段的顺利进行。测试主管负责该流程的具体实施,而更多的工作是思考如何对软件进行更加深入、全面的测试。

当管理路线继续向更高阶段发展,即可发展为测试经理、质量保证经理、测试总监、产品经理、技术经理、项目经理、业务经理。

测试经理是更高级别的测试管理者,一般是有4~8年职业经验的测试从业者,他们在管理与技术能力上都比较成熟,也可以担任高级顾问的角色。测试经理负责企业级或大型项目级总体测试工作的策划与实施,除了需要统筹整个企业级或项目级测试流程外,还要对不同软件架构、不同开发技术下的测试方法进行研究与探索,为企业的测试团队成员提供指导,同时还要合理调配不同专项测试的人力资源(如业务测试工程师、自动化测试工程师、白盒测试工程师、性能测试工程师),对软件进行全面的测试。另外,在一些企业里,测试经理还需要与客户沟通,负责部分销售性或技术支持性工作。

测试总监属于常规发展路线的最高域,一般在大型、跨国型软件企业或者专门的测试服务型企业会设立该职位。设立测试总监的企业,该职位一般相当于CTO或副总的级别,是企业级或集团级测试工作的最高领导者,驾驭着企业全部的测试与测试相关资源,管理着企业的全部测试及质量类工作。这个职位也要求技术与管理双结合。

产品经理在很多企业都会设立,可以说是质量保证经理的派生,只是产品经理更侧重于软件产品化之前的质量监控工作,包括软件开发流程、软件测试等技术与管理以及产品将要发展的方向。

3.业务路线发展方向

对于从事业务路线的业务专家或业务测试工程师,要求其熟悉行业类软件的行业背景、业务知识以及该行业的工作流程。业务测试工程师的工作内容主要是黑盒测试,属于功能范畴,因此对技术要求不高。一些大型行业类软件公司的业务测试工程师薪资丰厚,但是可以完全不懂技术,这是由其工作性质决定的。他们甚至连软件的界面测试都不做——交给常规测试工程师实施,而完全关注软件的业务性和易用性。由于其深厚的行业背景,可以在软件正式发布前提出很多建设性意见,而这些建议正是软件开发商提高产品易用性、增加用户满意度、开拓市场、创造利润的关键因素之一。

按常规路线其可发展为资深业务专家,主要担任行业内咨询、顾问的角色,几乎脱离了测试工作本身,更多的是为企业的产品需求分析、设计、编码、测试等各个环节提供指导,其目的也是提高软件的易用性和稳定性,减少后期不必要的需求变更。

继续向更高阶段发展,其可发展为行业业务专家。常见的行业类软件的应用如金融、电信、安全、石油、航空、医疗行业等。