首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jmeter组件精简概述

jmeter组件精简概述

作者头像
Criss@陈磊
发布2020-02-14 12:37:32
8020
发布2020-02-14 12:37:32
举报
文章被收录于专栏:测试技术圈测试技术圈

文 | Judy警官

jmeter是基于java语言的压力测试工具,除了通过命令来执行压测脚本,还提供图形界面功能。用户在图形界面中可以设置“测试计划”、“线程组”、“取样器”、“逻辑控制器”、“定时器”、“配置项”、“断言”、“变量”、“观察结果树”、“结果报表”、“结果图”。一开始接触这个工具时就感觉好多名词,记一遍忘一遍,忘一遍再记一遍。为了理清思路,我们可以从测试用例四大要素:条件、输入、执行、预期结果,来理解这些组件。先准备好条件和输入,然后执行测试,当实际结果与预期结果一致时,测试用例通过。正所谓万变不离其宗。

条件 1.配置项(config element) 添加方式:右键test plan-选择add-选择config element。 这里常用的有http header manager(用于设置http的头信息)、http cookie manager(用于设置http的cookie信息)、http request default(设置一些http通用属性,可被取样器个性化设置覆盖)、jdbc connection configuration(数据库链接设置)

2.前置处理器(pre processors) 添加方式:右键test plan-选择add-选择pre processors。 这里常用的有user parameters(可以为不同的线程提供不同的参数)、jsr223 preprocessors(在采样器运行前通过js脚本设置一些参数,比如加密)、beanshell preprocessors(在采样器运行前通过beans hell脚本设置一些参数,比如加密)、jdbc preprocessors(在采样器运行前设置一些数据库操作)

输入 1.配置项(config element) 添加方式:右键test plan-选择add-选择config element。 这里常用的有csv data set config(预设压测需要的一些参数,比如post请求中的参数)、user defined variables(定义用户变量,全局有效)、counter(计数器,为请求提供参数值)

2.前置处理器(pre processors) 添加方式:右键test plan-选择add-选择pre processors。 这里常用的有user parameters(可以为不同的线程提供不同的参数)

执行 1.线程组(thread group) 添加方式:右键test plane-选择add-选择thread group 线程组也叫用户组,是性能测试的用户资源池,可以用来设置时间和并发数,是测试计划的起点。它有几个关键属性,number of threads:待启动的线程数;ramp-up period (in seconds):在n秒内启动number of threads个线程;loop count:循环的次数;scheduler:是一个复选框,一般在loop count为forever时勾选该复选框,且设置duration,如果loop count不是forever时,一般不选此复选框。比如我设置number of threads=10,ramp-up period (in seconds)=1,loop count=10,1秒内启动10个线程,循环10次,共请求100次;number of threads=10,ramp-up period (in seconds)=1,loop count=forever,scheduler的duration=10,在1秒内启动10个线程,持续10s,启动线程不一定是几个。

2.采样器(sampler) 添加方式:右键test group-选择add-选择sampler(种类很多,下面介绍常用的) 常用的sampler有:http request、jdbc request、beanshell sampler、udp request(需要安装插件)、tcp request(需要安装插件)、dummy sampler(需要安装插件)。采样器顾名思义就是要采一个样本,以http request为例说明sampler,一个http请求包含请求地址、请求协议、请求方法、请求路径、输入参数、header信息、body信息。所以在建立一个http request的采样器的时候,我们其实就是在构建这些信息,以模拟一个http请求。其他几种也是同样的,jdbc请求要构建sql语句;udp sampler请求要构建ip、端口、请求参数;tcp sampler请求要构建ip、端口、请求参数;dummy sampler可以用作mock服务,模拟响应。

3.逻辑控制器(controller) 添加方式:右键test group-选择add-选择logic controller(种类很多,下面介绍常用的) 常用的controller有:if controller、loop controller、once only controller、random controller、inclued controller、throughput controller、runtime controller、transaction controller、foreach controller、switch controller。 在我们学习编程的时候,最基本的逻辑控制就是:顺序、if-else for,这三种基本逻辑就能组成很复杂的逻辑世界。这里的逻辑控制器也是一样的,if controller,当满足某种条件的时候才能执行其下面的子节点;loop controller,指定子节点的执行次数;once only controller,无论有多少循环,都只执行一次这个控制器下子节点;random controller 随机执行其下的子节点;inclued controller 用于导入外部测试片段(test fragement);throughput controller控制其下的子节点执行次数或负载比例分配;runtime controller控制其下的子节点执行时间;transaction controller 用于将 test plan 中的特定部分组织成一个 transaction,jmeter 中 transaction 的 作用在于,可以针对 transaction 统计其响应时间、吞吐量等。 比如说,一个用户操作可能 需要多个 sampler 来模拟,此时使用 transaction controller,可以更准确地得到该用户 操作的性能指标,如响应时间等。这个时间包含该控制器范围内的所有处理时间,而不仅仅是采样器的;foreach controller 依次调用用户定义的变量,直到最后一个,结束循环;switch controller和编程语言中的 switch 语句类似,执行 switch value 中指定的请求。

4.后置处理器(post processors) 添加方式:右键sampler-选择add-选择post processors 常用的后置处理器有regular expression extractor(正则表达式抽取器)、xpath extrator、以及beanshell processors、jdbc processors等等。以xxxx processors命名的后置处理器和前置处理器的概念类似,只是后置处理器是在sampler之后运行的,不同的后置处理器需要设置各自的属性。最常用的是regular expression extractor,我们可以用正则表达式匹配响应结果,抽取出我们想要的值,作为参数保存起来,以便其他请求使用;xpath extrator和regular expression extractor类似,只不过是抽取内容的语法不同,使用xpath语法。

5.定时器(timer) 添加方式:右键sampler(或者线程组)-选择add-选择timer 常用的timer有:constant timer、uniform random timer、gaussian random timer、constant throughput timer、precise throughput timer。 定时器可以让我们根据现实情况设置等待时间,还可以设置集合点使得多线程并发操作。定时器有作用域,定时器在sampler之前执行,当前作用域内的所有定时器累加的时间为最终时间。如果只想让一个sampler等待,可以把timer加到该sampler 下。constant timer:等待时间可以设置固定值;uniform random timer等待时间设置在一个范围内随机;gaussian random timer按照高斯分布的规律随机等待时间;constant throughput timer固定吞吐量定时器可以设定n次/min的吞吐量,比如一分钟运行60次;precise throughput timer精准吞吐量定时器,可以设定持续时间、吞吐量单位时长、吞吐量(n次/吞吐量单位时长),比如运行10分钟,每1s启动10个线程。可以设置集合点,集齐n个线程后,一起执行。

预期 1.断言(assertion) 添加方式:右键sampler-选择add-选择assertion 常用的有:response assertion、json assertion、xpath assertion、beanshell assertion。 断言就是为了检查响应的数据是否符合预期,用以保证性能测试过程中的数据交互与预期一致。response assertion响应断言,通过将预期的响应文本(text response)、响应码(response code)和真实返回的响应文本、响应码进行判断,一致则用例通过。比较的方式有很多,可以是equals、正则匹配、子串检测;json assertion:响应的数据是json格式时,可通过json表达式提取真实的响应数据,从而可以通过和预期对比进行判断是否用例通过,对比方式也包括正则或equals;xpath assertion:响应数据是xml格式的时候使用此种断言,类似json;beanshell assertion:可以通过写bean shell脚本断言,更为灵活。

2.listener(监听器) 观察结果树(view results tree) 添加方式:右键thread group-选择add -选择listener-选择view results tree 观察结果树可以很方便的查看请求数据和响应数据,包括http请求的header和body、请求方法、路径、cookie,以及响应的header和body。当出现问题时,用来分析问题,使用率很高。当运行失败后会显示红色,并显示原因;成功则显示绿色。

结果表格(view results in table、aggregate report) 添加方式:右键thread group-选择add -选择listener-选择view results in table 该表格中包含了每个样本的请求开始时间、响应时间、状态、请求和响应字节数,是描述样本的表格。

添加方式:右键thread group-选择add -选择listener-选择aggregate report 该表格包含了sampler、平均响应时间、tp50(tp单位是时间,意思是50%的样本不超过这个时间) 、tp90、tp99,最大时间、最小时间、错误百分比、吞吐量等数值,大部分是反应性能的指标。

结果图形(多种) 自带的graph results不是很方便看,安装插件可以更方便观察,安装Additional Graphs、Basic Graphs插件,可以查看active threads over time、bytes throughput over time、transactions per second、response times over time。 添加方式:右键thread group-选择add -选择listener-选择对应的项目。active threads over time 可以观察启动线程的情况、bytes throughput over time可以观察字节吞吐量、transactions per second可以观察每秒处理的事务数、response times over time可以观察响应时间。

以上就是从测试用例四要素条件、输入、执行、预期结果来认识jmeter的组件。只是简单的描述了各自的功能,没有给出实例,从感性上先认识一下jmeter。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 质问 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档