张彦松 • 前饿了么资深测试工程师
老张是我认识多年的性能测试高手,一心全栈性能测试,现终于出关,这篇文章就是实在。
-----云层
性能测试-从入门到放弃(这里说的放弃,是放弃杂念)
一、性能测试初级:
A、性能测试基础:专业基础课
1、操作系统原理、《鸟哥的私房菜》(操作系统应用)
2、数据库导论、Oracle数据库管理与开发(数据库应用,何明写的)
3、计算机网络基础
4、java基础;
5、软件工程基础,大学的教科书就行。
6、数据结构与算法:对后面提高有帮助,入门可以了解就好。
B、测试入门理论:专业课
1、软件测试知识:《软件测试》-周予滨 姚静翻译、《google软件测试之道》
2、性能测试基础理论:软件性能测试过程详解与案例剖析(段念);《Microsoft .NET Web应用程序性能测试》,《Microsoft .NET Web应用程序性能测试》
这本书虽然是讲.NET下的性能测试,但是我们重点关注作者的视角。看看作者从哪些方面来阐述性能测试,可以从中得到很多启发。
C、项目管理入门:专业课
1、项目管理、敏捷项目管理。分别找一本入门书看看就好。
D、工具
jmeter、LR以及相关的书籍。
E、工作中常见的分析方法:swot分析法、pdca循环原则、5w2h分析方法、smart原则目标管理、时间管理-紧急与不紧急、任务分解法(wbs)、
二八原则、鱼骨图分析法、OGSM计划法、头脑风暴法、名义群体法、德尔菲法,这十二种分析方法,我也不能完全掌握,但还是分享给你们吧。
二、性能测试提高:
一般三-五年到了提高这个层次,这个阶段需要了解的东西就很多了。因为到了这个阶段后,你会认识到,性能测试最重要的是对性能的认识。
你已经开始不满足只是用工具来发请求,以及写一些自己都不能深入理解的性能测试报告了。
开始了解跟性能相关的方方面面:这个时候,你会发现:了解被测对象,比测试本身重要的多。
如何了解被测试对象。我总结出一些小经验:从架构的角度去了解。
从技术架构、应用架构、业务架构去了解你的被测试对象。举一个简单的例子大家就明白了:技术架构相当于一个桶,这个通能装多少,
是桶的容量决定的。应用架构相当于桶里的小容器,如水杯。主要是方便水的存储与取出。或者更好的合理利用桶的空间。业务架构更多的理解为液体的类型:如水、油、硫酸等等。相信说到这里,大家应该明白了。为什么要去了解你的被测对象。你的被测对象,直接决定了
性能的瓶颈在哪里。
通俗的说法,就是请求的方式与处理的方式,以及处理的平台决定了系统的性能。
例子虽然简单,但是实际去了解起来,却非常费事。
这里面的知识分为两类,以基础架构为例:一类是纯粹的讲基础架构,另外一类则是将基础架构的实际应用。
互联网的架构非常的庞大,分为几大类:
1、传统的互联网架构:从前端到后端:cdn(前段静态缓存)、F5(硬负载均衡)、nginx/haproxy(软负载均衡)、tomcat(应用服务器)、redis/memcache(缓存服务器)、
oracle/mysql(数据库服务器)
2、大数据的生态圈:底层HDFS,上面跑MapReduce/Tez/Spark,在上面跑Hive,Pig。或者HDFS上直接跑Impala,Drill,Presto。这解决了中低速数据处理的要求。Storm是最流行的流计算平台
还有一个有些独立的模块是KV Store,比如Cassandra,HBase,MongoDB(大数据这块的知识,我也在学习中)
3、人工智能与机器学习。这是这几年才火起来的,这块的基础架构我没有深入了解过。但是也很重要。因为有架构就有性能,有需求就有市场。
以上只是标注了与基础架构相关的知识。关于应用架构与业务架构的知识,我还无法系统的列出来。
基础架构这块的学习:可以在网上买书,先针对每个节点进行基础的了解。然后重点放在基础架构应用上。这里推荐一些书:
从全局来讲解系统性能相关:
《构建高性能的web站点》、《大型网站技术架构》、《淘宝技术十年》、《大型网站服务器容量规划》、《亿级流量网站架构核心技术》
从局部讲解系统性能相关:
《深入理解java虚拟机》、《从paxos到zookeeper分布式一致性原理与实践》、《oracle9i10g编程艺术》、《高性能mysql》、《habase权威指南》(学习中)、
《大话存储》、《大话处理器》、《大型网站系统与java中间件实践》、《hadoop权威指南》(学习中)、《大规模分布式存储系统》(学习中)、《rabbitmq》、
缓存数据库相关的书籍,我没有找到好的推荐。
纯性能优化相关:
《java性能优化权威指南》、《性能之巅》、《java性能优化 让你的java程序更快 更稳定》。
上面只是对互联网技术架构的一点小小的认识,还不包括人工智能、机器学习。因为这些方便,我确实积累的少了。不敢妄谈。
至于应用架构、业务架构之类的,确实没有找到系统介绍的好书。听说在这几本书中可以窥探一二:《领域驱动设计》、《架构之美》、《企业应用架构模式》、
《企业架构》。
我个人的本意是想把商业战略、企业架构(业务架构、IT架构)、运营架构都弄明白是怎么回事。因为我觉得,这些跟性能都有莫大的关系,也算是对我从业这么多年来的一个交代。
每个人,最终还是要向自己交代的。
三、不仅仅关注性能,领域结合是产生创新的方式之一。
可能你会认为,这个阶段还会有更多高深的东西。我的理解,这个阶段更多的拓展学习了。
有了第二个阶段的学习,你已经具备了深厚的内容。基本没有你看不明白的东西了。
接下来需要拓展自己视野:
深入了解并学些一些自动化相关的知识。
深入学习一些测试开发的知识。
了解一些前沿的模式:如devops、testops
关注核心论坛或者各种峰会对性能的新的认识。
把你的知识拓展到性能、并发、高可用、安全、伸缩、扩展等领域去。
了解各大互联网公司对技术这块的理解。
了解一些有意思的新观点,如:泊松分布、排队论、MaKov模型、Monte carlo模拟、自相似理论、admda理论
四、第四点不知道写点什么了,也许应该去研究一下历史,如《二十四史》,又或者是《明朝那些事》。毕竟是人文生活,还是要回归社会的。
总述:一家之言,不可不信,也不可全信。