经过工作4年,多个性能项目的实战,我总结了一份各个性能项目共性的东西(即如何做性能的流程),希望大家拍砖。我把性能测试的分为三大块,即前期准备、实战监控、问题定位。


一、前期准备(基础核心)

这个是基础,前期准备工作做的越扎实到位,测试结果会越接近真实,也就更有意义,而且工作量也是蛮大的。

1、熟悉系统架构,业务主流程,确定性能测试的核心测试模块;(找开发人员或者项目经理要相关文档,至少应该熟悉到指定业务会涉及到后台的哪些表,哪些表的数据量会比较大,提前有个性能可能会出现的估测;另外测试服务器、中间件、数据库等的拓扑结构必须也得了解)

2、性能测试的具体模块的需求:必须要具体,特定的条件下,包括多少用户,多久时间,多大数据量下进行什么业务,最终指标多少。即,获取的性能需求是在特定的场景条件下的,而不是孤立的一个数值。(最真实的数据是通过系统访问日志分析真实的负载和主要业务场景来获取性能需求),(目前大部分的产品性能测试都是有个大概的性能指标,而且是人工拍出来的结果,所以性能测试的目的都是评估该系统的处理能力能否达到和预期的一样)

3、性能测试的场景选取:单业务,混合业务,稳定性,大数据量,可靠性(即其中一台tomcat或者其他中间件出故障后的处理,数据库灾备的切换等),(这些场景并不一定每个接口都需要涉及,看实际线上的使用情况,有选择性重点的测试)(想清楚应该选取哪些场景,其实性能测试用例的雏形也就有了)

4、性能测试数据确定:具体对应什么表需要多少数据量;以便提前准备测试数据。(尤其是有些测试数据比较复杂,会不同表之间有关联,可以找开发一起商讨一下测试数据如何弄;另外准备的测试数据一定要有效,否则你传参给函数,返回的都是失败的,这个测试结果就和真实有出入,导致测试无意义)

5、性能测试用例的编写;包括:场景描述,并发量,压测时间,数据量,加压方式,测试方法,重点关注指标,预期指标等。(这个性能测试用例一定要好好写,而且是必不可少的,因为我觉得把这个写的越清晰明了,对核心业务或者说压力业务也就梳理的越透彻;完成这一步,其实心里就已经对该系统如何进行性能测试心里有数了)

6、性能测试环境的准备:在相应的服务器上安装性能相关软件,如JDK,nmon,jmeter,orzdba等。(实际由于资源有限,只是在现有的硬件资源条件下,评估性能能力,从而间接的估算生产环境的性能。)

7、性能测试脚本的调试。性能测试脚本可以用本地的图形化界面的jmeter进行调试,方便查看返回的是什么错误。(如是接口性能测试,参考文档是接口的开发文档等;脚本调试成功后就可以上传到相应的压力服务器上,利用非图形化的jmeter压测)


二、实战监控(水到渠成)

前期的准备工作做好后,万事俱备,就差跑起来了。

1、开启实时监控后,启动性能脚本,开始压测。(压力机服务器,数据库服务器,业务服务器开启nmon的后台监控;数据库服务器的慢查开关、无索引开关)

2、压测时候重点观察数据库服务器和业务服务器;(需要查看业务服务器的处理日志情况,看里面是否有错误,如tomcat日志;查看数据库服务器的慢查和无索引的日志;查看服务器本身的状态,如cpu、io、memory等)


三、问题定位(难点攻坚)

这个是难点也是最体现性能工程师价值的地方,需要平时不断的下功夫钻研和积累的。

更多测试实战技能,可以关注公众号大话性能,不断的学习提高。

1、硬件资源消耗情况。(cpu,内存是否消耗过大,io等待是否很多,负载值是否很大,连接数是否超过限制,打开文件数是否过大等。这些是表现,我们得通过表现去分析到底是什么原因导致该现象的出现。)

2、Mysql数据库服务器。(可以用show processlist不定时的查看目前数据库连接都在干什么,有没有消耗时间比较长的,如有,这个连接就是怀疑对象;慢查询是否很多,如有需要优化sql语句或者表结构加索引等;有无锁消耗的时间很多,查看使用的数据库引擎,不同的引擎锁的粒度不一样;

3、mysql配置参数的设定也是很关键的,这个也需要留意。比如更新比较多的表,其实缓存对它来说就是没有意义的,诸如此类的。)

4、JVM运行情况。(目前95%的都是基于java的开发的项目,可以用jstack分析线程堆栈的运行情况,利用jstat分析GC情况,定位有问题的地方(如死锁,死循环,资源等待锁,内存泄露等))

5、中间件运行情况(目前,我遇到的都是tomcat,查看启动的各个参数是否需要调优,如内存分配是否合理,垃圾回收的算法等)

6、网络情况(对于传输数据量大的测试,在并发大的情况下必须考虑网络有无瓶颈)

以上就是性能测试的大部分环节,内容很多,需要提升的东西也很多,更多内容可以关注公众号大话性能,继续学习。https://dwz.cn/bLi77L79

另外,我也简单总结了下性能测试可以研究的内容,供大家参考。

转载于:https://blog.51cto.com/14010723/2296332

如何做性能测试的一点思考总结相关推荐

  1. 30岁成不了技术专家就应该转做管理?希望通过本文给大家带来一点思考

    很多程序员都有一点技术情节,喜欢"专心搞技术",不喜欢管理,尤其管人.甚至为自己是"专注于技术"而自感清高,有点看不起那些"外行管理内行"或 ...

  2. 在做性能测试之前需要知道什么

    以下是我自己录制的关于这篇文章的一小段视频,有兴趣的可以下载看看 https://yunpan.cn/cPQc4mm2DjbMu  访问密码 a76f //此篇摘抄于虫师博客,个人觉得通俗易懂 关于理 ...

  3. mysql 手动写时间_关于数据库中如何存储时间的一点思考

    1.切记不要用字符串存储日期 我记得我在大学的时候就这样干过,而且现在很多对数据库不太了解的新手也会这样干,可见,这种存储日期的方式的优点还是有的,就是简单直白,容易上手. 但是,这是不正确的做法,主 ...

  4. 对于表列数据类型选择的一点思考

    对于表列数据类型选择的一点思考 简介 SQL Server每个表中各列的数据类型的选择通常显得很简单,但是对于具体数据类型的选择的不同对性能的影响还是略有差别.本篇文章对SQL Server表列数据类 ...

  5. 关于STM32驱动DS1302实时时钟的一点思考

    关于STM32驱动DS1302实时时钟的一点思考 之前用51驱动过DS1302,没用多久就输出了正确的时间.当时以为这块芯片其实没啥,很简单.但是现在用STM32做项目,用到同样的芯片,以为这有何难, ...

  6. 对高并发流量控制的一点思考

    前言 在实际项目中,曾经遭遇过线上5W+QPS的峰值,也在压测状态下经历过10W+QPS的大流量请求,本篇博客的话题主要就是自己对高并发流量控制的一点思考. 应对大流量的一些思路 首先,我们来说一下什 ...

  7. 关于c语言结构体偏移的一点思考

    注:此处只是利用了编译器的特性来计算结构体偏移 这句话就一笔带过,说得有点牵强附会.以后有时间自己再详细了解一下编译器的特性... more exceptional c++ 中文版 26页 https ...

  8. App用户体验的一点思考

    App用户体验的一点思考 最近我在团队中负责TImers4Me这款Android软件的开发.维护和更新,软件每次在市场上的发布都能得到用户一些有价值的反馈,通过收集整理用户们的使用反馈,我们常能看到一 ...

  9. 对高并发流量控制的一点思考 推荐

    前言 在实际项目中,曾经遭遇过线上5W+QPS的峰值,也在压测状态下经历过10W+QPS的大流量请求,本篇博客的话题主要就是自己对高并发流量控制的一点思考. 应对大流量的一些思路 首先,我们来说一下什 ...

最新文章

  1. 【bootstrap】bootstrap-4.5.0-example 各个模板展示
  2. 打开虚拟服务器设置,什么样配置的虚拟主机打开网站快
  3. hover与click样式冲突
  4. 入门设计模式之建造者模式
  5. react使用link跳转传递参数_React-Typescript之路由跳转(使用this.props.history.push)
  6. 7 兼容 因特尔十代_换装十代酷睿,里外都是白白的,超频i5提前装机测试
  7. PHY以太网自动协商原理
  8. mysql 事物 锁行 测试_MySQL Transaction--RR事务隔离级别下加锁测试
  9. 手把手教你用C语言画“心”!
  10. 持续集成工具集之二 Jenkins安装
  11. 关于百万用户服务器架构能力(一)QQ游戏服务器架构
  12. 基于PhalApi的Redis拓展
  13. “舒尔特表”训练法:产生1-25随机数,并打印到一个表格中
  14. pywinauto实战-操作h2testw.exe自动化测试脚本
  15. 2021 大学生电子设计竞赛 G题 无人机 识别部分
  16. 网络广告行业资料整理
  17. 高效搭建基于dnsmasq通过webui管理的dns服务器
  18. 消息队列之取消会议和自动退款处理
  19. 写作的必备技能,markdown的基本语法
  20. 推荐一个开源库(Calligraphy)将ttf字体库加入到项目中,轻松实现各种字体

热门文章

  1. bool类型_Python基本数据类型之Number
  2. 不错的流量卡官网html源码
  3. thinkphp手机版小说网站源码
  4. java app log4j 配置_Java-未加载log4j2配置
  5. 网页修改iPhone13在线源码 – 无需SVIP
  6. 3款动态网页时间时钟HTML5源码
  7. Linux -Ubuntu安装 Tomcat
  8. Web开发人员应当知道的15个开源项目
  9. 渗透之cookie截取
  10. ASP.NET获取远程网页下载到本地文件