首页 > 其他分享 >接口自动化

接口自动化

时间:2023-09-25 23:07:49浏览次数:33  
标签:请求 get 接口 响应 result 测试 自动化

接口测试

功能自动化测试:

使用Selrnium、QTP等自动化工具对系统进行测试

缺点:投入产出比低,发现Bug能力弱

单元自动化测试

缺点:难度大、找不到合适的人员、成本高

接口自动化测试

主要测试模块间的调用关系的正确性

接口

  • 接口全称为应用编程接口,简称为API
  • 接口的本质上是程序开发的函数或者方法,完成一定功能的代码集合
  • 接口自动化_服务器

接口的类型

  • 接口是指外部系统与内部系统之间以及各个子系统之间的交互点
  • 包含外部接口、内部接口、
  • 内部接口又分为上层服务与下层服务接口、同级接口
  • 常用接口为HTTP协议接口

接口测试的含义

  • 对接口的功能、性能、安全性等方面进行验证的一种测试类型
  • 接口功能测试主要用于验证接口是否正确实现或处理需要的各种业务,将不同的数据传递给同一个接口,判断各个返回值是否正确

为什么进行接口测试

  • 前后端分离

为什么要做接口测试?

·接口自动化测试维护成本比UI自动化维护成本更低
	·接口测试相对于更容易实现自动化测试持续集成
	·减少回归测试人力和时间成本
	·缩短测试周期
	·满足后端快速发版的需求

接口测试能做什么?

自动准备测试数据(数据初始化)
自动执行测试用例
自动验证接口返回的结果是否正确
自动验证数据库数据的准确性
自动生成测试报告

接口测试的方法

  • 自动化测试初级:测试工具,例如Postman、JMeter、Fiddler、Charles等工具使用
  • 自动化测试高级:自动化测试脚本,Python、Requests库、pytest/unittest、pandas、pymysql等

接口自动化测试的含义

  • 通过编写脚本实现接口测试

接口的优势

·规范性

定义接口的时候就是在定义规范,定义接口文档(编写接口文档就是在编写规范)

·扩展性

函数编程

接口测试本质

测试人员借助工具模拟客户端向服务器发送请求,服务器接受请求,对相应的请求数据作出处理并向客户端返回结果

,工具模拟客户端接收返回结果,然后测试人员检查返回结果是否正确

接口的组成要素

接口地址

 URL叫做资源统一定位器、表示一个完整的网址或接口地址

  协议://服务器的IP地址或域名:端口号/项目名称/接口名称?参数名1=参数值1&参数名2=参数值2

 URL叫统一资源标识符也成为接口路径,用来表示网址或接口中具体的位置或名称,是URL一部分

  /项目名称/接口名称

面试题?http与https的区别???

1. 安全性不同2. 响应速度4. 消资源5. 展示方式6. 费用不同
  http和https采用两种完全不同的连接方式,前者采用的是80端口,后者则是443端口。
  https是构建在SSL之上的http协议,所以https会消耗更多的服务器资源

自动化测试能做什么

  • 自动准备初始化数据
  • 自动执行测试用例
  • 自动验证接口返回结果的正确性
  • 自动验证数据库数据的正确性
  • 自动生成测试报告

接口测试的步骤

  • 分析需求
  • 编写测试用例
  • 部署接口测试用例
  • 制作测试脚本(使用工具/编码)
  • 执行测试脚本
  • 记录测试结果
  • 生成测试报告

服务器与客户端

  • 服务器:被测软件或者被测接口程序
  • 客户端:个人计算机,一般会安装Postman、Fiddler、Charles、APIfox、JMeter

请求与响应

  • 客户端要使用服务器上的某个软件或功能,需要把处理的数据发送给服务器,服务器上的接口程序会处理数据,然后把处理的结果发送给客户端
  • 客户端发送数据给服务器的过程叫做请求
  • 服务器把结果发送给客户端的过程叫做响应

请求的组成有哪些

请求头 网页搜索(selenium)
  • 编码方式、语言、Cookie、地址、重定向地址、设备信息、浏览器信息、操作系统、系统位数
请求体
  • 也叫请求正文、对于POST方法来讲、要发送给服务器的数据存放在请求体中

响应的组成

响应头
  • 主要是指相应的附加信息,比如响应类型、响应状态码、cookie、session等
响应体
  • 也叫响应正文、相当于接口返回值
  • 是测试时,最关心的内容

Web接口的组成要素

接口地址
协议://服务器IP地址或域名:端口号/项目名/功能名
协议://服务器IP地址或域名:端口号/项目名/功能名?参数名=参数值1&参数名2=参数值2
协议
  • http端口号80
  • https端口号443
  • https是基于SSL的超文本传输协议,比http更加安全
域名
端口号
  • 一台服务器会提供很多服务,用不同的端口号来区分不同的应用程序或接口
  • 端口号是可以修改的
  • 用于分割接口地址和参数的标志
  • 一般带有问号的请求是GET请求方法
&
  • 用于连接多个参数,固定写法
  • URL叫做统一资源定位器,表示一个完整的网址或接口地址
  • URI叫做统一资源标识符,一般用来表示网址或接口中具体位置或名称,是URL的一部分
请求方法
  • 表示如何发送和处理数据
  • 常用的请求方法
  • 接口自动化_服务器_02
  • 注意测试时,使用哪种方法要根据接口文档
请求参数
  • 需要接口程序处理的数据
  • 参数名、参数类型、参数长度、参数约束、哪些必填、哪些选填
响应头
  • 响应状态码、简称为状态码
  • 200 成功响应
  • 301 永久重定向
  • 302 临时重定向
  • 400 域名不存在或请求错误(参数错误)
  • 401 需要授权
  • 403 客户端错误
  • 404 接口地址错误
  • 500 服务器错误
  • 接口自动化_数据_03
响应类型
  • text/html/网页版文本格式
  • JSON类似于python的字典
  • xml
响应正文
  • 接口返回值中最核心的部分
  • 最终测试是否通过都要检查响应正文
数据库
  • 如果数据库涉及到写数据库,必须要验库

面试题:get与post的区别?

  • get请求可以被缓存,post不可以
  • get请求会保存在浏览器的历史记录中,post不会
  • get请求可以被收藏为书签,post不会
  • get请求时,发送数据的长度一般都有限制(与浏览器地址栏有关),post没有限制
  • get发送的数据一般会在接口地址url中,而post发送的数据放在请求体中
  • post方法相对于get方法更加安全
  • get请求一般用于获取数据,post请求主要用于提交数据
  • <!--get请求属于发送明文,post属于密文-->
    <!--get请求相比于post请求不安全-->

练习demo1

接口文档

接口功能:根据用户id查询用户名

接口地址:http://39.104.25.201/apitest/one-param/

请求方法:Get

响应类型:text/html

响应文本包含:请使用ID参数进行访问

题目要求:查看响应状态码、查看响应体、响应类型

#导入requests库
import requests
#定义变量url存储接口地址
url = ‘http://39.104.25.201/apitest/one-param/’
#调用requests库中的get方法,访问接口,获取响应,将响应结果存储在result变量中
result = requests.get(url=url)
#获取响应状态码
print(f‘响应状态码:{result.ststus_code}’)
print(f‘响应体:{result.text}’)
print(f‘响应类型:{result.headers["Content-Type"]}’)

接口文档

接口地址:http://www.httpbin.org/get

请求方法:Get

请求参数:无

响应类型:JSOn

预期包含json字符串

题目要求:使用text和json查看响应正文,响应类型

#导入requests库
import requests
#定义变量url存储接口地址
url = ‘http://www.httpbin.org/get’
#调用requests库中的get方法发送请求,访问接口地址,获取响应结果存储变量result
result = requests.get(url)
#根据要求查看响应结果
print(f‘响应文本 text:{result.txt}’)
print(f‘响应文本 json:{result.json()}’)
print(f‘响应类型 :{result.headers0["content-type"]}’)

demo3

接口文档

接口功能:根据用户id、username查询用户注册时间

接口地址:http://服务器的ip地址/apitest/multi-params/

请求方法:Get

参数:id(用户编号),username(用户名)

id=1,username=admin

id=2,username=Dumb

id=3,username=Superman

数据库表:wa_test.users

响应类型:JSON

预期返回:{“登录名”:“admin”,“注册时间”:“2020-07-15 15:30:47”}或{“Message”:“提示用户信息不存在”}

查看响应结果:响应正文、响应类型、实际请求URL、请求头、请求体

#导入requests库
import requests
#定义变量存储接口地址
url = 'http://39.104.25.201/apitest/one-param/'
#定义变量储存数据
params = {"id:1,"username":"admin"}
#调用requests库中get方法,发送请求,获得响应,将获取内容存储变量中
result = requests.get(url=url,params=params)
#查看响应结果:响应正文、响应类型、实际请求URL、请求头、请求体
print(f'响应正文text:{result.text}')
print(f'响应类型:{result.headers["content-type"]}')
print(f'实际请求URL:{result.request.url}')
print(f'请求头:{result.request.headers}')
print(f'请求体:{result.reuest.body}')
	·带参数的Get请求的实际URL与要求的地址不同
	·Get的参数放在URL地址之中,以?间隔接口地址与参数,多个参数以&间隔
	·get方法没有请求体












标签:请求,get,接口,响应,result,测试,自动化
From: https://blog.51cto.com/u_16239022/7599518

相关文章

  • # yyds干货盘点 # 盘点一个使用Python自动化处理GPS、北斗经纬度数据实战(下篇)
    大家好,我是皮皮。一、前言上一篇文章我们使用了Python来实现数据的导入和分列处理,最终可以得到符合预期的结果,不过还可以继续深挖优化下,这一篇文章一起来看看吧。优化的背景如下图所示:二、实现过程这里【瑜亮老师】继续给了一个优化指导,如下图所示:并且给出的代码如下:withopen("./G......
  • 盘点一个使用Python自动化处理GPS、北斗经纬度数据实战(下篇)
    大家好,我是皮皮。一、前言上一篇文章我们使用了Python来实现数据的导入和分列处理,最终可以得到符合预期的结果,不过还可以继续深挖优化下,这一篇文章一起来看看吧。优化的背景如下图所示:二、实现过程这里【瑜亮老师】继续给了一个优化指导,如下图所示:并且给出的代码如下:with......
  • Spring Boot RestController接口如何输出到终端
    背景公司项目的批处理微服务,一般是在晚上固定时段通过定时任务执行,但为了预防执行失败,我们定义了对应的应急接口,必要时可以通过运维在终端中进行curl操作。然而,部分任务耗时较长,curl命令执行后长时间没有输出,如果不查看日志,无法知道系统当前的状态,因此有必要研究一下如何在curl命......
  • 华为datacom-HCIA​ 华为datacom-HCIA 1​ 1. 第四弹 5​ 1.1. OSPF认证 5​ 1.1.1.
    华为datacom-HCIA华为datacom-HCIA11.第四弹51.1.OSPF认证51.1.1.基于接口认证51.1.1.1.接口认证更优先61.1.1.2.[R2]interfaceg0/0/161.1.1.3.[R2-g0/0/1]ospfauthentication-modesimplehuawei61.1.1.3.1.明文认证61.1.1.4.[R2-g0/0/1]ospfauthentication-mo......
  • Spring Security 基于 JWT Token 的接口安全控制
    现在的网站开发,基本上都是前后端分离,后端提供api接口并进行权限控制。使用SpringSecurity框架可以大大简化权限控制的代码实现。对于后端接口而言,为了能够实现多节点负载均衡部署,更好的方案是不再使用Session了,绝大多数情况下,通过提交JWTToken来进行身份认证。本篇博客......
  • 亚信科技AntDB数据库与优逸派科技基于人工智能的自动化运维管理平台产品完成兼容性互
    日前,亚信科技AntDB数据库与北京优逸派科技有限公司基于人工智能的自动化运维管理平台产品完成兼容互认。经过双方团队的严格测试,AntDB数据库与基于人工智能的自动化运维管理平台产品完全兼容,整体运行稳定高效。图1:亚信科技AntDB数据库与优逸派科技完成适配随着我国数字经济建设......
  • 【遥遥领先】Eolink IDEA 插件:零代码入侵,自动生成接口
    省流版:Eolink有IDEA插件吗?有,而且遥遥领先!我们在一年半之前就发布了,而且功能更丰富!IDEA插件市场搜索“EolinkApikit”即可安装使用。......
  • C#中实现校验是否包含中文与http接口地址中解析ip和端口号
    场景Winform/CSharp中实现对Http接口地址、IP地址字符串格式/合法性校验:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/129616161在上面的基础上对某http接口地址(ip加端口号,示例http://127.0.0.1:9092)进行校验是否包含中文以及解析该地址获取ip和端口号博客:h......
  • Rust+appium App自动化测试demo
    1.新建工程打开RustCover,新建工程如下:修改Cargo.toml文件如下:[package]name="test_demo"version="0.1.0"edition="2021"#Seemorekeysandtheirdefinitionsathttps://doc.rust-lang.org/cargo/reference/manifest.html[dependencies......
  • Spring扩展接口(1):ApplicationContextInitializer
    在此系列文章中,我总结了Spring扩展接口,以及各个扩展点的使用场景。并整理出一个bean在spring中从被加载到初始化到销毁的所有可扩展点的顺序调用图。这样,我们也可以看到bean是如何一步步加载到spring容器中的。ApplicationContextInitializerorg.springframework.context.App......