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

day12 接口测试 ——入门→精通→实战(1)

【没有所谓的运气🍬,只有绝对的努力✊】

 

目录

1、接口测试分类

1.1 内部接口:

1.2 外部接口:

2、目前接口架构设计

2.1、基于SOAP架构,

2.2、基于RPC架构,

2.3、基于RestFul架构,

2.3.1 请求行、请求头、请求体

2.3.2 响应行、响应头、响应体

3、市面上的接口测试工具

4、Jmeter简介、安装、环境变量的配置

5、Jmeter目录介绍

6、Jmeter常用组件

6.1 jmeter常用组件

6.2 顺序:!!!

6.3 作用域:!!!

7、Jmeter执行接口测试

step1:

step2:编写接口测试用例。

step3:使用接口测试工具执行

step4:

8、Jmeter接口测试——案例1 

9、Jmeter接口关联

9.1 使用正则表达式实现接口关联

9.2 使用json提取器表达式实现接口关联

10、Jmeter实现业务闭环

11、Jmeter动态参数处理

12、Jmeter断言(见day11 性能测试(3))

13、Jmeter接口测试调试方案

14、CSV参数化处理

15、必须带请求头的接口

16、没有接口文档录制功能操作

17、BeanShell组件

17.1 Jmeter里面有哪些 BeanShell呢?

17.2 内置变量和语法规则

17.2.1  log打印日志

17.2.2  vars表示:JmeterVariables,操作Jmeter变量

18、Jmeter执行数据库操作(Jmeter直连数据库)

18.1 案例:使用jemter从数据库中获取用户名和密码,放入登录接口里面。!!!!!

19、Jmeter非GUI(界面)方式运行

面1:Git和SVN的区别:

面2:详细分析 请求头、请求行、请求体 里面各个字段的含义和内容。

面3:查看结果树里面,取样器结果的各个参数字段含义。


1、接口测试分类

1.1 内部接口

测试对被测系统各个子模块之间的接口;或被测试系统提供给内部系统使用的接口。(只需测正例

1.2 外部接口

        1、被测系统调用外部的接口。(只需测正例

        2、系统对外提供的接口。

接口测试重点:

        检查接口参数传递的正确性;

        接口功能的正确性;

        输出结果的正确性;

        以及对各种异常情况的容错处理;

        以及权限控制;

        分页处理;

        调用次数的限制;

2、目前接口架构设计

2.1、基于SOAP架构,

基于XML规范。基WebService协议。特点:接口地址以 ?wsdl结尾

2.2、基于RPC架构,

基于dubbo协议,thrift协议,SpringCloud微服务。

2.3、基于RestFul架构,

基于json规范,基于http协议。

        RestFul规则:

  •  接口地址:http:/127.0.0.1/user,get(查询用户),post(新增用户)put(修改用户),delete(删除用户)
  •  json数据格式:只有两种数据类型。键值对{key:value}数组[arr1,arr2]

2.3.1 请求行、请求头、请求体

cookie :客户端→服务器的。

       

2.3.2 响应行、响应头、响应体

set-cookie:服务器→客户端的  只在第一次请求

3、市面上的接口测试工具

主流的两种工具:

                (1)方式1:Jmeter+Ant+Git+Jenkins

                (2)方式2:Postman+Newman+Git+Jenkins

其他工具:soapui 、apipost、fiddler、charies

4、Jmeter简介、安装、环境变量的配置

基于java语言的压力测试工具,可以做接口测试、也可以做性能测试。

安装:jdk1.8以上、配置环境变量。

Jmeter——接口测试、性能测试;

5、Jmeter目录介绍

backups:脚本的备份目录,格式jmx

bin目录:存放jmeter的启动脚本、配置文件、模版文件

        jmeter.bat 启动jmeter

        jmeter.properies :核心的配置文件

docs目录:离线的帮助文档。

extras目录:存放第三方的集成构成文件,集成Ant。Jenkins。

lib目录:存放jar包。

licenses目录:许可证文件。

6、Jmeter常用组件

6.1 jmeter常用组件

(1)测试计划。        起点。所有组件的容器。

(2)线程组。            代表一定数量的用户

(3)取样器。           向服务器发送请求的最小单元

(4)逻辑控制器。         结合取样器实现一些复杂的逻辑。

(5) 前置处理器。        在请求之前的工作。

(6)后置处理器。        在请求之后的工作。

(7) 断言。                用于判断请求是否成功。

(8)定时器。        负责在请求之间的延迟间隔,固定,高斯,随机。

(9)配置元件。        配置信息

(10)监听器。        负责收集结果。

6.2 顺序:!!!

测试计划→线程组配置元件→前置处理器→定时器→取样器→后置处理器→断言→监听器

6.3 作用域:!!!

必须组件:测试计划、线程组、取样器

辅助组件:除了必须组件外。

辅助组件作用于父组件同级组件,以及同级组件下的所有子组件

7、Jmeter执行接口测试

step1:

拿到api接口文档(Fiddler抓包)、熟悉接口业务接口地址鉴权方式入参、出参、错误码

step2:编写接口测试用例。

        测试思路:

                正例:输入正常的入参、查看接口成功返回。

                反例

                        鉴权:空、错误、鉴权过期、鉴权次数限制.......

                        参数:空、类型错误、长度错误、错误码的覆盖。

                        其他:黑名单、分页、

step3:使用接口测试工具执行

step4:

Jmeter + Ant + Git + Jenkins 实现持续集成输出接口测试报告,通过电子邮件发送。

8、Jmeter接口测试——案例1 

目前市面上的鉴权码获取方式:

(1)通过接口获取,appid、secret

(2)登陆之后自动生成。username、password

案例:

1、登录接口,获取token

2、创建用户接口,传入token和其他参数

9、Jmeter接口关联

9.1 使用正则表达式实现接口关联

9.2 使用json提取器表达式实现接口关联

10、Jmeter实现业务闭环

增、改、删、查。

11、Jmeter动态参数处理

随机数字:${__Random(10000,99999,)}

随机字符串:${__RandomString(6,abcdefg1234567,)}

上述随机的数值,可以通过函数助手得到。

12、Jmeter断言(见day11 性能测试(3))

更加详细:day11 性能测试(3)——Jmeter 断言+关联-CSDN博客

13、Jmeter接口测试调试方案

1、通过【查看结果树】里面的请求信息和响应信息。

2、使用【调试取样器】。

3、Jmeter 结合Fiddler实现调试。(在没有接口文档,只能通过抓包去获取。)

14、CSV参数化处理

login.csv文件准备

读取csv文件

15、必须带请求头的接口

添加HTTP信息头管理器:

16、没有接口文档录制功能操作

1、如果没有接口文档的情况下,可以使用Jmeter的脚本录制的功能。

2、使用Jmeter自带的http代理服务器实现。(把Jmeter作为代理)

(1)设置端口、设置存放的位置。

(2)设置本机的代理请求。

17、BeanShell组件

BeanShell 是一种完全符合java语法规则的脚本语言。

java包括:javase、javaee、javame。

17.1 Jmeter里面有哪些 BeanShell呢?

(1) 前置处理器:Beanshell 预处理程序。

(2)定时器:BeanShell

(3)采样器BeanShell

(4)后置处理器:BeanShell

(5)断言:BeanShell

(6)监听器:BeanShell

17.2 内置变量和语法规则

17.2.1  log打印日志

17.2.2  vars表示:JmeterVariables,操作Jmeter变量

(1)用户定义的变量

(2)正则表达式提取的变量、JSON提取器提取的变量

【BeanShell里面   获取变量】

BeanShell里面     设置变量】必须在一个线程组里面使用。

18、Jmeter执行数据库操作(Jmeter直连数据库)

1、准备数据库驱动包:Jmeter直连数据库,jar包下载-CSDN博客

2、放到jmeter里面的 lib/ ext 目录里面

3、新建 JDBC connection (详细见:day11 性能测试(4)——Jmeter使用(黑马的完结,课程不全)直连数据库+逻辑控制器+定时器-CSDN博客)

4、新建 JDBC request

18.1 案例:使用jemter从数据库中获取用户名和密码,放入登录接口里面。!!!!!

19、Jmeter非GUI(界面)方式运行


面试题,下面的面试题,是在视频课里面,老师提到的,说有的面试可能会被问到这些细节。有时间我再整理。

面1:Git和SVN的区别:

主要有以下几个方面:

(1)版本控制方式:

git是分布式版本控制系统。每个开发者的计算机上都有一个项目的完整副本,包含所有分支和版本历史。开发者可以在本地进行多数操作,如提交、创建分支和合并分支等,不依赖网络连接。

②svn是集中式版本控制系统。所有的历史版本都保存在中央服务器上,开发者需要依赖中央服务器来获取历史版本信息。

(2)数据存储方式:

git存储每个文件的内容和变更记录,优化存储且克隆时通过比较快。它使用SHA-1哈希算法确保代码完整性。

svn按照原始文件存储,体积较大,且所有资源控制在.svn中。

(3)适用场景

git更适合需要高灵活性和快速迭代的项目,尤其是处理大型仓库或大量历史记录时更为高效。

svn适用于小型项目或团队。

面2:详细分析 请求头、请求行、请求体 里面各个字段的含义和内容。

面3:查看结果树里面,取样器结果的各个参数字段含义。

        

相关文章:

day12 接口测试 ——入门→精通→实战(1)

【没有所谓的运气🍬,只有绝对的努力✊】 目录 1、接口测试分类 1.1 内部接口: 1.2 外部接口: 2、目前接口架构设计 2.1、基于SOAP架构, 2.2、基于RPC架构, 2.3、基于RestFul架构, 2.3.1…...

伏羲0.07(文生图)

为了使0.06代码能够有效运行并输出项目目录及所有文件,我们在代码中添加一些额外的功能。 项目目录结构 项目目录结构如下: text_to_image_project/ │ ├── config.yaml ├── data/ │ ├── train_data.csv │ └── test_data.txt ├── mod…...

scala的泛型特质的应用场景

//泛型特质的应用场景 //作比较找出最大值 //定义一个函数,用来求List元素中的最大值参考代码:object Test4 {def getMax[T](list:List[T])(implicit ev:T > Ordered[T]): T {list.reduce((a:T,b:T)> if(a>b) a else b)}def main(args: Array…...

Win10环境vscode+latex+中文快速配置

安装vscodelatex workshop 配置: {"liveServer.settings.donotVerifyTags": true,"liveServer.settings.donotShowInfoMsg": true,"explorer.confirmDelete": false,"files.autoSave": "afterDelay","exp…...

【vue2】el-select,虚拟滚动(vue-virtual-scroller)

需求背景​​​​​​ vue2+element-ui项目中,当el-select中数据量较大时(超出5000个dom节点),会导致页面加载和渲染卡顿、el-select下拉列表延迟展开。 在现在的el-select的基础上使用分页或者虚拟列表的形式去处理大量的下拉菜单,可以保证页面的正常渲染及el-select的…...

【ETCD】[源码阅读]深度解析 EtcdServer 的 processInternalRaftRequestOnce 方法

在分布式系统中,etcd 的一致性与高效性得益于其强大的 Raft 协议模块。而 processInternalRaftRequestOnce 是 etcd 服务器处理内部 Raft 请求的核心方法之一。本文将从源码角度解析这个方法的逻辑流程,帮助读者更好地理解 etcd 的内部实现。 方法源码 …...

【RabbitMQ】RabbitMQ中核心概念交换机(Exchange)、队列(Queue)和路由键(Routing Key)等详细介绍

博主介绍:✌全网粉丝21W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

【AI知识】过拟合、欠拟合和正则化

一句话总结: 过拟合和欠拟合是机器学习中的两个相对的概念,正则化是用于解决过拟合的方法。 1. 欠拟合: 指模型在训练数据上表现不佳,不能充分捕捉数据的潜在规律,导致在训练集和测试集上的误差都很高。欠拟合意味着模…...

计算机毕设-基于springboot的航空散货调度系统的设计与实现(附源码+lw+ppt+开题报告)

博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…...

视图、转发与重定向、静态资源处理

目录 视图 默认视图 视图机制原理 自定义视图 请求转发与重定向 静态资源处理 视图 每个视图解析器都实现了 Ordered 接口并开放出一个 order 属性 可以通过 order 属性指定解析器的优先顺序,order 越小优先级越高 默认是最低优先级,Integer.MAX_…...

优选算法——分治(快排)

1. 颜色分类 题目链接:75. 颜色分类 - 力扣(LeetCode) 题目展示: 题目分析:本题其实就要将数组最终分成3块儿,这也是后面快排的优化思路,具体大家来看下图。 这里我们上来先定义了3个指针&…...

【Linux系统】文件系统

Windows 和 Linux 的文件系统: windows:NTFS —> NTFS:磁盘大于目录:目录是磁盘的一部分。ubuntu :EXT4 —> EXT4: 目录大于磁盘:磁盘是目录的一部分。 Windows文件系统的特点 基于分区的文件系统: Windows…...

javaweb的基础

文章的简介: 页面的展示(HTML)页面的修改、绑定、弹窗(js的dom、bom等)页面的请求(Ajax) 1、在HTML中用标签和css样式实现了浏览器页面。 2、用JS实现页面内容(图片,复选框、文本颜色内容)的修改和弹框&…...

家里养几条金鱼比较好?

金鱼,作为备受喜爱的家庭水族宠物,其饲养数量一直是众多养鱼爱好者关注的焦点。究竟养几条金鱼最为适宜,实则需要综合考量多方面因素,方能达到美观、健康与和谐的理想养鱼境界。 从风水文化的视角来看,金鱼数量有着诸…...

写作词汇积累:差池、一体两面、切实可行极简理解

差池 【差池】可以是名词,是指意外的事或错误。 【差池】也可以是形容词,是指参差不齐、差劲或不行。 1. 由于操作不当,导致这次实验出现了【差池】,我们需要重新分析原因并调整方案。(名词,表示意外的事…...

移远EC200A-CN的OPENCPU使用GO开发嵌入式程序TBOX

演示地址: http://134.175.123.194:8811 admin admin 演示视频: https://www.bilibili.com/video/BV196q2YQEDP 主要功能 WatchDog 1. 守护进程 2. OTA远程升级 TBOX 1. 数据采集、数据可视化、数据上报(内置Modbus TCP/RTU/ASCII,GPS协…...

LEED绿色建筑认证最新消息

关于LEED绿色建筑认证的最新消息,可以从以下几个方面进行概述: 一、认证体系更新与发展 LEED认证体系不断更新和完善,以更好地适应全球绿色建筑的发展趋势。例如,LEED v4能源更新已通过投票,并于2024年3月1日全面启用…...

SpringBoot中集成常见邮箱中容易出现的问题

本来也没打算想写得。不过也是遇到一些坑&#xff0c;就记录一下吧&#xff0c;也折腾了小半天 1.maven配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency>2…...

webstorm开发uniapp(从安装到项目运行)

1、下载uniapp插件 下载连接&#xff1a;Uniapp Tool - IntelliJ IDEs Plugin | Marketplace &#xff08;结合自己的webstorm版本下载&#xff0c;不然解析不了&#xff09; 将下载到的zip文件防在webstorm安装路径下&#xff0c;本文的地址为&#xff1a; 2、安装uniapp插…...

C# 探险之旅:第七节 - 条件判断(三元判断符):? : 的奇妙冒险

嘿&#xff0c;勇敢的探险家们&#xff01;欢迎来到 C# 编程世界的奇妙之旅的第七节。今天&#xff0c;我们要探索的是一个神秘而强大的宝藏——三元判断符 ? :。别怕&#xff0c;它听起来复杂&#xff0c;但实际上比找宝藏还简单&#xff01; 场景设定&#xff1a;宝藏的选择…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...