jmeter脚本

一. 性能测试

1.0 为什么要进行性能测试?

评估当前系统的能力

寻找性能瓶颈,优化系统性能

评估软件是否满足未来的需要

招聘需要

1.1 什么是性能

时间:系统处理用户请求的响应时间

资源:系统运行过程中,系统资源的消耗情况

1.2. 性能测试是什么

1.2.1 广义定义

基于协议模拟用户发出请求,对服务器形成一定负载,来测试服务器的性能指标是否满足要求性能指标关注点:时间性能、空间性能性能测试与页面无关

1.2.1 狭义定义

指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

1.3 功能和性能测试

不同

功能测试验证系统的功能需求规格,聚焦功能。

性能测试验证系统的业务性需求场景,聚焦时间和资源。

关系

一般项目中,先功能测试通过后,后进行性能测试。

1.4 性能测试的分类

1.4.1 基准测试

狭义:单用户测试

广义:建立基准线,当系统软硬件环境发生变化之后再进行一次基准测试以确定变化对性能的影响。

1.4.2 负载测试

概念

通过逐步增加系统负载,确定在满足性能指标的情况下,找出系统所能承受最大负载量的测试。

作用

系统最大负载量达到用户要求时,系统才能正式上线使用。

案例

电梯行业规范:电梯从1楼到5楼的运行时间不超过24s

1人    20s7人    20s13人  20s    达到最大负载16人  25s19人  28s21人  断绳子

注意

通过负载测试,可以确定系统的最大负载量和极限负载量

系统对外宣称的最大负载量

负载测试的时间一般为1-2小时

1.4.3 稳定性测试

概念:在服务器稳定运行(用户正常业务负载下)的情况进行长时间测试(1天-一周等),并最终保证服务器能满足线上业务需求。

系统在用户需求的业务负载下运行达到规定的时间时,系统才能正式上线使用。

1.4.4 压力测试

概念:在强负载下的测试,查看系统在峰值下是否功能隐患、系统是否具有良好的容错能力和可恢复的能力。

测试场景

高负载下的长时间稳定性压力测试 (如:B-C区间内进行24/3*24小时长时间测试)

极限负载下的破坏性压力测试(如:C-D区间内进行测试)

1.4.5 并发测试

概念:在极短时间内,发送多个请求,来验证服务器对并发的处理能力。

应用场景

特定的活动场景:抢红包、秒杀、抢购等。

与负载测试对比:

负载测试:主要目的是测试高负载情况下,对系统资源的消耗,是否会耗尽的问题(双11活动)

并发测试:主要目的是测试极短时间内,并发请求时,系统资源争抢的问题(抢红包、秒杀)

1.5 性能测试的指标

1.5.1 响应时间

指从客户端发起请求开始,到客户端接收到结果的总时间

包括:服务器处理时间 + 网络传输时间

1.5.2 并发用户数

某一时刻同时向服务器发送请求的用户数

1.5.3 吞吐量(Throughout)

1.概念:单位时间内处理客户端的请求数量,直接体现软件系统能能承载能力。

吞吐量单位分类

1.5.4 QPS

QPS(Query Per Second)每秒查询数,即控制服务器每秒处理的指定请求的数量。

1.5.5 TPS

TPS(Transaction Per Second)每秒事务数,即控制服务器每秒处理事务请求的数量。

如:支付请求事务=查询用户余额请求+校验支付安全请求+发送支付请求

每秒处理查询用户余额15请求,每秒处理校验支付安全15个请求,每秒处理发送支付15个请求

支付tsp为15

1.5.6 点击数

所有的页面元素(如:图片、链接、框架等)的请求总数

注意:

点击数是请求数,不是页面上的一次点击

1.5.7 错误率

指系统在负载情况下,失败业务的概率

注意:

错误率是性能指标,是高负载下的失败业务的概率

-随机bug是功能bug,先解决随机bug才能进行性能测试

1.5.8 资源利用率

概念:系统各种资源的使用情况,率=资源使用量/总资源可用量x100%

常见资源指标

CPU使用率:不高于75%-85%

内存大小使用率:不高于80%

磁盘IO(速率):不高于90%

网路(速率):不高于80%

1.6 性能测试工具

二.  Jmeter简介

2.1. 我们为什么使用Jmeter

开源,免费,基于Java编写,可集成到其他系统可拓展各个功能插件

支持接口测试,压力(负载和压力)测试等多种功能,支持录制回放,

入门简单相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试

多平台支持,可在Linux,Windows,Mac上运行,支持多协议

2.2. Jmeter的作用

接口测试  面试说postman,因为方便好用。

性能测试  jmeter,也可以用postman(runner),但是没有性能指标

数据库测试

2.3. Jmeter怎么用

Windows下Jmeter下载安装,登录http://jmeter.apache.org/download_jmeter.cgi,根据自己平台,下载对应文件

2.4. 安装JAVA环境

安装JDK,配置环境变量(具体步骤不做介绍)

将下载Jmeter文件解压,打开/bin/jmeter.bat

image.png

2.5. Jmeter的目录结构

/bin 目录常用文件介绍:

examples:目录下包含Jmeter使用实例ApacheJMeter.jar:JMeter源码包jmeter.bat:windows下启动文件jmeter.sh:Linux下启动文件jmeter.log:Jmeter运行日志文件jmeter.properties:Jmeter配置文件jmeter-server.bat:windows下启动负载生成器服务文件jmeter-server:Linux下启动负载生成器文件/docs目录——Jmeter帮助文档/extras目录——提供了对Ant的支持文件,可也用于持续集成/lib目录——存放Jmeter依赖的jar包,同时安装插件也放于此目录/licenses目录——软件许可文件,不用管/printable_docs目录——Jmeter用户手册

三.  使用Jmeter测试快速入门

3.1. 线程组是什么

进程: 一个正在执行的程序对应一个进程线程: 一个进程有多个执行线程线程组:  按照线程性质对线程分组。查看任务管理器(爱奇艺有多个)三者关系: 一个进程有多个线程组,一个线程组有多个线程

测试计划—线程组—线程组属性中的线程数

并发执行:多个线程同时执行,特点:执行结束的顺序与开始的顺序不一致

顺序执行:按照线程的启动顺序挨个执行

默认情况下,线程组中的线程是并发执行

每一个线程都要执行组内的http请求

设置线程组顺序执行:勾选测试计划中的(独立运行每个线程组)

线程组用来模拟用户的并发访问

3.1.1.  创建线程组

3.1.2.  线程组主要包含三个参数:

线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。

3.1.3.  线程数:

虚拟用户数。一个虚拟用户占用一个线程。设置多少虚拟用户数在这里也就是设置多少个线程数。

3.1.4.  准备时长(秒):

设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。

3.1.5. 循环次数:

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

3.1.6. 调度器

设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选循环次数为永远)

3.1.7. 持续时间(秒)

测试持续时间,会覆盖结束时间

3.1.8. 启动延迟(秒)

测试延迟启动时间,会覆盖启动时间

3.1.9. 启动时间

测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测试时当前时间也会覆盖它。

3.1.10.  结束时间

测试结束时间,持续时间会覆盖它。

3.2. 创建http请求

见得最多,所以我们着重讲解:

3.3. 指定请求域名,请求路径

接口文档讲解

一个HTTP请求有着许多的配置参数,下面将详细介绍:

名称:本属性用于标识一个取样器,建议使用一个有意义的名称。

注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。

服务器名称或IP :HTTP请求发送的目标服务器名称或IP地址。

端口号:目标服务器的端口号。

方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

Content encoding :内容的编码方式,默认值为iso8859

路径:目标URL路径(不包括服务器地址和端口)

点击run测试,很麻烦,我们使用postman测试更简单,使用postman操作。

可以使用刚才的接口文档中的,聚合接口中演示一个。

3.4. 设置对应的查看内容

注意:如果监听器中有jp@gc开头的,都是第三方插件

3.5. 查看表格信息

Sample:每个请求的序号

Start Time:每个请求开始时间

Thread Name:每个线程的名称

Label:Http请求名称

Sample Time:每个请求所花时间,单位毫秒

Status:请求状态,如果为勾则表示成功,如果为叉表示失败。

Bytes:请求的字节数

样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数

平均:每个线程请求的平均时间

最新样本:表示服务器响应最后一个请求的时间

偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。

3.6. 查看结果树

请求的数据展示(请求头信息,请求参数,,)

响应的数据展示(响应码,响应头,,)

通过察看结果树,我们可以看到每个请求的结果,其中红色的是出错的请求,绿色的为通过。

Thread Name:线程组名称Sample Start:启动开始时间Load time:加载时长Latency:等待时长Sizeinbytes:发送的数据总大小Headers sizeinbytes:发送数据的其余部分大小Sample Count:发送统计Error Count:交互错误统计Response code:返回码Response message:返回信息Response headers:返回的头部信息

3.7. 聚合报告参数说明

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

推荐阅读更多精彩内容