JMeter 性能测试入门


JMeter是一款优秀的开源测试工具, 是每个资深测试工程师,必须掌握的测试工具,熟练使用JMeter能大大提高工作效率。

本人将持续发表JMeter教程系列,覆盖Jmeter的各个功能,并且会通过丰富的实例,让初学者快速掌握Jmeter的各种用法 。

本文将通过一个实际的测试例子, 来讲解JMeter的性能测试的入门。

本文目录:

1. JMeter介绍

2. JMeter的安装

3. 学好JMeter的理论基础

4. JMeter的常用组件

5. JMeter性能测试示例


1. JMeter介绍

Apache JMeter 是Apache组织的开放源代码项目,是一个100%纯Java桌面应用,用于压力测试和性能测量。它最初被设计用于Web应用测试但后来扩展到其它测试领域。Apache JMeter可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,Java对象,数据库和查询,FTP服务器或是其它资源)的性能进行测试。JMeter可以用于在服务器,网络或对象模拟繁重的负载来测试它们提供服务的受压能力或者分析不同压力条件下的总体性能情况。你可以使用JMeter提供的图形化界面,分析性能指标或者在高负载情况下测试你的服务器/脚本/对象。

2. JMeter安装

官方网站:http://jmeter.apache.org/

解压后, 运行  “bin/jmeter.bat”   

Jmeter 是支持中文的, 启动Jmeter 后, 点击 Options -> Choose Language  来选择语言。

3. 学好JMeter的理论基础

1. 常见的接口协议

 Http 超文本传输协议

 Https 安全超文本传输协议

 FTP 文件传输协议

 TCP 网络控制协议

 IP 互联网协议

 UDP 用户数据协议

2. http协议响应吗

1XX:信息响应类,表示接收到请求并且继续处理(中间状态,瞬间)

2XX:处理成功响应类,表示动作被成功接收、理解和接受 eg:200(处理成功)

3XX:重定向响应类,为了完成指定动作,必须接受进一步处理 eg:329(重定向)

4XX:客户端错误,客户请求包含语法错误或者是不能正确执行 eg:响应码404>我们请求的资源不存在

5XX:服务端错误,服务端不能正确执行一个正确的请求 eg:500

响应码在服务端日志中会显示,在之前业务中出现过服务端抛出异常,遗留bug没处理,大错误。

3. Http协议请求模型

http协议请求响应模型

客户端发起请求 到 API层(逻辑处理后)将数据发送 到 DB层(数据库)

一、客户端

功能测试、性能测试、自动化测试

二、接口层

接口测试、功能测试、性能测试、自动化测试

三、数据库层

可以将开发人员使用到的sql语句单独拿出来进行性能测试

场景:登录

1、客户端发起请求到api接口层

-1.1用户在客户端填写用户名和密码,点击登录,发送请求

2、api接收到客户端发起的用户请求

-2.1 api对业务逻辑进行验证

2.1.1 验证用户名和密码是否合法

比如:用户名要求必须为真实手机号码(11位,1开头,第二位34578)

如果验证失败,即用户名不合法,那么需要给客户端返回响应码

比如码值为1 , 2 , 3

1代表用户名格式错误

2代表用户名或密码错

3代表密码格式错误

3、api会将用户输入的数据发给DB层(读数据库)

Create、Read、Update、Delete

Select * from user where

userName = “MRlin” and passWord = “123456”;

-3.1数据库查询成功则返回1,失败则返回0

4、DB会将返回的查询数据库的条目数给api

5、Api返回成功或失败的状态码给客户端

6、客户端将返回信息提示给用户

4. JMeter的常用组件

学习、研究jmeter之前,深入了解jmeter的基本组件及其作用是必须的。接下来我们开始讨论基于jmetere进行性能测试必须掌握的组件,以便大家逐步掌握jemter的核心基本能力。

下面的几个组件是入门jmeter必须掌握的:

Test Plan测试计划

Thread Group线程组:

所有的任务都是基于线程组,开通多少个线程就代表有多少个并发用户;JMeter是由Java实现的,并且使用一个Java线程来模拟一个用户,因此线程组(Thread Group)就是指一组用户的意思,换句话说一个线程组就是一组虚拟用户(virtual users),这些虚拟用户用来模拟访问被测系统。

Samplers取样器

所有的测试任务都是Sampler,即任何测试任务的类别都是Sampler,比如HTTP请求、JDBC请求、FTP请求;

Listeners监听器

在jmeter中Listeners提供了执行结果生成和显示能力的支持,提供了树形结构、表、图形和日志方式。

5. JMeter性能测试示例

性能测试:被测试的系统,在一定的访问压力下,看程序运行是否稳定/服务器运行是否稳定(资源占用情况)比如: 2000个用户同时到一个购物网站购物,这些用户打开页面的速度是否会变慢,或者网站是否会奔溃。

性能测试的步骤:

1. 写脚本 或者录制脚本

2. 使用用户自定义参数

3. 场景设计

4. 使用控制器,来控制 模拟多少用户。

5. 使用监听器, 查看测试结果

简单示例:

测试场景: 用Jmeter模拟200个用户,同时去使用百度搜索不同的关键字, 查看页面返回的时间是否在正常范围内。

第1步:创建参数化数据文件

首先我们把测试需要用到的2个参数放在txt文件中,

新建一个data.txt文件,输入些数据, 一行有两个数据,用逗号分隔。

data.txt

第2步 创建JMeter测试框架

框架

第3步 使用CSV Data Set Config 来参数化

数据文件配置

第4步 添加HTTP 请求

http请求设置

第5步使用线程组控制器,设置模拟用户

线程组控制器设置

Number of Threads(users):     一个用户占一个线程,  200个线程就是模拟200个用户。

Ramp-Up Period(in seconds):   设置线程需要多长时间全部启动。如果线程数为200 ,准备时长为10 ,那么需要1秒钟启动20个线程。也就是每秒钟启动20个线程。

Loop Count: 每个线程发送请求的次数。如果线程数为200 ,循环次数为10 ,那么每个线程发送10次请求。总请求数为200*10=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。

第6步 运行查看结果

聚合报告

聚合报告分析

Label:httpRequest name属性值。

Samples:测试的过程中一共发出了多少个请求即总线程数,(如果模拟10个用户,每个用户迭代10次,这里就显示100),对应图形报表中的样本数目。

Average:单个Request的平均响应时间,计算方法是总运行时间除以发送到服务器的总请求数,对应图形报表中的平均值。

Min:服务器响应的最短时间。

Max:服务器响应的最长时间。

Error%:本次测试中出错率,请求的数量/请求的总数。

Throughput:吞吐量,默认情况下表示每秒完成的请求数。

KB/Sec:每秒从服务器接收到的数据量,即每秒钟请求的字节数,时间单位均为ms。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容