博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
我怎么做性能测试
阅读量:5874 次
发布时间:2019-06-19

本文共 1883 字,大约阅读时间需要 6 分钟。

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

转载地址:http://sienx.baihongyu.com/

你可能感兴趣的文章
Ralink5350开发环境搭建
查看>>
Ubuntu ctrl+alt会导致窗口还原的问题
查看>>
poj 2406 Power Strings(KMP)
查看>>
第二百九十六节,python操作redis缓存-Hash哈希类型,可以理解为字典类型
查看>>
Ubuntu 16.04下截图工具Shutter
查看>>
第四十期百度技术沙龙笔记整理
查看>>
推荐系统那点事 —— 基于Spark MLlib的特征选择
查看>>
linux 下RTL8723/RTL8188调试记录(命令行)【转】
查看>>
開始新的征程
查看>>
SpringMVC案例1——对User表进行CRUD操作
查看>>
看雪CTF第十四题
查看>>
模拟生命_吸烟致癌?
查看>>
[Contiki系列论文之1]Contiki——为微传感器网络而生的轻量级的、灵活的操作系统...
查看>>
Android 网络编程 记录
查看>>
微软同步发行Windows 10和Windows 10 Mobile系统更新
查看>>
Maven 传递依赖冲突解决(了解)
查看>>
Zeppelin的入门使用系列之使用Zeppelin运行shell命令(二)
查看>>
关于Unity中ARPG游戏人物移动(专题十一)
查看>>
studio导入Eclipse 项目要改的文件
查看>>
HtmlAgilityPack 详细使用
查看>>