你肯定知道, jmeter是一个跨系统平台的性能测试工具, 比如他可以在linux,freebsd,windows,solaris 等等各种系统上可以运行. 我可以说, 事务 transaction controller 控制器是jmeter作性能测试中最重要的. 让我来分享一些关于事物控制器的经验吧.
如果你看了录制jmeter脚本那一章, 你会知道jmeter会录制很多的子请求. 比如当打开首页后, 会继续打开图片, css等资源文件. 通常我们会剔除掉这些子请求, 但如果我需要衡量打开一个页面(包含所有子请求) 到底的性能, 请求时间如何时, 我们会计算包含所有子请求的数据. 这时我们必须使用事物控制器. ( 当然除了这种情况, 在进行api的测试时, 通常也需要事物控制器, 例如 假设api1 获取tgt, api2根据tgt 获取st, 假设该openauth 登陆的过程, 我们将这2步api的调用, 看做一次登陆成功. 那么我们需要将这2步操作,看为一个事务) .
让我们直接来看一个例子吧.
如上图, 有2个主要的http请求. 1个是主页请求, 主页请求又包含了4个子请求. 另外一个主请求是faq页面.
我添加了一个事务控制器(transaction controller), 将主页及其四个子请求都放在了该事务控制器下.
我进行了一次测试,看下聚合报告里的内容.
你可以看到一个事务控制器的标签. 这个事务器则包含了(Home Page, .jpg request, .gif request, .png request, .js request) 这几个请求. 虽然我们把这几个请求的数据相加,可以得到类似于该控制器的数据. 但仅仅是相似而已.
事务控制器中的声称父sample(采样)的标志位的含义.
如果选中了该标志位, 则你不会看到事务控制器包含的所有子元素.
这时候, 再跑一次测试, 你再看聚合报告的时候, 会发现,我们只能看到"事务控制器" 和 FAQ 页面的测试报告数据了.