• 0
  • 0
分享

  不管是Loadrunner还是jmeter进行性能测试,测试流程基本上都是一样的,限制以Jmeter为例分析测试流程:

  一、性能测试需求分析

  一般而言,被测对象的性能需求,会在用户需求规格说明说中给出,比如单位时间内的访问量达到多少、业务响应时间不超过多少、业务成功率不低于多少、硬件资源消耗应该在一个合理的范围内等,性能指标应以量化数据给出,对于一个规范的产品,产品团队会给出如下的性能要求:

1.jpg

  如果产品团队并没有指明性能测试需求,或者只给出表述字面意义上的需求,如:系统的TPS需要到300以上,单笔交易时间不超过3秒,那么测试工程师如何提前量化的指标呢?

  需要结合业务需求和系统本身特性进一步分解和提取显性和隐性的需求,可以从以下两个用户方法进行确定:

  1、业务用户

  · 用户频繁使用,且存在大量用户频繁使用的业务流程

  · 交易占比高,日常占比在80%以上甚至更高的业务流程

  · 特殊交易日或峰值交易占比80%以上甚至更高的业务流程

  · 性能较差且做过调整的业务流程

  · 特殊业务场景

  · 核心业务发送较大流程调整的业务流程

  以上为业务用户层面可能需要的性能需求点,实际项目中可能会向终端用户进行调研。

  2、项目团队(业务系统)

  · 曾经测试过性能后调整了架构设计的业务

  · 逻辑复杂、关键的业务

  · 可能消耗大量资源的业务

  · 与外部系统存在接口调用,且有大量数据交互的业务

  · 调用第三方业务组件,逻辑复杂业务

  以上为项目开发角度可能需要的性能需求点,性能测试工程师需要与开发团队密切配合、深入了解被测对象。

  3、案例分析

  通过分析,我们以网上商城性能需求指标为例,得到下面数据:

1-1.jpg

  二、测试用例设计及测试数据准备

  1、测试用例设计

  为了真实地反映被测对象可能存在的性能问题,需要尽可能地模拟被测对象可能发生瓶颈的业务场景,测试需求分析过程中已经确定了业务类型,在此需要设计如下性能测试场景:

1-2.jpg

  2、测试数据准备

  以本次测试为例,2小时内5万用户登录,意味着需要有50000个可用账户(尽量多准备一些,可以为60000),可以直接在数据库中添加,但要求对数据库结构相对熟悉;也可以使用Jmeter录制注册脚本,使用3个线程,循环2000次即可。

  构造好测试数据后,需要对数据库进行备份,便于后期进行回归测试,可以使用NaviCat进行数据备份。

1-4.jpg

  三、性能测试脚本开发

  · 根据登录业务模型,利用BadBoy录制用户登录过程,生成Jmeter脚本

  · 登录用户名进行参数化

  · 设置定时器:参考测试用例输入信息5s、登录成功等待返回3s、退出成功等待返回

  · 为登录成功页面设置断言,失败则提示信息,成功不提示

  · 添加查看结果树、聚合报告等,实时查看脚本运行情况

1-5.jpg

  四、场景设计及资源监控

  1、场景设计

  以登录业务为例子,本次测试的目的在于验证平台是否能支持100个用户的并发登录,无需考虑持续时间,根据对应的场景测试用例,设置线程组数据,脚本可以通用(如果有必要可以去掉思考时间、添加集合点等)。

  相应的线程组可以改名为场景名称:用户登录业务并发负载。

1-6.jpg

  2、Jmeter利用自带插件进行资源监控

  · 解压JMeterPlugins-Extras-1.4.0.zip及JMeterPlugins-Standard-1.4.0.zip到Jmeter安装目录/lib/ext下

  · 重启Jmeter,添加监听器:jp@gc - PerfMon Metrics Collector

  · 下载ServerAgent-2.2.3.zip,并通过rz指令上传到服务器(Linux)指定目录下,执行unzip -o ServerAgent-2.2.3.zip解压该文件到当前目录

  · 关闭服务器防火墙:systemctl stop firewalld.service

  · 给启动文件设置执行权限:chmod u+x startService.sh

  · 执行sh文件:./startService.sh

  · Jmeter监听器jp@gc - PerfMon Metrics Collector下,添加监控的资源,如CPU、内存等

  · 运行场景,即可监控服务器相应的资源

  根据场景用例要求,业务量测试需要设置78个线程数,同时需设置执行的时间段(参考业务量指标:2小时完成5万笔交易或者是TPS),设置如下:

1-7.jpg

  五、场景执行及结果分析

  1、场景执行

  场景执行前,需要对测试环境进行确认,保证所有环境,系统业务均能正常使用:

  数据库恢复(避免脚本设计过程中对数据库中数据量的影响),记录商品、交易等相关数据

  · 随机购买商品,为避免出现商品库存为零情况,将库存统一设置为1000

  · 尽量单独部署服务器在Linux系统上,避免Jmeter对服务器性能的影响

  · 执行前,启动相应的监控代理和apache和mysql服务

  · CMD下非GUI模式执行场景:

  Jmeter -n -t 测试脚本Jmx文件 -l 日志文件名 -e -o HTML测试结果文件路径

  2、场景结果分析

  结合聚合报告,分析登录业务的每个请求的平均响应时间为:15s,是小于5s的,故该项指标测试不通过;在最大和最小响应时间差异较大时,我们可以采用90%事务响应时间作为标准。

1-8.jpg

  Apdex(Application Performance Index)指标是一个国际通用的标准。是用户对应用性能满意度的量化数值,他提供了一个统一的测量和用户体验的方法, 吧最终用户的体验和应用性能统一度量,下图中0表示没有满意度,1表示所有用户均满意,是开发团队追求的目标。

1-9.jpg

  六、性能调优及回归测试

  测试结果分析完成以后,即可对进行性能问题的确定及优化,通常情况下性能问题表现如下几个方面:

  1、响应时间问题:

  · 响应时间平稳但较长,测试过程中响应时间就较长,即使减少线程数量(负载),也不会降低

  · 响应时间逐步变长,测试过程中,负载不变,运行时间越长,响应时间越长,直至出现很多错误

  · 响应时间随着负载的变化而变化,响应时间变长;负载减少,响应时间变短,资源利用率也下降

  · 数据积累导致锁定,起初运行正常,但数据量积累到一定值,立刻出现错误,无法消除,只能重启系统

  2、稳定性问题:

  特定场景或运行很长时间以后,突然出现问题,系统运行缓慢,主要原因有如下:

  · 物理内存资源不足

  · 内存泄漏

  · 资源争用

  · 外部系统交互

  · 业务失败时频繁重试,无终止状态

  · 中间件配置不合理

  · 数据库链接设置不合理(连接数或缓存)

  · 进程/线程设计错误


作者:测试allen说    

来源:http://www.51testing.com/html/66/n-7797666.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   本文将概述测试工程师的现状及发展方向,并着重介绍测试开发工程师的发展及所需具备的技能,以及本部门搭建的测试平台的概况和意义。  一、测试工程师的现状  很多测试小伙伴在工作中有时会比较迷茫,不知该怎样突破瓶颈,更好的发展。  那么测试人员究竟该如何打破瓶颈继续向上提升呢?如果你苦于不知所措,又满怀斗志向上的话,不妨一起聊聊。测试职业发展有典型的三种方向:  ·管理方向  · 技术型方向  · 转行  在此重点说下技术型方向的发展。曾几何时,提的bug被否认而倍感无力;曾几何时,遇到一个偶发复现的bug,到上线了都不知道该怎么复现;曾几何时,面对没有前端页面的测试任务,不知该从哪下手测试;曾...
            0 0 891
            分享
          •   时间如白驹过隙,不知不觉从事测试行业已经近八年了,这些年来经常会听到这样的质疑,你是不是因为技术不好,不会编码,才做的测试?我先给出我的真实经历,我是正规软件工程专业出身,我毕业那年,正是安卓编程大行其道的时候,许多同学都去参加了培训机构,培训完成去做研发,而我自己选择了先行实习,而后毕业后阴差阳错入了测试一行,刚开始的时候,我和许多刚入门的测试同行一样,每天点点点,觉得这工作没有任何技术含量,想着做一段就转开发,但是随着工作时间越来越长,我经常会听到开发这样的抱怨,一次次置自己处在难堪的境。  1.你发现的是个无效缺陷,而我自己却无法辨别其到底是不是编码问题。  2.测试环境我们研发没时...
            14 14 879
            分享
          •   Locust介绍  Locust是一款使用Python开发的开源性能测试工具,支持分布式,可在多台主机上对系统持续发送请求,与Jmeter、LoadRunner的等压测工具使用线程的方式模拟用户请求不同,Locust是使用协程的方式模拟用户请求,协程的上下文切换是由自己控制,当一个协程执行完成后会主动让出,让另一个协程开始执行,切换是在用户态完成的,而线程切换是受系统控制,是在用户态与内核态之间切换,所以协程上下文切换的代价远比线程切换的代价小的多,因此Locust可以达到更高数量级的并发。  Locust安装  需要先安装python3.6以上版本,然后再安装Locust。  pip&n...
            0 0 1550
            分享
          • 很多人的职业规划是到了工作以后才开始进行的,其实,这样做,有很大的局限性。凡是工作过的人,都有一个体会,就是自己的第一份工作,会影响到5~10年的发展轨迹,甚至会对一生产生影响。因此,选择一份合适的工作作为起点,是必须要在校园内思考清楚的问题。由于中国的教育基本是理论教育,大家在工作前的实践能力大多比较弱,固然有其不足,但也有好的一面,那就是可塑性比较好。可塑性好代表了选择的余地可以很大,因此,大家在选择第一份工的时候,要充分结合自己的教育背景、个人能力、兴趣爱好、长期目标等等,作出理性的决策。软件测试,特别是黑盒软件测试是一种入门起点较低、上手迅速、且发展空间比较大的职业,因此,对于很多学生...
            0 0 1964
            分享
          •   “工欲善其事必先利其器”,通过前边几篇文章的介绍,大家大致对接口有了进一步的认识。那么接下来让我们看看接口测试的工具有哪些。目前,市场上有很多支持接口测试的工具。利用工具进行接口测试,能够提供测试效率。例如,让你一天完成100个接口测试任务,你觉得你加班能完成,那么1000个、10000个......  如果有工具,可以大大提高你的效率,可以达到事半功倍,但是不是所有工具都能够支持你完成这个任务。下面我们就来挑选几个常用和常见的工具,简单介绍一下。如果需要或者有兴趣可以在网上查看各种工具对应的资料进行深入人的学习,这里带领大家了解一下,碰到这些工具会用、了解、知道这些工具就达到目的了,不要...
            0 0 973
            分享
      • 51testing软件测试圈微信