- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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的链表。
?
您可能关注的文档
- 个论--含氧盐类--硅酸盐1探究.ppt
- [贵州]客运专线特大桥钻孔灌注桩施工组织设计探究.doc
- 餐饮部管理制度预案.doc
- 2化学电源2013探究.ppt
- 餐饮单位制定卫生制度及岗位责任制参考预案.doc
- 餐饮动态等级检查要求预案.doc
- [精品]自然地理专题之地球表面形态探究.ppt
- 淘宝新型返利模式探究.ppt
- 个人防护用品培训探究.ppt
- 餐饮服务管理制度预案.doc
- 2025三支一扶复习提分资料附答案详解【夺分金卷】.docx
- 2025三支一扶通关题库附参考答案详解(巩固).docx
- 2025三支一扶考试彩蛋押题【原创题】附答案详解.docx
- 2025年防城港职业技术学院单招(语文)测试题库及答案1套.docx
- 2025年陕西航空职业技术学院单招(语文)测试模拟题库a4版.docx
- 2025年陕西警官职业学院单招(语文)测试模拟题库新版.docx
- 2025年鹤壁能源化工职业学院单招语文测试题库1套.docx
- 2025年韶关学院单招(语文)测试模拟题库完整版.docx
- 2025年陕西省西安市单招(语文)测试模拟题库参考答案.docx
- 2025年长沙幼儿师范高等专科学校单招(语文)测试模拟题库一套.docx
文档评论(0)