当前位置: 首页 > news >正文

收下这份实操案例,还怕不会用Jmeter接口测试工具

一、简介

JMeter,一个100%的纯Java桌面应用,由Apache组织的开放源代码项目,它是接口功能、自动化、性 能测试的工具。具有高可扩展性、支持HTTP、HTTPS、TCP、等多种协议,还可以自己编写Java脚本对 协议进行扩展。

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

二、安装和配置

1、本机安装好jdk环境

2、官网下载压缩包,在任意目录下解压

3、修改配置文件,打开Jmeter的bin目录下jmeter.properties,修改:

language=zh_CN
sampleresult.default.encoding=utf-8

4、进入到Jmeter的bin目录下,双击jmeter.bat启动

三、Jmeter常用组件

在Jmeter中,可以通过添加不同的组件,来实现不同的功能,常用的组件有:

测试计划

一个最基本的组件,所有的其他组件都要在它的内部运行。

线程组

线程组代表了一组用户,它可以模拟1个或多个用户,可以发起1次或多次请求,也可以连续发送n秒的 请求。

取样器

取样器代表了一个请求,比如HTTP请求,TCP请求等,通过配置服务端接口的ip、端口号和参数等信 息,就可以向服务端发送数据,并拿到响应。

断言

断言就是一个预期结果,断言通常是针对某个HTTP请求的,判断HTTP的返回值是否符合断言的规则, 比如是否包含“success”,状态码是否是200等。如果断言通过,Jmeter就认为HTTP请求成功,否则就标 记为失败。

监听器

监听器就是在Jmeter测试过程中,获取一些运行数据,比如发送了多少次请求、成功了多少次,失败了 多少次。每次请求和响应的具体内容等。

四、编写一个HTTP接口脚本

打开码同学商城卖家管理后台登录页面,输入用户名密码进行登录,通过fiddler,可以抓包登录接口的信息:

url:/seller/login

请求方式:GET

参数:username=mtx-001&password=e10adc3949ba59abbe56e057f20f883e&captcha=1512&uuid=c9835a40-047b- 11ec-ae8f-41d7ee6b2a89

第一步:创建线程组

在测试计划上右键,添加线程组,保持默认

第二步:创建HTTP请求

在线程组上右键,添加取样器-HTTP取样器,并根据接口的信息,填写协议类型、服务器ip、端口号、 请求方式、路径、请求参数等信息

第三步:创建监听器

在线程组上右键,添加监听器-查看结果树,,点击菜单栏运行按钮,这样就能看到接口运行后的请求和 返回数据

第四、断言

默认情况下,Jmeter会根据接口的响应状态码是否为200来判断接口是否成功,但是很多时候,200只能代表HTTP请求成功了,但是业务上未必成功。因此还需要对接口的返回数据做判断。因此可以使用 Jmeter断言来对返回数据做判断。

断言通常是针对某个HTTP请求的,判断HTTP的返回值是否符合断言的规则,比如是否包含“success” 等,如果断言通过,Jmeter就认为HTTP请求成功,否则就标记为失败,在查看结果树中标记为红色。

常用的断言有Json断言和响应断言

Json断言

针对接口返回是json格式数据的,可以使用json断言,它可以判断json字符串中的某个值是否符合预期。

比如,登录接口成功后,服务器会返回此用户的username和nickname

{ "access_token": 
"eyJhbGciOiJIUzUxMiJ9.eyJzZWxmT3BlcmF0ZWQiOjAsInN1YiI6IkNMRVJLIiwicm9sZSI6IlNVUE VSX1NFTExFUiIsImZvdW5kZXIiOm51bGwsInJvbGVzIjpbIkJVWUVSIiwiU0VMTEVSIiwiQ0xFUksiXS wic2VsbGVyTmFtZSI6IjExMSIsImNsZXJrSWQiOjE2LCJ1dWlkIjpudWxsLCJ1aWQiOjE5NjUsInNlbG xlcklkIjo0MSwiY2xlcmtOYW1lIjoibXR4LTAwMSIsImV4cCI6MTYyOTg3MDU5OCwidXNlcm5hbWUiOi JtdHgtMDAxIn0.BEnmRfCU2nfkqMwQVajaxMP5uoUtcyoAsTHMkaK_9RoHwaxS0GNUDY- 9I048wx8LX7pmyMqWl70Q4B31dlVTHw", "uid": 1965, "refresh_token": 
"eyJhbGciOiJIUzUxMiJ9.eyJzZWxmT3BlcmF0ZWQiOjAsInN1YiI6IkNMRVJLIiwicm9sZSI6IlNVUE VSX1NFTExFUiIsImZvdW5kZXIiOm51bGwsInJvbGVzIjpbIkJVWUVSIiwiU0VMTEVSIiwiQ0xFUksiXS wic2VsbGVyTmFtZSI6IjExMSIsImNsZXJrSWQiOjE2LCJ1dWlkIjpudWxsLCJ1aWQiOjE5NjUsInNlbG xlcklkIjo0MSwiY2xlcmtOYW1lIjoibXR4LTAwMSIsImV4cCI6MTYyOTg3MTE5OCwidXNlcm5hbWUiOi JtdHgtMDAxIn0.54MSaFcXIuGexBeXY-79oO5_8tAHvmEvtbJ0qKUE9A5VpqKmbECahX4zcb_2XQEox- H0aIZX49P9ncRrH22Jgg", "face": null, "role_id": 0, "founder": 1, "nickname": "mtx-001", "username": "mtx-001" 
}

添加json断言,判断服务器返回的username是否符合预期。

在HTTP请求上,右键添加json断言

解释:

Assert JSON Path exists:填写Json路径表达式,其中$代表整个json,$.username就是 username对应的值

Additionally assert value:是否对Json路径表达式对应的值进行判断

Expected Value:期望值的内容,填写你的期望值

Json Path的更多详细用法参见:https://github.com/json-path/JsonPath

响应断言

响应断言的应用范围更广一些,只要返回的响应内容是文本内容,无论什么格式,HTML、Json等,响 应断言都可以判断 在HTTP请求上右键,添加响应断言

解释:

测试字段:对哪部分数据进行判断,默认是响应内容

模式匹配规则:判断规则,默认是包含字符串

测试模式:具体判断的内容

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述

在这里插入图片描述

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。

相关文章:

  • 深入理解位运算符及其在JavaScript中的应用
  • html5cssjs代码 004 2035年倒计时
  • 揭秘2024美团春招:最全MySQL面试题大全,必看必收藏!
  • web中实现一个账号同一时间只能由一个人使用
  • 【MySQL篇】 MySQL基础学习
  • Objective-C blocks 概要
  • golang中fallthrough简介及用法
  • Java学习笔记18——SQLite3数据库安装与使用
  • Java中 常见的开源树库介绍
  • 如何选择好用的ai写作软件?
  • 实体门店运营方案:揭秘行业分类与拓展优质客户之道
  • 华为机考:HJ2 计算某字符出现次数
  • 147.乐理基础-七和弦是什么、七和弦的名字
  • python的数据容器--字符串
  • C++标准库中的多线程编程
  • 03Go 类型总结
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  •  D - 粉碎叛乱F - 其他起义
  • extjs4学习之配置
  • Idea+maven+scala构建包并在spark on yarn 运行
  • JavaWeb(学习笔记二)
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Mithril.js 入门介绍
  • MySQL主从复制读写分离及奇怪的问题
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • React16时代,该用什么姿势写 React ?
  • Redis学习笔记 - pipline(流水线、管道)
  • text-decoration与color属性
  • ucore操作系统实验笔记 - 重新理解中断
  • XML已死 ?
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 应用生命周期终极 DevOps 工具包
  • Java数据解析之JSON
  • Java总结 - String - 这篇请使劲喷我
  • 阿里云ACE认证学习知识点梳理
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #if #elif #endif
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (转)iOS字体
  • (转载)hibernate缓存
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .NET Project Open Day(2011.11.13)
  • .NET 使用 XPath 来读写 XML 文件
  • .NET 依赖注入和配置系统
  • .NetCore项目nginx发布
  • .NET企业级应用架构设计系列之开场白
  • .Net中的集合
  • .pyc文件是什么?