性能测试流程
怎么做负载测试?
怎么做性能测试?
step 1 :需求分析
分析本次测试哪个项目,哪些模块,接口还是页面,项目人手安排,项目大致时间安排,采用什么工具,通过标准等
step 2:测试计划和方案
计划:在什么节点完成什么事
方案:谁在 什么时间 什么地点 做什么事情
step 3: 环境搭建
搭建性能测试,部署项目
性能测试环境:
本地环境----》dev环境—》test 环境—》性能测试环境—》预发布环境—》灰度环境(金丝雀环境)—》生产环境(现网环境)
开发:本地环境、dev环境
测试:
手工测试:test环境(测试环境),t1,t2,t3。。。,e1,e2,测试一般测2-3轮,
预发布环境–发布之前的最后一轮验证
接口测试:test环境–详细,预发布-回归
GUI测试:test环境–等功能稳定以后,预发布–回归
性能测试:test环境—没有专门的性能测试环境,注意:测试环境有很多脏数据,需要剔除;注意错峰出行;不要影响人家功能测试
有专门的性能测试环境,就直接在性能测试环境压
性能测试环境极其配置:
1)公司自己买了专门的服务器专门用来做性能测试
2 )云租赁,需要用的时候就去租
配置:a、要么跟现网环境一致,例子:现网环境 4台 4核4G,性能测试环境 4台 4核4G—现网1000w 流量
b、要么是现网环境的等比缩放,例子,现网环境 4台 4核4G,性能测试环境1台4核4G----1000w/4
1台1核1G----1000w/4/4
性能测试的时候需要注意流量的等比换算
用户:生产环境
运维:灰度环境(金丝雀环境)
step 4 :编写性能测试脚本–狭义(接口测试)
step 5:场景设计
真实场景–数据、逻辑、思考时间,并发场景-线程数设置
step 6:执行脚本并且记录数据
结果、数据、错误日志、日志文件
step 7:分析结果并生成报告
是否通过,为什么通过,什么原因导致的,可以采取哪些方案来解决
step 8:回归
有问题的时候,开发改了代码以后需要重新测试,验证本次修改是否有效
项目安排:
1、被测项目:蜗牛商城
2、linux 下面部署蜗牛商城
应用服务器—linux
数据库服务器—windows
3、提取需求,编写脚本–负载测试----周三周四
4、提取需求,编写脚本–压力测试–周五周六
需求分析:
项目没有上线:
核心流程:支付、搜索图书、加购、查看订单
高频使用:搜索图书、支付、加购、查看订单-----加购、查看订单
项目已经上线:
没有数据部、没有产品、没有运维
只能靠自己:logs—》access
假如得到了一天的数据:0.5h* 16 *3000
接下来的工作安排:
1.统计日志文件中访问的最频繁的3个接口,方式不限(工具、代码、手动)
对排名第一或者第二的接口进行负载测试,要求响应时间是500ms
2.对我的订单页面进行负载测试
数据量参照:已有数据* 16 *3000
压力测试:
没有数据支撑:最优最大或者实际负载附近,测试时间12*n—》3-4h
注册用户*(5%-8%)
被测对象:单接口、业务、系统(找主要流程)
有数据支撑:在真实访问量附近测试(注册用户数附近)
被测对象:单接口、业务、系统
补充系统:按主要业务流程(搜索、加购、支付、订单)
按接口访问量百分比
目标流量----日志文件*6
稳定性测试容易发现的问题:
1.内存泄漏(memary leak)
分配的内存因为某种原因不能回收或者回收不了,导致系统自己不能用,也不能回收给别人用
例子:超时储物柜
2.内存溢出(out of memary,OOM)
需要的内存大于系统可以分配给你的剩余内存
内存溢出更严重,但是内存泄漏导致内存溢出
什么原因会导致内存泄漏,内存溢出?
webdriver driver.close() con.close() cur.close() file
总结:
负载测试:
没有访问数据:
1.找最优最大
2.在最优附近找三组(至少三组)进行测试
3.记录测试结果并截图,有错需要附带日志报错信息和jmeter查看结果树错误信息
备注:查看服务器报错日志:tail-200f logs/catalina.out–启动报错
tail-200f logs/lacalhost.xxx.log----严重(fatal)、错误(error)
cat…
有访问数据:
1.找最优最大
2.估算实际流量—根据现网流量、注册用户数(5%-8%)、在线用户数(并发数20%)
3.在估算值附近找三组进行测试
4.记录测试结果并截图,有错需要附带日志报错信息和jmeter查看结果树错误信息
压力测试----长时间、极限情况下
没有访问数据:
1.找最优
2.在最优处进行压测,压测时间12h*n,一般是2天,
有访问数据:
1.根据实际流量来估算虚拟用户数
2.在估算值处进行压测,压测时间12h*n,一般是2天