性能测试经验总结(转)

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

  1. 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)等特殊用途的数据的配置进行调整。

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

  1. 数据库的原理

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

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
做好性能测试计划需要考虑以下几个关键因素: 1. 确定测试目标:明确性能测试的目的和期望结果,例如确定系统的瓶颈、找出系统的性能瓶颈等。 2. 定义测试范围:明确需要测试的系统组件、功能模块、交易量和用户数量等。确定测试的具体范围有助于规划测试资源和时间。 3. 选择合适的工具:根据系统的特点和需求,选择适合性能测试的工具,例如JMeter、LoadRunner等。确保工具能够模拟实际使用场景和生成足够的负载。 4. 设计测试场景:根据系统的业务流程和用户使用习惯,设计合理的测试场景。考虑并发用户数、事务量、数据量等因素,以及可能存在的异常情况。 5. 准备测试环境:搭建合适的测试环境,包括硬件、软件和网络环境。确保测试环境与生产环境尽可能接近,以保证测试结果的准确性。 6. 制定性能指标:根据系统的需求和用户期望,制定合理的性能指标,例如响应时间、吞吐量、并发用户数等。这些指标可以用于评估系统的性能表现。 7. 编测试脚本:根据设计的测试场景,使用选择的性能测试工具编测试脚本。确保脚本能够模拟真实的用户行为和负载,并能够记录相关的性能数据。 8. 执行测试计划:按照测试计划和预定的时间表执行性能测试。监控系统的性能指标,记录测试结果,以及处理可能出现的性能问题。 9. 分析和优化:分析测试结果,识别系统的性能瓶颈和问题所在。根据分析结果,进行性能优化,例如调整系统配置、优化代码、增加服务器资源等。 10. 生成报告和总结:根据测试结果和分析,生成详细的性能测试报告。总结测试过程中的经验教训和改进点,为后续的性能测试提供参考。 以上是一个基本的性能测试计划框架,具体实施时需要根据项目的实际情况进行调整和补充。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值