您的位置:首页 > 其它

性能测试经验总结(转)

2017-05-31 17:13 489 查看
本人2011年初开始接触web性能测试,那时公司还有专门做性能测试的团队,我是刚毕业参加工作半年后在一家电子商务公司直接做的web性能测试,不是从开发转过来的,一年来背后一直有股力量在逼着自己去学新东西。当时的想法是,这我要是会了,我就不要每次去求别人帮我忙了,这样就能节约时间了,呵呵。下面分享自己一年来的学习路线,希望对想开始学web 性能测试的有一定的帮助。

一. 对于LoadRunner工具的使用就不叙述了,对于WEB的性能测试有需要注意的地方。

1. WEB里面衡量系统的处理能力使用的更多是PV和UV(google analysis 免费),所以在定义事务时,需要把一个完整的页面定义为一个事务,里面有个特别注意的就是302的跳转,对于一些操作,例如登陆一个购物车网站,在成功登陆后会跳转到新的页面。对于这种情况也需要把跳转后请求的页面也放在事务的边界里面。在分析响应时间时可以使用web page breakdown功能来分析操作本身以及跳转后的页面。这个跳转后的页面在操作提交函数里面一般是存在的,参数名为URL,值为具体的URL,一般为相对路径。

2. RTS(Run time settings)里面有个Download non-HTML resource 的选项,这个测试的时候需要注意,根据需要确定是否选上,也是每次做测试之前重点检查的地方

3.其他的 比如参数的取值方式,参数的数据量的大小等对测试结果影响比较大,需要注意。对一些提交类的操作,尽量做一些检查点和设计成手工事务(根据提交后返回的结果来判断事务是否成功)

二.分享下这一年来我的学习摸索路线,总的按照这样的思想:目前最需要掌握的,会影响执行测试的先学,还有就是对于有些技术理解为主,先把自己的知识面铺开,这是一阶段,然后再挨个去深入学,这是第二阶段,再根据自己感兴趣的领域进一步深入,成就一技之长。

我的学习摸索路线如下

系统架构IHS+WAS+DB2,拥有独占的性能测试环境(ctrix+2Web+2WAS+1DB+EIS)

计算机组成原理,计算机网络,操作系统,这三门课本科都学了,可是工作了才发现都还给老师了,刚接触性能测试那会,重新把这些教材翻出来了仔细看了一遍,这三门基础课真的很重要很重要(体会到考研为啥这三门是专业课的的一部分了),基础打牢了才能接着学其他的了。

HTTP协议/HTML/XML的基础知识

1.1 HTTP协议的原理 其中各种状态的含义 例如200 302 404 500 等常见状态代表什么

1.2 HTML的构成 , Header,Body,XML CSS, JS cookie, 浏览器 的原理 学会使用 firebug工具来分析页面元素,学会使用 Yslow工具对前端的页面性能进行评估。

1.3 域名, hostname , DNS, LoadBalance,(F5. Ctrix)交换机, 防火墙 ,网卡的工作的原理

linux(AIX)操作系统

2.1. linux 操作系统内存(实存,虚存,交换swap)的原理,会用vmstat,free,svmon(AIX用来监控native space)命令来监控内存。

2.2 磁盘的工作原理,文件系统的原理,DISK的IO原理,会用df 查看磁盘状态 iostat 查看DISK IO的情况。

2.3 网络(以太网echo,令牌lo的原理) TCP/IP连接的原理

2.4 Linux操作系统的基本命令,ls ps cd tar grep kill ftp(get put) mkdir chmod chown cp mv vi more tail rm 这些等等

2.5 会使用nmon top(topas) vmstat iostat netstat free 监控系统的各种资源,明白命令的输出的各种指标的含义

java web开发

3.1 java的技术基础,多线程技术

3.2 JSP, sevlet,EJB的原理,了解J2EE的常见的几个框架,本人学了下structs,Hiberate框架的原理。

3.3 java的内存回收原理 学会根据GC日志分析内存的回收以及JVM 的heap 和native 的监控,诊断GC问题

3.4 学会heapdump的原理,会使用工具分析heapdump。

3.5 会使用JDK自带的工具Jconsole来监控JVM

Web Server的原理

4.1.会webserver服务器的启停命令

4.2 理解webServer(IHS为例)的配置文件httpconf里面的 ThreadLimit ServerLimit StartServers MaxClients MinSpareThreads MaxSpareThreads ThreadsPerChild MaxRequestsPerChild Timeout KeepAliveTimeout 这些参数的作用

4.3 理解plugin的工作原理以及plugin-cfg.xml文件的配置,能根据需要调整该文件进行测试。以及能够诊断因为plugin的配置不正确导致的环境的异常

5.中间件

5.1 学会使用中间件的基本操作命令,启停server,部署应用,节点同步,调整日志级别,查看系统的systemout.log,systemError.log GClog .会基本的服务器操作。

5.2 学习中间件的原理,例如WAS的基本原理以及熟悉一些常见的需要根据具体的应用类型而调整的配置参数,例如webcontainer的大小,JDBC池的大小,session 的管理,动态高速缓存的配置等。在学这部分内容的时刻可以做一些对比的实验,调整这些参数看对系统性能的影响。

5.3 结合学的分析GC的技术,可以对中间件的JVM的heapsize 和native space进行监控,并结合heapdump的分析进行调整,不仅仅是heap大小的调整,还有对一些heap中存储的一些缓存的数据(Dynamic cache)等特殊用途的数据的配置进行调整。

达到这三个方面后,基本不怎么会因为环境因素阻碍你做测试了。

数据库的原理

6.1. 熟练的写SQL,准备测试数据需要从数据库得到,所以会SQL是基本功了,这之前还得对数据库中的表的建模足够熟悉,而且表之间的关系也要熟悉。

6.2. 熟悉数据库的逻辑结构和物理结构,表,表空间的基本原理,会数据库的基本操作,比如建索引,runstat,reorgchk,db2diag,db2expln,db2top,db2pd(DB2的)

6.3. 学会生成数据库的快照,掌握一种分析快照的工具,要明白快照里面的指标的含义(曾经针对一张快照学了接近一个月,挨个的学里面指标代表啥意思,后面的原理是什么。)

数据库是接触的比较少,有专门的DBA在调优,所以学习的比较多的都是原理,主要是为了和他们沟通的时候能表达出来,或者他们在分析问题的时候能听懂。

在学习了上面后整体把握整个系统的架构 考虑各种服务器之间的连接的原理 以及一些需要配置的参数。把握了整个系统的架构后就能明白漏斗模型的原理(从前往后连接数越来越小的模型) 通过一些测试,可以了解到一个系统的各部件的处理能力是不是平衡的,避免某类服务器的处理能力过强或者过弱。比如你把应用压满了,DB却5%都不到,这样的情况就是DB相对应用的处理能力过强,需要调整。一般把应用压满,DB 30%-40%比较合理些,一般不要让DB的CPU利用率超过50%。

上面是这一年来去学习的内容,一层层的往下学的。接下来也就是2012年就要开始学习linux操作系统的调优,shell, SQL优化。

谈谈自己快一年的web性能测试的感受

1. 业务知识很重要,针对不同的业务场景,需要对脚本以及测试场景进行一些特殊的设计,且一些常规的设置也要按照业务规则来设定。(比如一些数据是从cookie提取的,就可能需要使用操作cookie的函数了)

2. 性能测试是一个不断被打击的过程,自己所掌握的那点只是总是不够,需要不断的去学习新的东西。在这种不断被打击的过程中,技能一点点的在积累,回过头去看一年前的自己和两年前的自己,只希望暴风雨来的更猛烈些吧。

3. 性能测试需要蛮高的学习积极性,有兴趣固然好,但是有些是必须要去学的,就得逼自己去学了,有句话说的好,人都是被逼出来的。

诚希望认识从事Web性能测试的志同道合之士共同交流,共同进步

一些学习资料

1. GC的原理 http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html#0.0.0.%20Total%20Heap%7Coutline

2. IBM的infocenter deploywork 以及IBM redbook 里面有大量的IBM的websphere产品的学习资料,很权威

3. Oracle的文档库(http://www.oracle.com/technetwork/indexes/documentation/index.html#sys_sw) 有oracle(包括java EE)的相关产品的学习资料

4. Apache 的学习网站http://www.apache.org/

5. 我的另外一个帖子http://bbs.51testing.com/thread-520084-1-1.html

6. 《构建高性能的websphere企业级应用》虽然是IBM的产品,但是里面讲的怎么做性能测试很不错。

7. 《构建高性能web站点》不错的一本书。

8. Jconsole 监控工具的详细使用http://www.oracle.com/technetwork/java/index.html

9. Nosql(非关系型数据库) http://blog.nosqlfan.com/

10. Nmon工具的使用以及下载地址http://nmon.sourceforge.net/pmwiki.php?n=Main.HomePage
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: