对于性能测试来说,个人认为知识面要比知识深度更加重要一点,除了测试工具和轮,至少要同时要对操作系统、网络、数据库、前端、语言、通讯协议都有所了解。然而在当今这个信息高速传递的社会,特别是IT行业,先进的知识与技术是一个企业立于不败之地关键因素。因此新技术新架构新思想也是我们需要了解和熟悉的。
作为一个合格性能测试工程师,必须要有大局观和系统化的思维,要站在整个系统测试的角度看问题。一个优秀的性能工程师必须要有相当的知识广度。否则在测试期间,你必须依赖外界援助,例如:开发、运维、DBA。不仅效率不高,更关键的是可能会被误导,漏掉很多性能BUG。我常常遇到团队童鞋们在压测时一看到TPS降了或者升不上去,就死盯着应用,就着急的去分析线程或做CPU Profiling。找不到原因后有时问到我时,我习惯的第一句总是:系统架构是怎么样的?你看过数据库码?看过压测客户端码?一定要先从全局看问题,系统(操作系统、数据库、应用程序)整体配置和常见优化是否到位,然后再隔离到是应用层面、DB层面抑或是压测客户端层面后再进一步深入定位问题。
一名合格的性能工程师应该包含如下能力:
1)熟悉Java(包括JVM内在机理)/c/c++。理由很简单,主站大部分的外围应用和中间件都是 JAVA写的,底层核心系统是c/c++写的。
2)精通linux管理和shell编程。理由更简单,shell熟练与否非常大程度决定了一个工程师的工作效率。例如可以用脚本实现linux基本配置的优化,jdk、监控自动化安装等。
3)对数据库管理和性能优化有自己的实践和心得(数据库永远是个性能要点)
另外,性能测试还会接触各种各样的组件,MQ、hadoop、Elasticsearch、Flume、FastFDS等等,我们很难对每个组件都进行深入研究,但是需要了解它的原理和应用场景,方便定位和问题的排除。说到底,做性能一是有相当的知识广度,二是经验积累。
下面是我吸取前人的经验整理出来的性能测试技术体系:
性能测试的常识你知道几个?
性能测试环境的重要性和需要注意,你知道多少?
下面就是性能测试专家需要考虑的内容了
来个全的,可能看不清楚,想要获取全量的请到飞测QQ群获取。
百度网盘:
链接:http://pan.baidu.com/s/1dE5fwYH 密码:mw4k