• 9
  • 9
分享

      上周刚刚做完项目的性能测试。今天整理和总结一下,随便分享给大家。

      首页呢,测试前,我们是有明确的性能指标的,而且测试环境和数据都已准备好,业务分析、场景分析大家根据自己的项目系统进行分析设计,我们选用的都是实际用户操作频繁、重要级别高的。还有一个好说明下,今天分享的是Jmeter做APP端的单接口性能测试。下面开始分享吧。

      先贴一张我的脚本:

图1.png

      第一步,环境是运维搭建好,那我们只需要准备脚本和脚本数据。从上面的图中可以看出,我们需要准备:

      1、需要开发帮忙去掉系统中的手机验证码、token的校验,因为我们是单接口,因此是绕过登录的,token校验呢去掉,用户ID的校验还是要保留的。

      2、脚本数据:我用的是CSV,每个接口的请求数据,比如关键字查询,我们的业务是用户登录成功后,在首页可以进行关键字查询。那么我在我的CSV文件中准备了200个账号的用户ID和对应的关键字,根据你的性能指标去准备需要用多少个账号,当然,你也可以就用一个账号,不过还是没有前者实际。

      3、编写接口脚本,除了去掉token校验和验证码校验,我们还需要自己在脚本中处理参数和参数的加密以及时间戳等,我用的是JSR223 中的JS,引用了一个外部js文件做加密处理。当然如果开发愿意,也可以协商去掉密码。脚本编写好了,要在测试环境进行测试,看是否能跑通。

      4、添加一个定时器,用来确保按照需求进行正确的并发。

      5、添加Jmeter插件,监控压力机与服务器的硬件性能情况。比如CPU、内存、网络、磁盘读写。

      以上步骤全部搞定,那么性能测试工作就差不多准备完了。

      第二步,开始执行。这个步骤很关键也很深。很多人对Jmeter做性能测试,认为只是简单的设置线程数就OK了。其实不然。

      1、保证我们的脚本执行正确、发送正确的参数,得到正确的响应。那我是添加了结果响应断言,来确保结果的正确性,还有一些注意的,比如:

图2.png

      2、确保正确并发。单纯的设置线程数量和Ramp-up是达不到真正的并发的,可以通过结果观察树,查看每个请求的开始时间是否一样。这里呢,我是通过定时器来做的,如下:

图11.png 图3.png

      线程数设置10,ramp-up设置5,循环1次。定时器中的组合设置10,超时设置10秒。意思就是:5秒内启动10个线程,等全部启动完,也就是说10个线程准备好了,再一起发送,这样的操作执行1次。

线程数,不多做解释了,大家都明白。

      Ramp-up:这个呢,字面意思也是很好理解的,就是在设置的时间内启动设置的线程数,启动完一个发送一个。那么会出现些什么情况呢?

      a、设置的时间过短,不能在设置的时间内启动全部线程 (这也会为什么定时器的超时哪里要设置比Ramp-up的值大或等于的原因)

      b、压力机不同,在相同的时间内,能启动的线程数量不同。这个就要看配置了。

      一般我是先设置3秒或者5秒来测试自己的压力机合适设置多少。

      定时器超时时间:如果Ramp-up设置的时间内,没有全部启动线程,就会处于等待状态,等待的时间就是这个超时时间。

      所以,在做并发测试的时候,一定要注意,每个请求的开始时间是否一致

      3、分布式,大家都知道,单台压力机可能不够,那么需要用到多台压力机,这就是Jmeter分布式的运用。具体用法百度很多,需要注意以下几点:

    a、每个压力机上都需要放脚本,而且路径一致

    b、使用了CSV文件的,也需要保存每个压力机上的CSV文件一致,脚本修改都要同步更新,保持一致

    c、每个压力机上的本地时间要保存一致,最好是同步Intelnet上的时间。不然并发也达不到真正的并发。

      4、注意压力机自身的压力瓶颈。测试的过程中,要时刻观察压力机的情况。有时候线程数较多,一起并发,会瞬间对压力机产生很多压力。

      5、观察服务器的性能变化。

      6、建议在执行的过程中,要逐步加压,找到RT与TPS的交叉点(即TPS由上升到下降的那个点)

 图4.png

      7、最后还要建议,测试的时候,最好选用压力机的配置不要太差,还有网络。好了,测试完成,大家要开始写报告了,把你的测试过程、测试结果、以及你的分析写出来吧。

      其实这也是我第二次真正意义上的做性能测试,自己也是一边学习一边摸索,其实我觉得性能测试是分成两个部分的,一个部分是测试执行,一个部分是问题分析,今天给大家分享的是测试执行,至于问题分析,可是很深的一门学问,需要慢慢累积,不过大家只要先保证,测试方案得到评审,测试也是正确的执行,这个过程中,其实你就会发现很多问题和学习到很多东西,最后把这些报告,然后协助开发一起分析问题,弄懂问题的原因,我想我们就会越来越能干了。欢迎大家来讨论。


作者:降妖宝杖

原文链接:https://www.cnblogs.com/sandymonk/p/10329419.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据报道,就在ChatGPT去年因为超强的问答能力而火遍全球后不久,数字营销老兵谢恩·拉斯纳克就开始尝试这项技术。  拉斯纳克的整个职业生涯几乎都在为客户制作网络广告,正是这样的经历,让他看到了生成式人工智能会给这个行业带来多大的变化。他表示,无论是制作Facebook广告标题还是创作广告文案简介,以前都至少要花费他30分钟至1个小时,但现在只需要15分钟即可完成。  而且,这还只是开始。  拉斯纳克还在尝试Midjourney等生成式人工智能工具,它可以将文本提示转化成图片,帮助他为Facebook广告配上引人入胜的视觉内容。拉斯纳克称,这款软件对于没有图形设计背景的人来说尤其方便,而且可...
            0 0 1194
            分享
          •   在面试过程中,很多小伙伴也会说,我们会根据需求所描述的功能,进行测试。那作为一位应聘者,如何才能把自己之前工作的能力展示给你的面试官呢。  随着有赞SOA服务化的深入推进,系统拓扑结构越来越复杂。我们也在不断提升测试小伙伴的测试能力及问题思考的能力。  我们的日常测试,一般需要考虑需求功能测试、性能测试、异常测试、安全测试。  一、熟悉技术方案  有赞现在没有纯粹的测试工程师,不论是通过阅读技术方案文档、或是跟开发 Face to Face 沟通技术方案。从中,测试同学需要了解一下信息:  当前需求,涉及哪些应用的改动,或者我的业务需要改动哪些应用;  了解每个应用在全站系统拓扑结构的节点...
            13 13 2088
            分享
          • 前言本文主要是记录Pycharm创建支持appium模块的项目时,如何安装Appium-Python-Client以及通过一个简单的脚本实现自动点击操作的过程。步骤1.创建python项目使用Pycharm新建一个项目,这里取名test,如下图创建完以后,会自动生成一些文件,如下图:2.添加Appium-Python-Client2.1 打开Settings对话框在项目的菜单中选择File->Settgings(或者直接按快捷键Ctrl+Alt+S)2.2 安装Appium-Python-Client选择Project:test(test为项目名,不同项目不一样)下的Project In...
            13 13 2638
            分享
          •   摘要:全链路生产压测,指的是模拟真实场景、使用多样化的流量请求进行全流程、全链路压力测试。传统的性能测试,测试环境资源数量、各链路硬件资源配置、配比与生产环境存在差异,且系统性能会受其他关联方的影响,单交易压测结果无法反映系统真实性能情况。而全链路生产压测可以找到系统的瓶颈点、发现系统潜在风险;有效评估系统的实际承载能力,指导调配服务资源、调整限流策略。  笔者结合自身参与的银行系统全链路生产压测实践经验,针对全链路生产压测的适用场景、风险及难点和解决方案进行了简述及分析,为全链路生产压测的解决方案提供参考。  1、全链路生产压测适用场景  全链路生产压测适用场景广泛,主要适用于以下四种场...
            15 15 2587
            分享
          • 初始用Jmeter本想先学习嘛,想整个简单的接口调用,就公司系统的登录接口吧,结果就一登录接口就遇到各种问题,尤其是在登录接口传入的参数问题耗了很长时间。步骤:1、添加线程组(默认配置即可)2、添加一个HTTP请求sample填写各必填数据(协议、域名、方法、路径)把fiddler抓到的登录接口的参数拷进去: username=xiaowang&password=123456第一次我直接拷贝到:【消息体数据】如下图3、添加查看结果树运行,结果一直显示502{"code":"502","message":"请...
            0 0 3775
            分享
      • 51testing软件测试圈微信