测试员的那点事百人计划我爱编程

JMeter(一):基础概念

2018-02-11  本文已影响93人  倔强的潇洒小姐

1、什么是JMeter

以下是源于百度百科的解释,关于作用、历史、意义请查看更多内容

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等等,还可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

Apache JMeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。
它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。

2、Jmeter安装

2.1、前提:已安装JDK(版本要匹配),并已设置环境变量
JMETER_HOME:路径
%JMETER_HOME%\lib\ ----通用
%JMETER_HOME%\lib\ext ---仅适用于Jmeter的组件和插件,如果不想把Jmeter的插件库放到ext下面,那么需要在 jmeter.properties 中维护 search_paths

2.2、启动
进入Jmeter解压目录的bin子目录
1)windows环境:双击 jmeter.bat 文件
2)Linux环境:双击jmeter.sh 文件 (.sh是linux下的对应功能的文件)
3)Mac OS:进入Jmeter的bin目录,运行 sh jmeter
PS:查找Jmeter的绝对路径---find / -name Jmeter文件名

MAC OS.png

3、Jmeter目录结构

目录结构.png

4、常用组件

学习Jmeter之前,先了解下Jmeter的基本组件及其作用

测试计划:根目录,可以理解为老大,所有内容都是基于这个计划,都需要在这个测试计划下创建

测试计划组件.png

4.1、线程组
虚拟用户数,设置Jmeter按照什么场景运行
是一系列线程的集合,每一个线程都代表一个正在使用应用程序的用户。在JMeter中,每一个线程都意味着模拟一个真实用户向服务器发起请求。

线程组.png

比如设置的线程数为50,JMeter将创建并模拟测试50个用户请求到服务器端
(指的是在线用户数量,并不是并发数量)

4.2、Sampler
创建各种请求类型,用来模拟用户请求,在线程组下创建,不和其它元件相互作用,因此不存在作用域的问题

4.3、后置处理器
后续操作的子件集合,对发出请求后得到的服务器响应进行处理,或者抓取响应数据,比如,关联动态的cookie,可用于解析响应数据,提取变量,以便后续使用
作用域---元件在其作用范围内的每一个sampler元件之后执行,取样器被执行后被触发执行的元素。

例:2个请求A和B,A发出去后得到请求响应,其中的某个参数在请求B中需要用到,参数需要上下传递,这时通过关联进行获取

再如:每次登录操作,cookie都动态变化,必须每次都捕获动态的cookie才能通过服务器的校验

4.4、断言(检查点)
元件对其作用范围内的每一个sampler 元件执行后的结果执行校验,通俗点来说就是判断测试中得到的响应数据是否符合预期

比如登录成功之后,请求响应信息中肯定会有信息提示成功,通过断言去判断,看看响应头里有没有我的预期结果,有就表示成功了;再如购物网站,手写了登录脚本来验证用户是否登录成功,若登录成功个人中心则会显示用户信息,通过断言来校验

4.5、监听器
对测试结果数据进行处理和可视化展示

4.6、逻辑控制器
帮用户去定制何时发送请求的逻辑,它可以改变请求发送的顺序,也可以修改请求,比如让请求重复执行等(类似编程语言里的if、for)

4.7、配置元件
包含了Sampler下各种Sampler的默认配置设置
作用域---会影响其作用范围内的所有元件

4.8、定时器
默认情况下,JMeter线程没有停留的按顺序执行,为模拟真实且不在短时间内给服务器造成太大的压力,我们在请求之间添加定时器作为思考时间(设置操作之间的等待时间)
PS:当执行一个sampler之前时,和sampler处于相同作用域的定时器都会被执行,如果希望定时器仅作用于其中一个sampler,则把该定时器作为其子节点加入

4.9、前置处理器
用于在实际请求发送之前,对即将发出的请求进行特殊处理,比如修改HTTP协议头、参数化等
作用域---在其作用范围内的每一个sampler元件之前执行

作用域举例,如图所示:

作用域演示.png

总结:从各个元件的层次结构来判断每个元件的作用域

5、执行顺序

配置元件--->前置--->定时器--->Sampler--->后置--->断言--->监听器

如果在同一作用域范围内有多个同一类型的元件,则这些元件按照它们在测试计划中的上下顺序依次执行

6、Jmeter插件的安装方法

在jmeter3.0之前的版本中,插件的安装方法需要自行去找相应的jar包,然后放到对应的目录中。

jmeter3.0版本之后的,插件的安装步骤为:
1、下载plugins manager ,放到jmeter的lib下的ext目录中
2、重启jmeter才可以生效
3、重启jmeter后,选择菜单【选项】--->【plugins manager】之后在此对话框中进行选择安装

插件管理.png
7、优势

1、开源:Jmeter是完全免费的,并提供了源码可供自定义开发
2、图形界面模式:提供了方便的图形界面来编辑和开发测试脚本
3、与平台无关:可以轻易在Windows、Linux、Mac上运行
4、多线程框架:通过线程组,能够轻易的设置不同测试的并发用户
5、图形测试结果:提供了图表、表格、树、文件等格式的结果显示
6、易于安装:Jmeter不需要安装,下载解压即可用。
7、高扩展性:Jmeter支持用户自定义测试脚本,同样还提供了各种插件
8、多测试类型支持:支持性能测试、分布式测试、功能测试
9、仿真模拟:支持多用户并发测试
10、支持多协议:支持http、jdbc、ldap、soap、jms、ftp等协议
11、脚本测试:Jmeter支持beanshell和selenium

上一篇下一篇

猜你喜欢

热点阅读