草庐IT

软件测试技能,JMeter压力测试教程,监听器之每秒事务数与响应时间(十四)

测试追风 2024-06-06 原文

目录:导读

前言

压测的时候,我们会经常关注2个重要的指标 TPS 和 RT

TPS:每秒处理的事务数(Transactions per Second),jmeter的Throughput为吞吐量(请求数/秒)

RT:响应时间(Reponse Time),从发起请求到完全接收到应答的时间消耗

一、监听器之每秒事务数

1、Transactions per Second

jmeter安装后,添加监听器,是默认不带 Transactions per Second
先安装jmeter插件管理器,前面一篇已经介绍过:https://blog.csdn.net/x2waiwai/article/details/122539742

在插件管理界面,勾选 jpgc - Standard Set,点安装

安装完成会自动重启jmeter

2、监听器-jp@gc - Transactions per Second

Transactions per Second 插件的作用是在测试脚本执行过程中,监控查看服务器的TPS表现————比如整体趋势、实时平均值走向、稳定性等。
添加监听器-jp@gc - Transactions per Second

设置线程5,循环100次开始压测,聚合报告看到吞吐量9.6/sec

再查看 jp@gc - Transactions per Second 插件的报告,可以看到更详细的实时的TPS红色是代表全部成功的,有报错的话会绿色显示

二、监听器之响应时间

1、每秒处理的事务数(Transactions per Second)

TPS:每秒处理的事务数,jmeter的Throughput为吞吐率(请求数/秒)

宏观上:TPS=并发数/响应时间,jmeter的Throughput = (number of requests) / (total time)

很多小伙伴会死记硬背公式来推算TPS值,这里涉及到一个概念并发数,这个并发数是指单位时间内发出去的请求数

这里的单位时间并不是1秒,是一个绝对的同一时间,比如0.0001秒,甚至更小的时间

那么这里的绝对并发,我们是没法知道的,我们通常说的并发是一个相对的并发,相对并发,也就是我们线程组里面设置的(线程数)虚拟用户数,可以这么理解

我们可以根据聚合报告看到,平均响应时间是94毫秒,吞吐量27.9/sec
通过上面的公式 tps = 线程数3/平均响应时间0.094秒 ,算出的结果是31.9,跟统计的27.9差不多。

也可以这样理解这个公式,绝对的并发是不存在的,请求发出的时间总有先后,绝对的TPS也是无法计算的,统计的角度看

TPS = 服务器处理请求总数/花费的总时间

我们设置线程组的持续压测时间为5秒,设置线程数3,于是压测的结果TPS值是27.5
根据公式TPS = 总请求数139/总时长5秒,得到的结果是27.8,这样就很接近报告的TPS值了

为了找到服务器的最大TPS值,我们一般设置不同的并发数(线程组)来压测

2、响应时间(Reponse Time)

RT 也就是平均响应时间(Reponse Time), 在聚合报告里面可以看平均值(单位是毫秒),如果我们想查看更详细的报告,跟着每个时间段的平均响应时间

添加-监听器-jp@gc - Response Times Over Time

压测后,先看聚合报告的平均值92毫秒
再看实时监控的平均响应时间
这种曲线图,在写性能报告的时候加上会显示更专业


有关软件测试技能,JMeter压力测试教程,监听器之每秒事务数与响应时间(十四)的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  3. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  4. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  5. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  6. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  7. ruby - 即使失败也继续进行多主机测试 - 2

    我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r

  8. ruby-on-rails - Ruby 检查日期时间是否为 iso8601 并保存 - 2

    我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby​​是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查

  9. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

  10. ruby-on-rails - 将 Ruby 中的日期/时间格式化为 YYYY-MM-DD HH :MM:SS - 2

    这个问题在这里已经有了答案:Railsformattingdate(4个答案)关闭4年前。我想格式化Time.Now函数以显示YYYY-MM-DDHH:MM:SS而不是:“2018-03-0909:47:19+0000”该函数需要放在时间中.现在功能。require‘roo’require‘roo-xls’require‘byebug’file_name=ARGV.first||“Template.xlsx”excel_file=Roo::Spreadsheet.open(“./#{file_name}“,extension::xlsx)xml=Nokogiri::XML::Build

随机推荐