今天有同行在blog上留言,问“想从功能测试转向性能测试,但不知道需要哪些了解哪些知识,及怎样进行一个系统的学习”。这类问题之前也被问到很多次了,所以这次干脆整理一下,发个主题供同行们参考。如果需要补充,也欢迎大家留言一起讨论。
如果想真的做好性能测试,需要学习的东西还是比较多的。简单列一下吧。
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. 积极的参与到各类圈子、社团的讨论和交流、分享中。
暂时先想到了这么多,有兴趣的朋友可以一起讨论一下,相信每个人都有自己不同的经历和感想,可以跟其他人分享一下,提供参考。
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。