从Jackei的一篇文章《要做好性能测试,该掌握些什么?》,一些觉得自己受益匪浅的评论和内容
如果想真的做好性能测试,需要学习的东西还是比较多的。简单列一下吧。
1. 精通性能测试的基本概念,过程,方法论,了解性能工程;
2. 精通1个商业性能测试工具+1个开源性能测试工具,知道工具可以做什么,不可以做什么,以及工具使用中常见的问题和解决思路;
3. 扎实的计算机专业基础知识,包括计算机组成原理、操作系统、数据库原理、计算机网络原理;
4. 熟悉至少1个常用的数据库产品,例如SQL Server或者 Oracle,能进行一般的数据库管理操作,熟悉SQL脚本的使用,熟悉常用的数据调优工具和常用的counter;
5. 熟悉至少一个操作系统的原理,Windows或者Linux都可以,熟悉操作系统的体系架构、操作系统的重要基础概念,以及内存管理、存储/文件系统、驱动/硬件的管理、网络协议的实现及构成、性能的监控方法和原理,熟悉常用的counter;
6. 熟悉至少一个web server 产品,例如apache,了解一般的配置和常用的counter;
7. 熟悉至少一个应用服务器产品,例如tomcat,了解一般的配置,熟悉常用的服务器性能监控方法和原理,熟悉常用的counter;
8. 至少熟悉TCP/IP协议,熟悉HTTP协议,至少见过并了解三层、四层交换或者路由器的使用和配置。了解常用的与网络性能相关的counter;
9. 了解一般的大型企业应用的部署架构和应用架构;
10. 了解知名大型web应用、高并发量、高流量、实时响应要求高的超大规模网站的架构和优化历程;
11. 熟悉统计学的基础知识、常用分析方法以及实验设计方法,了解数学建模相关的知识;
12. 熟悉专属行业的业务知识和用户场景,例如电信行业的OSS系统所涉及的业务知识和用户场景,证券交易系统所涉及的业务知识和用户场景;
13. 大量的实际性能测试及优化经验;
14. 积极的参与到各类圈子、社团的讨论和交流、分享中。
应该很难有人真的都掌握以上的全部内容,在一个公司里面,团队的力量是最重要的,作为一个测试leader来说,重要的是考虑在团队里具备了满足自己产品要求的技术能力,并不是盲目在要求全队的每一个人都具备各种能力,这不太现实。但是对于个人来说,在性能的学习及研究的的过程中,可以分析自己的发展目标及服务企业的产品要求,根据技术需求的轻重缓急进行有步骤地学习和深入。
当然,如果感兴趣的话都可以去涉猎,但是还是建议要分优先急及深入研究的主题,不能一同对待。
把测试本身跟测试工具拉的太近是一个很大的误区,我一直坚持认为测试工具的掌握不那么重要,测试方法,测试理念,测试思路反而跟重要。实在没有工具,你自己写一个啊,有时候我们做测试就是因为太依赖工具,反而把一些根本的东西丢了比如测试用例设计(以为有了QTP就可不用设计?),测试结果分析(以为有了LR Analysis就可以不用分析吗),测试流程(以为有了TD或者QC就可以完成测试流程吗)
作者的一个总结:
1. 要做好性能测试,的确是需要丰富的专业知识和行业背景知识的,同时也需要大量的实际经验,仅仅会使用某个测试工具完成脚本的录制、场景设置和图表生成等简单操作是远远不够的,但是学习本身要根据实际工作需要来进行,慢慢来;
2. 性能测试是需要teamwork的,单枪匹马很难做好。所以,测试工程师要根据自己的经验和专长,明确自己在性能测试过程中的定位,因为性能测试相关领域的学习和经验积累是一个漫长的过程,在具体任务面前,不要勉强自己。
如果再回头看我一开始整理的那份表,对于没有做过实际项目开发就直接做测试的同行来说,的确是很难全部掌握好的,但是有几项是必需要掌握好的,包括:
1. 精通性能测试的基本概念,过程,方法论,了解性能工程;
2. 精通1个商业性能测试工具+1个开源性能测试工具,知道工具可以做什么,不可以做什么,以及工具使用中常见的问题和解决思路;
9. 了解一般的大型企业应用的部署架构和应用架构;
11. 熟悉统计学的基础知识、常用分析方法以及实验设计方法,了解数学建模相关的知识;
12. 熟悉专属行业的业务知识和用户场景,例如电信行业的OSS系统所涉及的业务知识和用户场景,证券交易系统所涉及的业务知识和用户场景;
毕竟性能测试包含的工作内容还是比较多的,从性能需求的review,到测试方案和计划的制定,测试用例的设计,实验室环境的搭建和数据的准备,再到脚本的录制开发和测试执行,以及后续的性能分析和不断的优化,要求测试工程师全部都能做好也是不现实的。
但是掌握好了上面的这些内容,至少可以把“从性能需求的review,到测试方案和计划的制定,测试用例的设计,实验室环境的搭建和数据的准备”这一段做好,这个是份内的事情;
如果“脚本的录制开发和测试执行”遇到一些实际的难题,可以找开发人员帮忙解决,但是主要负责人还是测试工程师;
最后的“性能分析和不断的优化”的确是难度最大,对于测试工程师来说也最难掌握好的,因为毕竟是不同的专业路线了,而且即使是经验丰富的开发人员,也都不是每样都能很强的。所以对于这部分,倒是可以考虑由架构师或者PM召集被测模块的开发人员+技术专家来一起进行,测试人员在这个过程中不断的跟进学习,让自己能成长起来,以后能解决越来越多的问题。
剩下的,就是永不停息的学习,学习,学习,以及不断的积累经验了