IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Jmeter系列教程一之Jmeter入门使用 -> 正文阅读

[开发测试]Jmeter系列教程一之Jmeter入门使用

从今天开始将推出一些列的教程,包含JMeter、Charles使用进阶、接口测试、接口自动化、UI自动化等等。希望大家能够喜欢。

Jmeter?是一款使用Java开发的,开源免费的测试工具,主要用来做功能测试和性能测试(压力测试/负载测试),而且用Jmeter来测试API接口,非常好用。

Jmeter启动

  • windows系统,下载jmeter后解压,运行bin目录下的jmeter.bat?即可启动jmeter

  • MAC系统,命令行下cd到Jmeter文件夹bin下,在输入shjmeter即可启动Jmeter

  • 非GUI 模式启动:jmeter -n -t testapi.jmx?-l testapi.jtl

  • 图形界面启动Jmeter后, 点击 Options -> Choose Language ?来选择语言,支持中文

下面简单介绍一下常用的JMeter面板

Test Plan

  • Name:测试计划名字

  • Comments:关于该测试计划的注释

  • UserDefined Variables:可以定义整个测试中使用的重复值,如服务器名称。如果相同的变量名重复赋值,该值被设置为在测试计划(读从上到下)的最后一个定义。需要注意的是测试计划不能引用它定义的变量。如果需要从测试计划变量构建其他变量,使用配置元件。其他地方引用变量用${var_name}

  • RunThreadGroups consecutively:勾选后,普通线程组之间按上下排列顺序执行,而非默认的并行。

  • RuntearDown Thread Groups after shutdown of main threads:如果选中,tearDown线程组将在主线程正常关闭后(Stop Test)运行。如果测试被强制停止(Stop Test Now)tearDown线程将不会被运行。

  • Functional Test Mode:在非GUI模式下运行时,-l标志创建的日志文件。此选项勾选后,日志文件默认写入更多的数据字段如完整响应数据,影响性能。

  • Add directory or jar to classpath:类路径设置,可以添加jar文件或目录到特定的测试计划。(在测试数据库中需要用到连接数据库的jar包,后面会有专门的一章来讲解数据库)【必须重新启动JMeter】可以直接把jar包放到jmeter的lib目录(默认的classpath)本人一直都是这么操作的,好处就是不用每次都添加jar包,一劳永逸)

图片

ThreadGroup

  • Name:线程组名字

  • Comments:关于该线程组的注释

  • Action to be taken after a Sampler error:?遇到sampler出现error

    1.Continue:忽略,继续运行测试

    2.Start Next Thread Loop:忽略错误,开始下一个循环(Loop count),并继续进行测试

    3.Stop Thread:退出当前线程组,继续其他测试

    4.StopTest:整个测试在当前所有运行sampler结束后停止

    5.Stop test Now:立即停止测试,正在运行的sampler也中断

  • Number of threads:线程数

  • Ramp-Up Period:多久后需启动所有线程(如100s,共10个线程,则每个线程在前一个线程开始后10s开始)

  • Loop count:?重复执行次数,forever?一直运行

  • DelayThread creation until needed:?延迟线程创建,直到需要(如10s启动共10个线程,则确保每隔1s时创建一个,如果不选择该项,测试开始时默认创建所有线程,只是未到开始时间的线程会暂停)

  • Scheduler:调度器

    1.Duration:测试持续时间(设置后,持续X秒后停止测试)

    2.Startup delay:延迟开始(设置后,X秒后开始测试)

图片

这里介绍一下线程组的分类:

  • Thread Group:标准线程组

  • Setup Thread Group:准备阶段初始化,例如一些登录接口可以放在这里

  • Teardown Thread Group:结束阶段清除操作,例如退出登录可以放在这里

再说明一下:Stop Test和Stop Test Now对teardown线程组影响

这里分两种不同的情况详细说明一下:

  • 如果脚本在Setup Thread Group运行时就出错,那个这个时候无论是"Stop Test" 或者"Stop Test Now" , Teardown Thread Group都不会被执行。

  • 如果脚本在在Thread Group 中发生了错误,这个时候情况就不一样了

    1.如果选择的是Stop Test Now” 发生,则这后所有的Teardown Thread Groups 不会运行。

    2.如果选择的是Stop Test" 发生, 那么Teardown Thread Groups 会不会执行还依赖于Test Plan 的配置"Run tearDown Thread Groups after shutdown of main threads"。如果Enable 此设置,则Teardown Thread Groups 会被执行。

Sampler之HTTP Request

  • Name:取样器名字

  • Comments:取样器注释

  • Basic

    1.Protocol:一般输入http或者https

    2.Server Name or IP:这里输入服务器的地址或者IP

    3.Port Number:端口号,一般http 端口是80,https的端口是443,不过这个还需要根据接口的端口来确定

    4.Method:HTTP请求方法,常见的是GET 和POST

    5.Path:url路径

    6.Content encoding:请求内容编码,一般设置UTF-8,这里一般用户post请求中的body发送的内容

    7.Redirect Automatically/Follow Redirects:选择时两项互斥,当发送HTTP请求后得到的响应是302/301重定向时,JMeter 自动重定向到新的页面。Redirect Automatically只记录最后跳转请求,会丢失初始请求上的header、cookie信息。Follow Redirects记录整个过程,过程请求为sub-sampler

    8.Use KeepAlive:请求头信息Connection:keep-alive,是否保持连接

    9.Use multipart/form-data for POST:当发送HTTP POST 请求时,使用Content-Type: multipart/form-data (默认为application/x-www-form-urlencoded)发送,默认不选中(一般上传文件时勾选这个参数)

    10.Browser-compatible headers:当使用multipart/form-data,请求头Content-Type、Content-Transfer-Encoding被忽略

    11.Parameters:设置url请求参数

    ? ? 1).URL Encode?:是否urlencode,参数有“=”、“&”、“?”等特殊符号时一定要选择。默认不勾选的

    ? ? 2).IncludeEquals?:自动添加参数名和值之间的等号

    12.Bodydata:post请求使用到,一般是发送的内容

    13.SendFiles:发送文件相关设置,一般上传图片的接口用到

图片

  • Advance(本人还没有使用过次模式)

    1.Implementation:http请求实现方法,下拉选择项httpclient3.1、httpclient4、java、空

    2.Connect:连接超时时间,单位毫秒

    3.Respones:响应等待超时时间,单位毫秒

    4.Embedded Resources from HTML Files:HTML文件中的嵌入资源

    ??? 1)Retrieve All Embedded Resources:解析所有嵌入式资源,默认不勾选。

    ? ? 2)Parallel downloadds. Number:启用后可以设置并行链接下载,默认为6

    ? ??3)URLs must match URL:匹配过滤,只会下载匹配的该url的资源。

    5.Source address:只用于HTTP协议且implementation为HttpClient4时

    ??? 1)IP/Hostname:IP或者主机名

    ? ??2)Device:设备

    ??? 3)Device IPv4:IPv4设备

    ??? 4)Device IPv6:IPv6设备

    6.Proxy Server:代理服务器

    ???1)Scheme:代理服务器的方案

    ? ??2)Server Name or IP:代理服务器的名称或者IP

    ??? 3)Port Number:代理服务的端口号

    ????4)Username:代理服务器的用户名

    ? ? 5)Password:代理服务器的密码

    6.Save response as MD5 hash:响应保存为32位的MD5 加密字符

图片

Response Assertion 响应断言

  • Name:断言名字

  • Comments:断言注释

  • Apply?to:

    1.main sample only

    2.sub-sample only ?

    3.main sample and sub sample

    4.jmetervariable

    一般勾选main?sample only就足够了,如果我们发生的请求有重定向的话,就有mainsample?和 sub-sample之分了

  • Field ?toTest

    1.TextResponse:服务器响应文本(不包括头信息),一般普通http响应,都勾选这个

    2.关于响应断言我在后面会出一个详细的教程,在此就不做过多的描述

  • PatternMatching Rules

    1.Contains,matches:正则表达式匹配部分和全部

    2.Equals,Substring:纯文本,区分大小

    3.Not:取反

    4.or:或

  • Patterns to Test:测试模块

  • Custom failure message:自定义失败消息

图片

View Results Tree 查看结果树

备注:查看结果树一般不在进行负载测试期间使用,因为它占用了大量的资源(内存和CPU)

  • Name:结果树名字

  • Comments:结果树注释

  • Filename:选择本地文件

  • LogDisplayOnly:根据结果是否成功,筛选后显示和记录

  • Configure:配置需要保存到结果的内容(勾选项)

  • 显示结果区域

图片

实战:

使用登录的接口给大家举个例子

创建一个http请求:(密码登录)

图片

创建一个header:这个需要根据接口需求填入对应的信息

图片

添加一个响应断言:每个接口需要有断言,以判断该接口是否正确

登录成功后会返回用户姓名,所以此处我使用姓名作为断言

最后通过查看结果树看该接口是否正确

图片

上面表示接口正确

断言失败的例子

如果我们断言的时候输入“是是是”看一下结果:

这个时候查看结果树就会提示失败

图片

会明确的表示,断言失败,这个时候表示我们接口返回的数据不包括“是是是”

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 17:03:49  更:2021-12-02 17:04:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:50:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码