今天和同事交流关于的东西,以前也做过性能测试,突然想写点自己关于如何做性能测试的认识。
基于B/S架构的系统,利用loadrunner做性能测试,利用nmon监控系统资源(用linux自带的top,vmstat等命令也可以,写一些简单的脚本就行了)。
了解了被测系统,在后期性能出现异常的时候,定位就相对容易一些;而且知道在测试的过程中需要监控什么。
从以上系统结构来看,要搭建和维护性能测试环境,需要的一些必要的知识。
对于APP:需要了解nginx的相关知识,怎么修改配置,在哪里看日志
对于Memcached:怎么搭建Memcached,怎么查看命中率,Memcached的作用是什么
lucene:这个lucene是干什么用的,要怎么配置
RabbitMQ:MQ要如何配置,都那些业务用到了MQ。
Mysql:如何配置主从,为什么要配置主从,主从如何同步等等
在搭建环境的过程中肯定会遇到这样或那样的问题,要自己找资料,或者相关的开发人员一起解决,并注意做笔记,防止以后同样的问题再出现。
2、了解了系统结构,开始搭建测试环境,并准备数据。 测试环境尽量要和生产环境的结构保持一致,还有配置文件等也要保持一致,这样能保证性能测试的结果更加真实和接近生产环境。
数据准备一定要充足,而且数据量要大于等于生产环境,这样能更真实的模拟生产环境。比如对一个select语句而言,10W的数据,和1000W的数据,查询时间肯定有差别。如果数据量太小就不能反映真实情况下性能了。(可以把线上的数据导入到测试环境,但是要注意把用户比较隐私的数据都替换掉)
如果有可能的话,测试环境的数据要比生产环境多出20%,做一些性能上边的冗余,防止发生突然的性能尖峰 和产品、技术沟通需要做性能测试的业务;并了解相应的业务的性能指标,如页面的响应时间,TPS(事物处理)或者系统期望能承受多少并发等。
在线用户达到高峰时,用户可以正常发帖,保证200个以内用户可以同时发表帖子。
采用LoadRunner的录制工具录制一个邮件发送过程,然后对脚本进行优化,加上事物点,检查点等。过程中监视B端的响应,还有网络传输,web服务和数据库服务器的性能,并观察服务器相应服务的日志,检查MQ的状态,memcached服务器的状态和性能
根据测试用例录制发帖的脚本,加入事物点、检查点、参数化,并回放,确保脚本没有问题,可以正常运行。
设置一个渐进的场景10-30-60-100-150-200,这么做的目的防止一下子上去就是200个并发,出了问题,不知道系统最佳的并发是多少。
设置场景完毕后,开始在服务器端启动监控,然后开始启动场景。
loadrunner可以搜集一些性能测试数据,事物的pass数,fail数,error数,都要做统计。
监控服务器的资源,可以利用nmon,也可以是用linux自带的命令top,vmstat等。
也要监控服务器的日志输出,看是否有异常出现。例如:查看mysql的慢日志,nginx的日志等。
最后对性能测试搜集的数据进行分析,找出性能测试的拐点。
10、对系统进行优化,并重复7-9步,直至测试结束 PS:性能测试不是一个人的事情,中间设计了,开发,产品,运维,QA,DBA,要大家共同协作,才能做好性能测试。
最新内容请见作者的GitHub页:http://qaseven.github.io/