JMeter性能测试插件开发_Part1探究.pdf

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JMeter 性能测试插件开发 lifr(lifr_nj@) JMeter的内部数据结构和 Test执行过程 问题 问题 1:在执行完Java Request 1 后会等待多少秒? Test执行过程 首先, 我们来看看 JMete内部到底是如何执行一个测试的。 执行测试, 你只需要选择菜单 “Run-Start。接下来, JMeter内部会进行相当多的动作。理解这整个过程可以帮助你更好 的利用 JMeter,也是 JMeter开发的基础。 JMeterStandardEngine.run() 首先, JMeterStandardEngine获得控制权。 在 JMeterStandarEngine.Run()函数里, 有下面 一些主要步骤 ? 首先会预编译 TestTree, 这是一个对 JMeter里变量求值很重要的步骤, 不过这里我 们先略过。 ? 然后会从 TestTree里找出所有 TestListener, 并通知每一个 TestListener 实例“测试 开始了” ? 然后按照 ThreadGroup的参数指定的方式启动 JMeterThread 至此 JMeterStandardEngine完成了它的工作,执行权交到了 JMeterThread手上。 JMeterThread.run() 在 JMeterThread的 run函数, 有下面一些主要步骤。 ? 首先是初始化 JMeterContext, 这是一个线程执行上下文,每一个 JMeterThread在运 行时都有一个 JMeterContext实例。 很多重要的运行时信息都保存在 JMeterContext 里。在 initRun函数里对 JMeterContext进行初始化。 ? 然后会迭代 Test Tree里所有的 Sampler, 依次执行。在这里 controller是 TestTree 的 ThreadGroup节点。 通过它的 next()方法可以遍历所有它下面的 Sampler。 实际执行在函数 process_sampler里。 JMeterTcess_sampler() 在 process_sampler里有下面的步骤 ? 首先获取该 Sampler实例的 SamplePackage。 SamplePackage是一个很重要的概念, 简单起见, 在这里我们只需把它理解为:把该 Sampler实例相关的各种测试元素,比 如变量配置,断言检查等,打包后的整体。 ? 然后首先执行 SamplePackage里的 PreProcessor PreProcessor如下所示。 ? 然后执行 Timer, 一般是作延时 Timer如下所示。 ? 终于, 开始执行该 Sampler ? 如果 result不为 null, 还要对 PostProcessor和断言 Assertion进行处理, PostProcessor如下所示 Assertions 如下所示 由此可见,对于一个 Sample 实例的执行, 并不仅仅是只执行 sample即可, 而是前前后后 执行了很多东西, 这些东西都组织在 SamplePackage这样一个内部数据结构里。下面我们 看看一个 SamplePackage到底都有包含哪些东西, 它是怎么构造出来的。 SamplePackage:Sample和它的朋友们 首先, SamplePackage是由 TestCompiler构造出来的。下面是 TestCompiler构造 SamplePackage的函数。 那么,TestCompiler是如何构造 SamplePackage的呢?这里就用到了 JMeter里面很重要的 一个数据结构 HashTree, 和对它进行遍历的接口 HashTreeTraveler。 HashTree是一个描述树结构的数据结构。 在 GUI里展现的 TestTree在 JMeter内部就是一 个 HashTree的实例。HashTreeTraveler是专门用来遍历 HashTree的接口。 TestCompiler实现了 HashTreeTraveler接口, 所以它可以遍历 HashTree。 而 TestCompiler遍历 TestTree是发生在 JMeterThread的 initRun函数里。 在遍历 TestTree的时候,针对每一个 Sample节点, 做了下面的事情。 解释如下: ? 得到该 Sample 节点到根节点的路径 TreePath。这个 TreePath是 node的链表。 ?

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档