自动化功能测试,性能测试,测试管理,测试过程改进,测试培训,致力于公司测试工具引用推广。联系MSN: lcyu888@hotmail.com,QQ:914353633
江苏XXX项目性能测试总结汇总
上一篇 /
下一篇 2011-08-14 16:56:27
/ 个人分类:LoadRunner性能测试
以前做的性能测试项目以及自动化测试没时间整理,这次想了想,在这上面整理出来,以便总结,同时以便后面工作的需要,有时间的话,自动化测试的整理一下,让同行的看了给提提建议也不错的!
一、编写性能测试方案
该项目是全国范围内的一个大型项目,写方案说容易也容易,说难也难,用心写的和不用心写的不一样,高水平写的和菜鸟写的也不一样!哈哈,对项目业务,环境,用户等综合分析了解,写了初稿,改了多次,提交用户了,不过对自个要求高了,发现有些还不完善。方案保密不贴了!
二、遇到问题
1、描述:准备脚本时,在正式测试环境录的脚本中缺少一些重要请求,在开发人员机器上录时,录的脚本都正常
处理:在开发人员机器上准备好脚本,然后在正式测试环境上运行,都能看到数据中提交的数据正常
原因:对于脚本中缺少重要请求,感到很怪,没找到原因,可能是防火墙屏蔽了一些内容
录的脚本中少一些请求,是不是用的https,加密了的原因 ?录制不了不是因为https,改服务器一个设置,windows2003的,右击我的电脑-属性,选择高级页签,性能下点击设置,弹出的对话框,选择数据执行保护页签,选择“仅为基本windows程序和服务启动DEP”,应该就可以了;
2、描述:应用服务器是台pc机,用loadrunner监控其内存资源时,看到的是可用内存多少M,用户要求内存平均使用率不超过80%,这个如何计算?
处理:物理内存是16G,用loadrunner监控,平均可用内存为9G,内存平均使用率=(总内存-可用内存)/总内存
3、描述:用户指标要求:平均网络带宽占用不超过0.5M
一般不就是为了考察服务器的带宽有没有被占满
处理:最简单的打开任务管理器看看带宽或直接用工具监控
处理:throughput+总请求量=网络上传输的总的量,一般来说请求量要远小于throughput
loadrunner中吞吐量显示最大为2600000Bytes/s,2600000Bytest/s=2600KBytes/s
网络带宽为100Mbps,100Mbps/8=12.5MBytes/s=12500KBytes/s
这能说明网络带宽不是问题吧?
请问这样分析和计算对否?
可以,带宽瓶颈就是计算你的网络流量是不是达到了网卡的最大流量,其实最简单的方法是看网络带宽使用率,比你用这个算快多了
4、描述:系统运行故障率不高于2次/年,该项指标采用什么测试方法?
处理:
5、有个查询脚本,并发执行时,运行一段时间总是报500错,再次利用loadrunner中的快照,两分钟就分析定位到问题,解决了,再次感受到Loadrunner的强大!(以前以用过)
6、平均响应时间整体曲线应相对较平稳,现有两个地方出现峰值,如何解释?
三、调优
数据库:sybase
中间件:tongweb
调优前:
测试发现数据库存在锁,并发用户上不去,报500错,响应时间长(有的长达2百秒左右,有的几十秒左右)几方面的问题,达不到性能指标要求
调优:
经开发人员大量修改,目前只存在响应时间稍长(大部份事务平均响应时间在15秒左右)问题,修改问题记录如下:
问题 | 原因分析 | 解决方法 |
com.sybase.jdbc2.jdbc.SybSQLException: The column prefix 'sf' does not match with a table name or alias name used in the query. Either the table is not specified in the FROM clause or it has a correlation name which must be used instead. | 编码错误,没有定义别名sf,但却在sql语句中使用了 | 删除 |
com.sybase.jdbc2.jdbc.SybSQLException: Attempt to insert duplicate key row in object 'hgz_gzd' with unique index 'PK_HGZ_GZD' | 主键冲突,主键生产的方法有问题,没有现场同步,导致两个线程产生了两个相同的主键值 | 添加线程同步 |
com.sybase.jdbc2.jdbc.SybSQLException: Attempt to insert duplicate key row in object 'pxkb_pxkmap' with unique index 'ak_btyw_pxkb_pxkmap' | 测试数据使用了违反规则的数据 | |
com.sybase.jdbc2.jdbc.SybSQLException: Your server command (family id #0, process id #873) encountered a deadlock situation. Please re-run your command. | 数据库锁机制设置不合适 | 改成行级锁后此问题不再出现 |
com.cvicse.hs.cyxt.commons.Exception.CyzcException: com.cvicse.exception.DataAccessException: com.sybase.jdbc2.jdbc.SybSQLException: Attempt to insert duplicate key row in object 'srks_gzdsp' with unique index 'PK_SRKS_GZDSP' at com.cvicse.hs.cyxt.srks.bo.SrksslGzdBO.saveGzdsp(SrksslGzdBO.java:342) at com.cvicse.hs.cyxt.srks.action.SrksslGzdAction.saveGzd(SrksslGzdAction.java:130) | 此问题未分析出真正的原因,把保存工作单审批的代码往后移了点后不再出现,其他业务未出现此问题 | |
2011-8-13 9:55:32 org.apache.catalina.core.ApplicationDispatcher invoke 严重: Servlet.service() for servlet jsp threw exception javax.servlet.jsp.JspException: bean identified by name 'cypxbxxPO' not exist at com.cvicse.commons.tag.util.TagUtil.lookup(Unknown Source) at com.cvicse.commons.param.tag.ParameterDisplayTag.doEndTag(Unknown Source) at org.apache.jsp.cyxt.pxkb.pxkbkcapEdit_jsp._jspx_meth_param_005fdisplay_005f0(pxkbkcapEdit_jsp.java:1088) at org.apache.jsp.cyxt.pxkb.pxkbkcapEdit_jsp._jspService(pxkbkcapEdit_jsp.java:294) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) | 具体原因未知,检查代码时未发现有问题,在其他压力测试问题解决后不在出现 | |
运行一会儿表就被锁住,不能进行正常的业务 | 刚开始性能测试时,表经常被锁,调试后发现在多线程访问工作单号生成的方法时,第一个线程开启事务后访问结束还没有提交,第二个线程又开启事务访问到这儿查询受阻,按说第二个线程等第一个提交后再查询出结果就行,难道第一个线程的提交也被第二个线程的查询阻塞了,导致死锁? | 统一修改各个业务的主键生成规则,所有业务调用同一个方法,主键生成规则中使用自己独立的事务,生成后立即提交,不用等待与业务其他内容一起提交 |
资源未关闭 | 访问数据库后没有关闭连接,读取或写入文件后未关闭 | 调用相关的close方法,关闭连接 |
java.lang.IllegalStateException: getCompressingOutputStream() has already been called | 与servlet规范有关,但在出此异常的代码中没有实际调用response的地方,比较费解 | 暂未解决,待多调试再出现后分析 |
java.lang.IllegalStateException: getOutputStream() has already been called | 与servlet规范有关,但在出此异常的代码中没有实际调用response的地方,比较费解 | 暂未解决,待多调试再出现后分析 |
调优后:
并发用户量达到要求
无出错信息,即业务成功率100%
响应时间达要求
资源利用率因服务器配置较高,什么没处理,一直达要求
四、执行
五、分析
收藏
举报
TAG: