51Testing软件测试论坛

标题: 分享我的Web性能测试学习摸索路线 [打印本页]

作者: 逝水流年    时间: 2011-12-7 22:33
标题: 分享我的Web性能测试学习摸索路线
本帖最后由 逝水流年 于 2011-12-8 09:23 编辑

本人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)

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

1. 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)交换机, 防火墙 ,网卡的工作的原理

2. 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 监控系统的各种资源,明白命令的输出的各种指标的含义


3. 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


4. 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. 数据库的原理

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/technetwor ... al%20Heap%7Coutline
2.        IBM的infocenter  deploywork 以及IBM redbook 里面有大量的IBM的websphere产品的学习资料,很权威
3.        Oracle的文档库(http://www.oracle.com/technetwor ... n/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://java.sun.com/developer/te ... /J2SE/jconsole.html
9.        Nosql(非关系型数据库) http://blog.nosqlfan.com/
10.        Nmon工具的使用以及下载地址http://nmon.sourceforge.net/pmwiki.php?n=Main.HomePage
作者: jlxyshimei    时间: 2011-12-7 22:51
学习一下 总结的很好
作者: lxf909    时间: 2011-12-7 23:55
真的越来越崇拜你了。。。小武V5
作者: ymwang119    时间: 2011-12-8 09:11
楼主用一年的时间学了这么多知识,佩服啊
看来我只是学了点皮毛,还得继续向您学习
作者: 云层    时间: 2011-12-8 10:08
这个进步的确实很快了,不过以前应该有很多基础吧
作者: ymwang119    时间: 2011-12-8 11:00
又仔细看了一下,楼主主要介绍的是web测试的知识积累
能否给大家介绍一下web性能测试的整体流程或是测试要点,还有想问下楼主的是,web性能测试还需要测试服务器(例如Tomcat)的负载能力吗,是做web测试之前还是发现了问题之后呢?
作者: blue40131    时间: 2011-12-8 15:28
我也测试差不多一年了,感觉自己还是什么都不懂啊
作者: wower1985    时间: 2011-12-9 09:30
进步很快,公司也给了你一个好平台,看的出是个好公司,一般公司测试任务都比较急、多,想实践性能学性能测试都没多少机会,楼主好好努力!
作者: weiwei911909    时间: 2011-12-9 11:29
需要这么多基础知识的累加,非科班的表示看到被吓到
作者: weiwei911909    时间: 2011-12-9 11:29
需要这么多基础知识的累加,非科班的表示看到被吓到
作者: ycc8642    时间: 2011-12-9 12:08
涉及的知识面真很多诶,前路坎坷啊
作者: 不做羔羊    时间: 2011-12-9 13:57
hold不住啊,这么多要学啊,无法淡定
作者: xudongming    时间: 2011-12-9 14:57
好文章收藏了    哈哈
作者: 0815com    时间: 2011-12-9 15:52
一起加油
作者: 逝水流年    时间: 2011-12-11 22:50
本帖最后由 逝水流年 于 2011-12-11 22:56 编辑

回复 6# ymwang119


    这个不好描述,得好好组织下,而且要敲不少字了。。。你留个联系方式,一起交流
作者: ymwang119    时间: 2011-12-12 09:15
本帖最后由 ymwang119 于 2012-3-27 22:39 编辑

回复 15# 逝水流年


   

希望您多多指教哈
作者: 335316956    时间: 2011-12-14 16:55
回复 1# 逝水流年


    学习了
作者: archonwang    时间: 2011-12-14 17:01
只能多积累了。每个领域内的知识量要求较丰富,做精深比较困哪
作者: SQQ    时间: 2011-12-15 09:47
佩服得不得了呀,真是惭愧,我很多时间都被闲置了,一定要向你学习。
作者: SQQ    时间: 2011-12-15 09:48
佩服得不得了呀,真是惭愧,我很多时间都被闲置了,一定要向你学习。
作者: wolf1019    时间: 2011-12-15 09:57
呵呵  学习了
作者: jiangliang1    时间: 2011-12-15 11:41
楼主的学习机会好啊,看来自己得抓紧时间啊。
作者: Juventus1984    时间: 2011-12-15 11:58
我也做了一年的性能测试拉,跟楼主一比起来真是差距太大了啊,无法淡定拉,要好好学习,天天向上拉,哈
作者: nieryy2009    时间: 2011-12-15 12:58
我去~   LZ 很的很厉害啊。   基础应该很好的.. 不然,这一年的进步不小啊..   公司不错?能否透露下。。
作者: annaier_go    时间: 2011-12-15 14:40
你换工作吗?
www.emar.com.cn,明年即将上市的公司的招聘性能测试人才,
有兴趣联系我。
邮箱:annaier_go@163.com
作者: llaflj    时间: 2011-12-16 08:35
受教受教
作者: tianmingyang    时间: 2011-12-16 17:54
lz太牛了 一年学了这么多东西~~~~~
作者: ymwang119    时间: 2011-12-19 08:48
本帖最后由 ymwang119 于 2012-3-27 22:49 编辑

回复 15# 逝水流年
期待您的资料
作者: dionysus    时间: 2011-12-19 10:44
lz非常厉害啊!很多人以为Web性能测试很简单,可能也是受LR的HTTP协议影响,简单录制回放,最多参数化检查点弄一下就可以了,其实Web性能涉及的范围非常广也非常深,lz给我们提供了一个很好的榜样,很全面的学习范围指导,向lz学习!
作者: 真实的追求者    时间: 2011-12-19 11:54
很不错,学习了
作者: zepengli    时间: 2011-12-20 00:12
楼主,很强大。也佩服LZ那种对知识渴望,对于我们现在年轻人来说,不要浪费一点时间,尽快的学习点东西
作者: 51fangfang    时间: 2011-12-20 11:10
学习~~~
作者: xuxf    时间: 2011-12-21 13:36
学习了!
作者: trmery    时间: 2011-12-21 16:58
佩服 佩服 学习了
作者: trmery    时间: 2011-12-21 17:02
楼主  能加我QQ么,向你学习。期待你加我为好友
QQ:405330153
作者: gexiaolei    时间: 2011-12-21 19:35
必须向你学习啊
作者: 逝水流年    时间: 2011-12-24 20:26
回复 35# trmery


    加了。
作者: yingchun2915    时间: 2011-12-27 09:29
受教了
作者: aplum    时间: 2012-3-22 12:52
看到了。 一直想知道要怎么下手学性能测试。在这里谢谢啦。 希望以后可以多多分享啊。
作者: kili2012    时间: 2012-3-27 15:32
这么多知识需要学习,压力与动力兼有啊
作者: ShelleyChen    时间: 2012-3-29 18:01
看完楼主的帖子,发现这几年的测试白做了。。。
好好学习,天天向上
作者: sgr_pippo    时间: 2015-6-9 15:31
一年能搞这么多?或是你基础很好?我一年半才铺了一层Java基础,掌握了一些测试工具,还有搞定SQL。牛人啊




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2