本人一直在做产品和项目的公司测试部门从事测试工作,从未在第三方测试团队中工作过,因此,本人的观点仅限于非第三方测试团队。
在本人的从业经历中,先后涉及过医疗、水利、政府、军队等行业,以个人的经历来看,在非第三方测试团队中,是不存在专职的性能测试团队的。这是由于所在公司的性质以及测试工作任务所决定的。由于处在非第三方的测试团队中,其工作任务就是负责公司的产品或项目的质量保证。在日常的工作中,80%以上的工作属于需求分析和功能测试,当然,对于做产品的公司来说,功能测试中还包含自动化测试;而性能测试工作仅在功能稳定后,才会正式开展,因此,性能测试的工作量仅占日常工作的20%左右。正是由于性能测试工作所占日常工作量的比重不大,所以,公司不可能组建专职的性能测试团队,因为公司不可能让这些性能测试工程师在一年的大部分时间内都闲着。。。
(当然,性能测试应该从单元测试就开始,这样才能尽早的发现问题,这也是国外软件测试所推崇的。但是,这不符合我国当前的软件测试发展形势。毕竟软件测试行业在国内尚属发展初期,现在能组织性能测试工作的公司就已经很不错了,有相当一部分公司都是只要软件不宕机,压根就不会想起性能测试的。 )
抱怨完当前的形势之后,咱们言归正传。虽说公司不会组建专职的性能测试团队,但是公司却提倡软件测试人员具备性能测试的技能,平时从事功能测试,一旦有性能测试需求,也可以立即投入。(给的是功能测试工程师的待遇,干的却有性能测试工程师的活。公司还真会算账。。。 )
接下来谈一下测试团队应具备的性能测试技能吧。
首先,性能测试的重点是场景设计。那么,测试团队就必须具备需求调研和分析的能力。有人会说,性能测试指标都是用户给定的,还需要需求调研和分析能力么?答案是肯定的。因为相当一部分用户所提出的性能测试指标是不可靠的。他们提出的性能测试指标,往往是拍脑袋拍出来的。如:一个业务发生频率不高的系统,但用户数却在4万人,这时候用户很可能就会要求并发数在4000左右,但实际上没有那么大的业务量,系统是不需要那么高的并发数的。反之,有的系统虽说用户数不是太多,但是业务发生频率很高,这种系统要求的并发数也不会很低。因此,测试人员必须具备需求调研和分析的能力,能够引导客户,得到真实的业务发生频率、发生类型、业务量以及数据量。从而,分析出系统可能出现性能瓶颈的业务,并进行场景设计;
其次,应具备一定的系统分析能力。被测软件所用框架、中间件、业务组件、硬件、网络、部署结构等所有因素,哪些地方有可能出现性能瓶颈。那么,它一定在你的测试场景覆盖范围之内。如:一个使用频率不高的业务组件,但由于业务复杂度较高或资源冲突等因素,很有可能会成为性能瓶颈的。
最后,就是应具备负载生成工具及监控工具的应用能力。毕竟,设计的性能测试场景是需要被执行,性能测试执行结果是需要被采集的。
如果已经掌握上述的各项能力,那么说明这支团队已经具备初级的性能测试执行能力。接下来,再谈一下更高的要求。
第一,掌握硬件的配置及原理。如:F5负载均衡服务器,采用的是哪种均衡策略,这将直接影响到你的性能测试场景的设计及执行的效果;
第二,掌握被测软件所用操作系统的常用命令,它可以帮助你启动/关闭操作系统的服务,以及系统资源使用情况;
第三,掌握被测软件所用中间件的配置参数及监控方法;
第四,掌握必要的开发能力。商业化的测试工具毕竟有一定的局限性,很难完全支撑各类性能测试的执行。因此,需要开发必要的负载生成工具、预埋数据脚本、监控工具等;
第五,掌握测试结果分析和调优的能力。测试结果仅仅是采集到还是不够的,还需要分析系统运行时的资源使用情况,分析系统性能瓶颈以及是否存在由于性能原因导致功能性错误等问题。当然,如果能够根据测试结果,给出性能瓶颈的解决方法,那么,这支测试团队就是支高素质的性能测试团队。
以上仅仅是个人的一些观点,不足之处,还望大家指正。