python API自动化(接口测试基础与原理)

1.接口测试概念及应用

                什么是接口

 接口是前后端沟通的桥梁,是数据传输的通道,包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口,同级接口

                外部接口:比如你要从 别的网站 或 服务器 上获取 资源或信息 ,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。比如说:支付接口,沙箱,Mock.....
                

                 内部接口方法与方法之间,模块与模块之间的交互,程序内部抛出的接口。比如:bbs系统,有登陆模块,有发帖模块等等,那你要发帖就必须先登陆,那么这两个模块就有交互,我们在测试的时候都用通过工具才能调试和测试

                        

        如图所示,我们提供了账号密码,通过http协议接口访问服务器,服务器再通过接口访问资料数据库和代码进行校验 ,校验的接口通过服务器返还给客户端进行响应

         什么是接口测试:接口测试分为两种手段:手工测试、自动化测试

            接口测试是对系统或组件之间的接口进行测试,主要校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。而接口自动化测试是让程序代替人为对接口项目进行自动化验证测试的过程

                手工测试:页面--登录功能时候--对登录接口测试

                自动化测试:自动、无人值守--知识点:CICD--持续集成

                我们进行测试应该借助某些工具去完成:postman、jmeter 、代码等

                接口测试的意义                             

               1.项目成本、时间成本---更低

                2.更早进入测试环节---效率

                3.接口(不会频繁变动)--- 节约成本

                4.跳过前端的校验(正则),直接访问接口。(确定前端和后端同时做校验)---安全着想

                

2.HTTP请求的核心概念及原理

重点HTTP的请求头、请求体、响应码解析

           核心请求四要素:

                1.接口URL:IP地址+端口+路径

                 2. 接口请求参数:用户名 密码

               3. 接口请求方法:get post delete put...

                 4. 接口响应报文

                缩略的词:

                        URL: 统一资源(图片、网页、视频...)定位符(地方)--- 地址 :www.baidu.com

                        HTML: 超文本标记语言,特点:成对出现:内容--- 前端常用

                        HTTP: 常用的协议 --- 超文本传输协议

                        

                        URL详解:

                        协议:客户端和服务器通讯的标准,http、https、ssh等

                        host: IP或域名,比如上面的localhost(127.0.0.1)- 本机

                        www.baidu.com (14.119.104.254) --- 背后都是对应的ip--相当于是对应的网络的                          地址 ---某台电脑程序:mysql :3306 、tomcat:8080、....(域名化方便记忆)

                        端口号:协议默认的端口号是可以省略的(http:默认端口80、 https:默认端口                            443、ssh:默认端口22)

                        资源路径:资源存放的位置,资源可以是各种超文本信息,如音频、视频等,如                             上:/index.php

                         参数:如 ?m=Home&c=Goods&a=goodsInfo&id=46 ;格式:用?与URL的主体部                           分分开,参数的格式 参数名=参数值 ,有多个参数时用&拼接即可

                  HTTP详解:

                        HTTP: 常用的协议 --- 超文本传输协议:请求--- 响应协议 ----

                        怎么通信的呢?TCP/IP协议

                        HTTP包含哪些请求:请求行、请求头、请求体                  

                    请求行:请求方法、请求地址(URL)、协议版本

                    请求头:很多字段、看不懂,系统固定的。告诉服务器我需要什么样的资源、描述                       对应的请求。

                  注意:cookie(鉴权)、content-Type(告诉我们传输数据的格式是什么,要和请求体                    当中的数据格式一一对应)

                        Content-Type取值与body传值方式对应关系:

                        

                     请求体:请求参数--- 后面再说--- 这个接口的对应的参数:get请求一般是在url当                            中;post一般在body当中

HTTP的请求方法

    

                        

     响应的详解: 

 响应行、响应头、响应正文 ---通过对应的请求得到对应的响应数据 

        响应行: 协议版本、状态码、状态信息     

        常见的状态码有哪些?

        1xx:指示信息--表示请求已接收,继续处理

        2xx:成功--表示请求已被成功接收、理解、接受

        3xx:重定向--要完成请求必须进行更进一步的操作

        4xx:客户端错误--请求有语法错误或请求无法实现

        5xx:服务器端错误--服务器未能实现合法的请求

        常见状态码:     

  • 200 OK//客户端请求成功
  • 400 Bad Request//客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized//请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
  • 403 Forbidden//服务器收到请求,但是拒绝提供服务
  • 404 Not Found//请求资源不存在,eg:输入了错误的URL
  • 500 Internal Server Error//服务器发生不可预期的错误
  • 503 Server Unavailable//服务器当前不能处理客户端的请求,一段时间后可能恢复正常

        响应头

告诉客户端我返回的一些数据的情况,比如大小、时间、返回数据格式...

        响应正文

具体的响应数据得到以后,我们对应的前端会进行渲染,得到用户能够看明白的               数据格式及样式等等。

5.接口测试

                接口测试流程

                
 

        我们来看一个注册接口的用例

          我们先来看看文档

        

        接口URL : 协议+域名+路径 + 公共参数

http://shop-xo.hctestedu.com?s=api/user/reg&application=app&application_client_type=weixin

        请求方法:POST

          请求参数:需要和请求头的content-type 一 一 对应

           正常情况:          

  1. 有些接口文档会告诉你这个字段是什么请求类型---直接选择即可
  2. 一般用form表单提交 (字段相对比较少),【默认】
  3. 提交的有对应的图片:from-data
  4. 字段非常多,或者它的数据{XXXX:XXXX}:raw-json

        响应数据:            

             --- 期望结果:

           1. 输入正确的数据:注册成功

             2. 输入已经存在的数据:账号已存在

          .... --- 测试用例设计 (请求参数不同数据的组合)

        执行CASE---工具JMeter

                

  • 测试计划:测试起点,所有组件的容器
  • 线程组:代表一定数量的用户
  • 取样器:向服务器发送请求的最小单元
  • 逻辑控制器:结合取样器实现一些复杂的逻辑
  • 前置处理器:在请求之前的工作
  • 后置处理器:在请求之后的工作
  • 断言:判断请求是否成功
  • 定时器:负责请求之间的延迟间隔。常用的有固定,高斯,随机
  • 配置元件:配置信息
  • 监听器:收集结果

我们填入对应的值

        添加监听器收集结果

        

响应=== 实际结果 --- 进行获取:msg字段 ---json提取器

测试用例===期望结果

我们可以通过添加断言来判断结果是否符合预期

        

        

                        

请求默认面板

        

        可以把不会经常修改的参数放入其中

        

环境变量 --- 这种不会经常改动的东西---就得这么去做

设置变量 --- 用户定义的变量 --- 引用变量:${变量名}

我们设置了环境变量之后我们http里的请求就如下所示

        

数据驱动(DDT)--把接口数据提取出来     

  1. 数据准备阶段
  2. 利用csv进行引用

        我们再加入循环控制器 循环我们的用例数

        再修改断言

接口测试当中,怎么解决是谁的问题?--判别是谁就是有个通用的:token(软件当中的身份证号)

        

  1. 登录 --- 登录成功之后会在响应数据或者请求头当中有:ebc3bf29094fde4a0752dcc586b03f1d
  2. 通过登录用户去加入购物车 :请求数据会需要加上:ebc3bf29094fde4a0752dcc586b03f1d (header)--- url

接口关联

【接口关联】:通过登录用户去加入购物车

  1. 登录 --- 登录成功之后会在响应数据或者请求头当中有:ebc3bf29094fde4a0752dcc586b03f1d
  2. 通过登录用户去加入购物车 :请求数据会需要加上:ebc3bf29094fde4a0752dcc586b03f1d (header)--- url
  3. ...
  4. ...

Jmeter怎么连接数据库

        1.填写如下数据,并且取一个名字

2. 填写请求:需要引用上面的名字,正常写对应的sql --- 会有多个数据:sqlname+ 下标

3. 在测试计划当中必须引用对应的jar包

   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/19490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC框架学习笔记(四):模型数据 以及 视图和视图解析器

1 模型数据处理-数据放入 request 说明&#xff1a;开发中, 控制器/处理器中获取的数据如何放入 request 域&#xff0c;然后在前端(VUE/JSP/...)取出显 示 1.1 方式 1: 通过 HttpServletRequest 放入 request 域 &#xff08;1&#xff09;前端发送请求 <h1>添加主人…

使用dockerfile快速构建一个带ssh的docker镜像

不多说先给代码 FROM ubuntu:22.04 # 基础镜像 可替换为其他镜像 USER root RUN echo root:root |chpasswd RUN apt-get update -y \&& apt-get install -y git wget curl RUN apt-get install -y openssh-server vim && apt clean \&& rm -rf /tmp/…

在SpringBoot项目中实现切面执行链功能

1.定义切面执行链顶级接口 AspectHandler /*** 切面执行链**/ public interface AspectHandler {/*** 设置排除项* param excludes*/default void setExcludes(List<String> excludes) {}/*** 获取排除项* return*/default List<String> getExcludes() {return ne…

事务与并发控制

事务&#xff08;Transaction0&#xff09;&#xff1a;要么全做&#xff0c;要么全不做&#xff1b; 事务ACID&#xff1a;原子性Atomicity&#xff1b;一致性Consistency&#xff1b;隔离性Isolation&#xff1b;持久性Durability&#xff1b; 并发操作问题&#xff1a; 1.…

基于RNN和Transformer的词级语言建模 代码分析 _generate_square_subsequent_mask

基于RNN和Transformer的词级语言建模 代码分析 _generate_square_subsequent_mask flyfish Word-level Language Modeling using RNN and Transformer word_language_model PyTorch 提供的 word_language_model 示例展示了如何使用循环神经网络RNN(GRU或LSTM)和 Transforme…

汽车IVI中控开发入门及进阶(二十二):video decoder视频解码芯片

前言: 视频解码器在许多汽车、专业和消费视频应用中仍有需求。Analog Devices是模拟视频产品领域的行业领导者,提供一系列视频解码器,可将标准(SD,standard definition)和高清(HD,High definition)分辨率的模拟视频高质量转换为MIPI或TTL格式的数字视频数据。典型的应…

【AI大模型】如何让大模型变得更聪明?基于时代背景的思考

【AI大模型】如何让大模型变得更聪明 前言 在以前&#xff0c;AI和大模型实际上界限较为清晰。但是随着人工智能技术的不断发展&#xff0c;基于大规模预训练模型的应用在基于AI人工智能的技术支持和帮助上&#xff0c;多个领域展现出了前所未有的能力。无论是自然语言处理、…

算法刷题笔记 差分矩阵(C++实现)

文章目录 题目前言题目描述解题思路和代码实现 题目前言 这道题是一道差分算法的拓展题型&#xff0c;是算法刷题笔记到目前为止我认为最困难的题目之一。因此&#xff0c;这篇题解博客的过程记录也最为详细&#xff0c;希望能够为你带来帮助。 题目描述 输入一个n行m列的整…

JavaScript的垃圾回收机制

No.内容链接1Openlayers 【入门教程】 - 【源代码示例300】 2Leaflet 【入门教程】 - 【源代码图文示例 150】 3Cesium 【入门教程】 - 【源代码图文示例200】 4MapboxGL【入门教程】 - 【源代码图文示例150】 5前端就业宝典 【面试题详细答案 1000】 文章目录 一、垃圾…

匹配字符串

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 Python提供了re模块&#xff0c;用于实现正则表达式的操作。在实现时&#xff0c;可以使用re模块提供的方法&#xff08;如search()、match()、finda…

深入理解Redis:多种操作方式详解

Redis&#xff08;Remote Dictionary Server&#xff09;是一款高性能的开源键值存储系统&#xff0c;广泛应用于缓存、会话管理、实时分析等领域。它支持多种数据结构&#xff0c;如字符串、哈希、列表、集合和有序集合等&#xff0c;提供了丰富的操作命令。本篇博客将详细介绍…

信息系统项目管理师0603:项目整合管理 — 考点总结(可直接理解记忆)

点击查看专栏目录 文章目录 项目整合管理 — 考点总结(可直接理解记忆) 输入、输出、工具和技术 历年考题直接考输入,输出、工具和技术的有17年11月第34、35,19年5月第34、35,20年11月27、28,21年5月第26,28,21年11月第28,22年5月第25,22年11月第22考题 项目章程是正…

CasaOS玩客云安装全平台高速下载器Gopeed并实现远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

BufferQueue 的工作原理

bufferQueue 是 Android 图形栈中的一个核心组件,它在生产者和消费者之间传递缓冲区(buffer)。它通常用于图形缓冲区管理,特别是在 SurfaceFlinger 和其他图形相关的组件中。理解 BufferQueue 的工作原理对开发高性能图形应用和解决图形渲染问题非常有帮助。 BufferQueue …

基于Python的酒店客房入侵检测系统的设计与实现

基于Python的酒店客房入侵检测系统的设计与实现 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 酒店客房入侵管理界面 结合上文的结构搭建和用户需求&#xff0c;酒店客房入侵检测系统的…

【Unity Shader入门精要 第12章】屏幕后处理效果(一)

1. 原理和过程 屏幕后处理是绑定摄像机的&#xff0c;通过抓取当前摄像机渲染的图像作为 SrcTextrue&#xff0c;然后按需依次调用处理接口&#xff0c;对 SrcTexture 进行处理&#xff0c;最后将处理完成的 DstTexture 显示到屏幕上&#xff0c;整个过程的调度通过 C# 脚本完…

使用 C++ 在当前进程中获取指定模块的基址

C 实现 , 获取指定模块在该进程中的基址 1、流程: 获取进程的所有模块信息–>遍历模块列表 2、实现&#xff1a; // 我自己定义的 typedef struct moudle_date_ {HANDLE mhandle; // 句柄char mname[64]; // 名称char* date; // 数据DWORD mdword; // 基址…

【机器学习】Adaboost: 强化弱学习器的自适应提升方法

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Adaboost: 强化弱学习器的自适应提升方法引言Adaboost基础概念弱学习器与强学习…

存储器容量小才使用SRAM芯片,容量较大时使用DRAM芯片。为什么?

在计算机系统中&#xff0c;存储器容量的选择涉及到多种因素&#xff0c;包括成本、速度和复杂性。SRAM&#xff08;静态随机存取存储器&#xff09;和DRAM&#xff08;动态随机存取存储器&#xff09;是两种常见的内存类型&#xff0c;它们在设计和应用上有显著的不同。以下是…

【蓝桥杯嵌入式】 第六届国赛

目录 题目 配置 注意事项 代码 - 默写大师 EEPROM读写函数 LED驱动函数 ADC采集 上电初始化 LCD 按键 PWM互补输出 全部代码 hardware.c hardware.h control.c control.h main.c 题目 配置 注意事项 复制LCD的工程&#xff0c;先配置资源 --- 勾选完选项一…