• 2
  • 0
分享

      沐沐今天想和大家分享一下性能测试过程中一些常见的问题,可以帮助性能学习初学者解决一些小疑惑。

一、性能测试都分为哪些种类?

  1.  负载测试:主要检查被测系统在既定负载下的性能表现,即通过逐步加压的方法,达到既定的性能阈值的目标(阈值的设定应是小于等于某个值,例如cpu<=80%等)。

  2. 压力测试:主要检查被测系统在极端条件下的表现,即通过逐步加压的方法,使得系统的某些资源达到饱和,简言之就是测试什么条件下可以把系统压奔溃。

  3. 并发测试:主要是验证系统的并发处理能力,即在同一时间内,多个虚拟用户同时访问同一模块、同一功能,通常的测试方法是设置集合点。

  4. 基准测试:系统中增加新模块时,需要进行基准测试来判断新模块对整个系统的性能影响。

  5. 稳定性测试:测试系统在一定负载下运行长时间是否会发生问题(例如会进行7*24小时的稳定性测试)。

二、性能测试的流程是什么?

  1.  熟悉系统架构:了解被测系统架构和通讯协议等。

  2. 明确测试范围:服务端(CPU、IO、网络、内存等)、程序接口(并发数、TPS、响应时间、事务成功率等)、数据库(配置参数、表结构、索引、慢查询等)。

  3. 明确测试指标:系统预计承载的用户量、并发用户数、TPS等。

  4. 选择测试工具:JMeter 、locust、Loadrunner、性能测试云平台等。

  5. 准备性能脚本:准备待测接口脚本,基准测试接口的入参、响应、异常测试等是否符合预期。

  6. 设计性能场景:根据实际业务,设计性能测试场景,例如单一场景、混合场景等。

  7. 执行性能脚本:执行脚本,关注TPS、错误率、响应时间等同时监控资源使用率。

  8. 分析测试结果:分析性能测试结果,对性能瓶颈进行调优。

  9. 性能回归测试:性能调优后进行回归测试。

  10.  输出测试报告:根据实际的测试情况,输出性能测试报告。

三、如何估算并发数?

  1. 通常估算并发用户数为在线用户数的10%-20%。

  2. 虚拟用户数=TPS*(runtime+thinktime)。

四、性能测试如何查找系统性能瓶颈?

  1. 服务器硬件瓶颈 。

  2. 网络瓶颈。

  3. 服务器操作系统瓶颈(参数配置)。

  4. 中间件瓶颈(参数配置,数据库,web服务器等)。

  5. 应用瓶颈(SQL语句、数据库设计、业务逻辑、算法等)。

五、如何找导致CPU瓶颈的程序?

  1.  系统CPU 利用率高可以关注一下IO(磁盘读写速度),有没有空闲等待,通常CPU利用率高都是IO问题,此时的中端与切换都高。

  2. 用户CPU利用率高,直接用top命令或者htop就可以找到系统进程ID和线程 ID,就可以很快找到对应的程序。

六、如何找到导致IO瓶颈的程序?如何监控IO?

  1. 网络IO监控我们可以监控网络中端、宽带、网络连接数以及网络了连接状态等;常用命令netstat、sar。

  2. 本地磁盘IO我们可以监控有没有IO的非空闲等待,用iostat命令查看。其他常用命令:iotop,sar。

      以上内容是沐沐几年前的学习笔记,已经忘记知识获取来源,但是现在看来还是非要有用,因此分享给大家,尤其是对性能初学者比较有帮忙。接下来的文章,沐沐将持续分享性能测试实战中的一些经验总结。

      The more we share,The more we have.

      希望这篇文章对大家有用...



  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   Shell脚本是最常见的一种处理文本文件的的方法,可以实现检查日志文件、读取配置文件、处理数据元素、执行Linux命令等等功能,Shell脚本可以在实践中实现对文件批量处理的自动化,也可以控制Linux命令的计划性执行。Shell脚本在处理文件时处理速度较快,且通常不受文件大小的限制,这就打破了一些性能测试工具在处理大报文时卡顿甚至崩溃的瓶颈,在性能测试中极大简化报文处理和命令执行的步骤。  在性能测试实践中,处理的报文通常含有唯一标识,如报文标识号、流水号等,这样的标识设计为数据库表中的主键,以及作为交易是否重复的校验要素。如下方的示例报文,在性能测试场景中,需要批量发送该报文,为保证业...
            11 12 1113
            分享
          •   今天给大家推荐一款基于Python的网页自动化工具:DrissionPage。这款工具既能控制浏览器,也能收发数据包,甚至能把两者合而为一,简单来说:集合了WEB浏览器自动化的便利性和 requests 的高效率。  一、DrissionPage产生背景  实现网页自动化,会有两类形式: - 直接向服务器发送请求数据包,获取需要的数据 - 模拟真实用户操作行为,控制浏览器跟网页进行交互  前者轻量级,速度快,例如requests 库。但requests面对需要登录的网站时,往往还要应付验证码、JS 混淆、签名参数等反爬手段,门槛较高。若数据是由 JS 计算生成的,还须重现计算过程,开发效率...
            0 0 3169
            分享
          •   作为一名软件测试工程师,我们的角色可以算是“战场上的后勤”,战役的胜败和所有团队人员都息息相关。但是难免碰到战役失败后,很多团队互相推脱的局面,而测试人员就是所有团队中的弱势群体,自然是首当其冲的背锅侠!相信你在做测试时肯定听过下面这些话吧:  “哪有这么多测试时间,你加快点测就完了”   “这么明显的bug居然没测出来,这关我们开发什么事”   “出现这么多bug,你当时怎么测的啊”   “仔细核对下需求,这个不是bug”   “这么低级的bug你都测不出来吗?,你到底怎么做测试的?”   “这么明显的bug都没测出来就让我们上线了”   “研发时间不够,你压缩一下测试时间”   “你测...
            1 1 935
            分享
          • 10月福利继续加码,填问卷马上参与。不仅能免费获得测试资料,还能参与抽奖活动,京东卡、测试书籍不容错过。链接:http://vote.51testing.com/  一、首先来介绍下什么时软件测试  软件测试,英文Software Testing,指的是对软件进行正确性、完整性、安全性和质量的验证过程。经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。  其实从本质上来讲,软件测试就是为了保证软件质量,对软件功能及六大特性进行验证。软件的六大特性:  二、软件测试的现状:  企业对测试人员需求很大,要求的人在市场上很难找到,测试入门...
            0 0 1000
            分享
          • 面试是一个“表达自己”的过程,我们需要在短暂的30到60分钟的时间,将自己的真本事表现出来,让面试官看到自己在这份职位上能产生的价值。我曾遇到很多人,简历背景非常厉害,但是在面试环节却差强人意,原因是什么呢?我想有两种情况,第一种是简历虚假,第二种是不善于表达,面试紧张等各种因素导致未将自己实际的能力表现出来。第一种情况,奉劝大家在做简历时一定要实事求是,HR都不傻,是真是假,是可以聊出来的。第二种情况,是我们今天分享的主要话题。接下来,我会按三个方面给大家分享我根据经验总结出来的干货:面试前的准备、面试中的表现、面试后的追踪。01 面试前的准备在我们收到一家企业的面试邀约并决定要参加面试后,...
            1 0 2051
            分享
      • 51testing软件测试圈微信