jmeter

一、性能测试

  1. 性能测试是什么?

    • 广义:基于协议模拟用户发送请求,对服务器形成一定负载,来测试服务器的性能指标是否满足要求。
    • 狭义:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
  2. 为什么要进行性能测试?

    1. 评估当前系统的能力
    2. 寻找性能瓶颈,优化系统性能
    3. 评估软件是否满足未来的需求
    4. 招聘需要

3.什么是性能?

  • 时间:系统处理用户请求的响应时间。
  • 资源:系统运行过程中,系统资源的消耗情况。
  1. 功能和性能测试

    1. 不同
      • 功能测试验证系统的功能需求规格,聚焦功能。
      • 性能测试验证系统的业务性需求场景,聚焦时间和资源。
    2. 关系
      • 一般项目中,先功能测试通过后,再进行性能测试。
  2. 性能测试的分类

1.基准测试

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

2.负载测试

  1. 概念:通过增加逐步系统负载,确定在满足性能指标的情况下,找出系统所能承受最大负载量的测试。
  2. 作用:系统最大负载量达到用户要求时,系统才能正式上线使用。
  3. 重点
    • 通过负载测试,可以确定系统的最大负载量和极限负载量。
    • 系统对往外宣称的最大负载量
    • 负载测试的实践一般为1-2小时。

3.稳定性测试

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

4.压力测试

  1. 概念:在强负载下的测试,查看系统在峰值下是否功能隐患,系统是否具有良好的容错能力和可恢复的能力。
  2. 测试场景
    • 高负载下的长时间稳定性压力测试(如:B-C区间内进行24/3*24小时长时间测试)。
    • 极限负载下的破坏性压力测试(如:C-B区间进行测试)。

5.并发测试

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

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

  3. 与负载测试对比:

    • 负载测试:主要目的是测试高负载情况下,对系统资源的消耗,是否会耗尽的问题。
    • 并发测试:主要目的是测试极短时间内,并发请求时,系统资源争抢的问题。
  4. 性能测试的指标

    1. 响应时间

      1. 指从客户端发起请求开始,到客户端接收到结果的总时间。
      2. 包括:服务器处理时间+网络传输时间。
    2. 并发用户数

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

    3. 吞吐量

      1. 概念:单位时间内处理客户端的请求数量,直接体现软件系统的承受能力。
      2. 吞吐量单位分类:
    4. QPS:每秒查询数,即控制服务器每秒处理的指定请求的数量。

    5. TPS:每秒事物数,即控制服务器每秒处理事物请求的数量。

      区别:QPS基本类似于TPS,但是不同的是对于一个页面的一次访问,形成一个TPS,但是一个页面请求,可能产生多次对服务器的请求,服务器对这些请求,可以计入QPS中。

    6. 点击数:所有的页面元素的请求总数量。

    7. 错误率

      • 指系统在负载情况下,失败业务的概率。
      • 错误率是性能指标,是高负载下的失败业务的概率

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

    8. 资源利用率

      1. 概念:系统各种资源的使用情况,率=资源使用量/总资源可用量x100%
      2. 常见资源指标
        • CPU使用率:不高于75%-85%
        • 内存大小使用率:不高于80%
        • 磁盘IO(速率):不高于90%
        • 网速(速率):不高于80%
    9. 性能测试工具

      HP LoadRunner 、 Apache Jmeter 、Apache AB

二、Jmeter介绍

  1. 为什么使用jmeter
    • 开源、免费、基于JAVA编写,可集成到其他系统可拓展各个功能插件
    • 支持接口测试、压力(负载和压力)测试等多种功能,支持录制回访
    • 入门简单相较于自己编写框架和其他开源工具,有较为完善的UI界面,便于接口调试。
    • 多平台支持,可在Linux,Windows、Mac上运行,支持多协议
  2. Jmeter的作用
    1. 接口测试:Postman,方便好用(可做性能测试,但没有性能指标)
    2. 性能测试jmeter
    3. 数据库测试
  3. jmeter怎么用
    • 下载、安装jmeter,配置java环境变量,安装jdk
    • Windows双击---jmeter.bat
    • Linux双击---jmeter.sh

三、使用Jmeter测试快速入门

  1. 线程组是什么?

    • 进程:一个正在执行的程序
    • 线程:一个进程有多个线程
    • 线程组:按照线程性质对线程分组。
    • 三者关系:一个进程有多个线程组,一个线程组有多个线程。
    1. 创建线程组

      点击进程---右键添加---点击线程----点击线程组

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

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

    3. 线程数

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

    4. 准备时长

      设置的虚拟用户数需要多长时间全部启动。

    5. 循环此时

      每个线程发送请求的次数。

    6. 调度器

      设置线程组启动的开始时间和结束时间

    7. 持续时间

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

    8. 启动延迟

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

    9. 启动时间

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

    10. 结束时间

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

  2. 创建http请求

    右键线程组---取样器---HTTP请求

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

    • 名称:本属性用于标识一个取样器
    • 注释:用于记录可读的注释信息
    • 服务器名称或IP:HTTP请求发送的目标服务器名称或者ip地址
    • 端口号:目标服务器的端口号
    • 方法:发送HTTP请求的方法,较多为GET、POST方法
    • 内容编码:utf-8、jbk
    • 路径:目标URL路径
  4. 设置对应的查看内容

    点击http请求---右键点击添加---点击监听器---查看结果数、聚合报告、用表格查看结果

  5. 查看表格信息

    • Sample:每个请求的序号
    • Start Time:每个请求开始时间
    • Thread Name:每个线程的名称
    • Label:http请求
    • Sample Timer:每个请求所花时间,单位毫秒
    • Status:请求状态,如果勾选则表示成功,如果为叉表示失败
    • Bytes:请求的字节数
    • 样本数目:请求个数,成功情况下等于,设定的并发数乘以循环次数
    • 平均:每个线程请求的平均时间
    • 最新样本:表示服务器响应最后一个请求的时间
    • 偏离:服务器响应时间变化、离散程度测量值得大小
  6. 查看结果树

    • 请求的数据展示(请求头信息、请求参数)
    • 响应数据展示(响应码、响应头)
    • 观察结果树,请求为红色是出错请求,请求为绿森是通过
  7. 聚合报告参数说明

    • lable:对应每一个请求,显示的是http请求的name
    • Samples:表示这一次的测试中一共发送多少个请求
    • Average:平均响应时间指的是所有的请求的平均响应时间
    • Median:中位数,50%用户响应时间
    • 90%Line:90%用户的响应时间
    • Min:最小响应时间
    • Max:最大响应时间
    • Error%:本次测试中出现错误的请求的数量/请求的总数
    • Throughput:吞吐量,默认情况下表示每秒完成的请求数
    • Recived KB/Sec:每秒从服务器端接收到的数据量,kb为单位

四、Jmeter主要组件介绍

  1. 测试计划:使用Jmeter进行测试的起点,它是其他Jmeter测试元件的容器。
  2. 线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求。
  3. 取样器:模拟各种请求,所有实际的测试任务都由取样器承担,存在多种请求。
  4. 监听器:负责收集测试结果,同时也被告知了结果的方式。
  5. 断言:用于来判断请求响应的结果是否如用户所期望,是否正确。
  6. 逻辑控制器:允许自定义Jmeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
  7. 定时器:负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。
  8. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
  9. 前置处理器和后置处理器负责在生成请求之前和之后完成工作,前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。

五、Jmeter组件参数化

  1. 参数化是什么?

    动态的获取并设置数据

  2. 为什么使用参数化

    • 执行批量操作,批量添加批量删除,人工效率太低。
    • 运用程序代替人工获取并设置数据,安全高效。
    • 比如:对被测系统的用户和密码进行参数化,来模拟多个用户同时登陆系统、
  3. 参数化实现之用户自定义变量

    实现多个接口共享数据,修改一条即修改全部

    右键线程组---添加----配置元件----用户自定义的变量

  4. 参数化实现之CSV Data Set Config

    右键线程组---添加---配置元件---CSV Dtate Set Config

    这个组件可以动态获取并设置数据,实现批量添加操作

    文件名、文件编码、变量名称

    用¥{变量名}方法调用

    1. 线程组线程数改为大于文件中数据的处理

      遇到结束符在循环

      遇到结束符停止线程

    2. 如果数据来自数据库

      数据库导出txt文件

  5. 使用Jmter函数助手(文件中不要出现中文)

    1. 点击工具---函数助手、调出函数助手对话框
    2. 选择 -CSVRead 函数
    3. 函数参数
      1. 第一个参数:填写文件路径
      2. 第二个参数:文件列号是从0开始的,第一列0、第二列1
      3. 复制生成的参数化函数,copy过程需要使用的地方即可
      4. _Random函数是从某个数据段随机读取数据替换参数,当需求添加多条数据记录且某些字段需要唯一性时使用。

六、Jmeter正则表达式提取

  1. 使用正则提取

    运用Jmeter正则提取器,可以从请求的响应结果中取到需要的内容,从而实现关联。

    *号 匹配前面字表达式0次或多次

    +号 匹配前面的子表达式一次或者多次

    ?号 匹配前面的子表达式0次或者一次

    ()号 标记一个子表达式的开始和结束为止

    正则表达式提取的相关设置

    右键线程---添加---后置处理器---正则表达式提取器

    1. 引用名称:下一个请求要引用的参数名称

    2. 正则表达式:

      ():括起来的部分就是要提取的。

      .:匹配任何字符串

      +:一次或者多次。

      ?:不要太贪婪,在找到第一个匹配项后停止。

    3. 模板:用引用起来,如果在正则表达式中有多个正则表达式,则可以$23$表示解析到第几个值。

    4. 匹配数字:0代表随机值,1代表全部取值,通常情况下填0

    5. 缺省值:如果参数没有取得的值,那默认给一个值让它取。

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

推荐阅读更多精彩内容