【测试】接口测试

长期更新好文,建议关注收藏!

目录

  • 接口规范
  • 接口测试
    • 用例设计
    • postman
    • Requests

复习HTTP超文本传输协议
复习cookie+session

  • 实现方式
    1.工具 如postman ,JMeter(后者功能更全)
    2.代码 python+requests / java+httpclient【高级】

接口规范

  • 传统接口
    在这里插入图片描述
  • RESTful
    representational state transfer
    在这里插入图片描述
    特点:面向资源,URL唯一
  1. 通过URL定位资源
/users #所有用户
/users/001 #id==001的用户
  1. 通过HTTP方法对资源CURD(增删改查 create retrieve update delete)
  2. 利用HTTP状态码返回状态信息

接口测试

  • **流程:**需求分析->接口文档解析->设计测试用例->脚本开发->执行和缺陷跟踪->生成测试报告->接口自动化持续集成(执行之类的这个事也管理起来,按规定时间自动做)
  • 接口自动化测试框架
    api/:存储接口对象层
    scripts/:存储测试脚本层(测试类、测试方法)
    data/: .json数据文件
    report/:存储生成的html测试报告
    common/:存储通用的工具方法
    config.py:存储项目的配置信息(全局变量)
    run_suite.py:组装测试用例、生成测试报告的代码

用例设计

编号用例名称模块优先级前置条件接口名称请求方法URL请求头请求数据预期结果实际结果
  • 功能测试
    单接口+业务功能

    • 单接口
      在这里插入图片描述
      1.正向测试
      必填参数组合P0、必填+非必填组合P3、全部参数组合P1
      2.反向测试
      功能异常P1(覆盖反向需求,如登陆失败)、数据异常P2(空、类型不符、长度不符)、参数异常P3(多参、少参、无参、错参)
      有些可能会出现抓包后修改成多参再发送的情况,所以多参也是不可忽略的
    • 业务场景
      针对业务操作步骤分析,尽可能用最少的用例覆盖最多的接口,一般覆盖正向测试即可。
      在这里插入图片描述
  • 性能测试
    响应时长+错误率+吞吐量+服务器资源使用率
    错误率是指服务器运行出错的概率。
    吞吐量:单位时间内服务器处理请求的数量。
    服务器资源使用率:cpu,内存,网络,磁盘等硬件资源占用率。

  • 安全测试
    敏感数据加密+SQL注入+其他,如必须登陆才能查看数据
    在这里插入图片描述

postman

在这里插入图片描述
在这里插入图片描述
下方图片同理,按照JSON格式解析
在这里插入图片描述
之后有许多高级用法。

  • 断言 javascript编写
    1.响应状态码
    2.包含某字符串
    3.JSON数据
    选择Tests
    在这里插入图片描述
    在这里插入图片描述
    或者最新版本
    在这里插入图片描述
/*
pm postman实例
test(param1,param2) 测试方法
param1 显示提示
param2 匿名函数调用
*/
pm.test("Status code is 200", function () {pm.response.to.have.status(200);
});
pm.test("Body matches string", function () {pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
pm.test("Your test name", function () {var jsonData = pm.response.json();pm.expect(jsonData.success).to.eql(True);//这个value指的是键值对里的值//指定key的值为success
});
  • 工作原理
    在这里插入图片描述
  • 关联
    接口之间有依赖就可以使用关联。
    在这里插入图片描述
    当A从容器(有两种,全局或环境)中取到数据后,发送请求。
  1. 全局变量
  2. 环境变量:需要单独创建环境
    在这里插入图片描述在这里插入图片描述点击眼睛查看全局/环境变量
    在这里插入图片描述
    被测接口A引用变量
    在这里插入图片描述
//在tests中操作
var jsonData=pm.response.json()
pm.globals.set("全局变量key",全局变量value) //使用全局变量做容器 
pm.environment.set("环境变量key",环境变量value)//环境变量做容器
{{全局变量名}} || {{环境变量名}}
//demo1
var jsonData=pm.response.json()
var city=jsonData.weatherinfo.city
pm.globals.set("glb_city",city)//key,value
  • 参数化
    测试数据保存在数据文件,引用数据文件实现脚本迭代调用
    • csv
      逗号分隔,不能测试bool类型,postman读取后全部转为字符串类型,不能存储复杂类型(列表字典等),不能实现参数测试(多参少参无参等)
      在这里插入图片描述
    • json
      相同的数据量,json文件重复部分太多。

导入数据
runner->select file
在这里插入图片描述
读取数据

  1. 在请求参数中使用{{data}}
  2. 在Tests中使用data.key
//url:https://niupi.666.cn/phonearea.php?number={{mobile}}
//mobile取自文件中的mobile
//此时不能通过点击按钮send,需要进入runner选择文件->run
pm.test("Your test name", function () {var jsonData = pm.response.json();pm.expect(jsonData.data.sp).to.eql(data.sp); //后面这个data.sp指文件中的.sp
});
  • 批量执行多个用例,点击collection->run
    这样可以按业务流程顺序从上到下顺序执行一条龙
    在这里插入图片描述

  • 调试
    顶部导航栏view->show postman console
    可以查看到记录log
    在这里插入图片描述

  • 生成测试报告
    postman本身是不能生成的,需要安装插件newman

安装
前提安装了nodejs
npm install -g newman
newman -v
npm install -g newman-reporter-htmlextra

** 注意:测试用例中如果包含环境使用,则需要导出环境文件**
导出用例:右键collection->export
导入用例:点击import按钮
导出环境/全局变量:点击environment->三个点按钮->export
导入环境/全局变量:同样是那个import按钮 注意切换到environment下
newman-reporter-htmlextra官方文档

#注意是htmlextra 不是html 多年之前已经停止维护了
newman run 测试集文件 -e 环境变量文件 -d 测试数据文件 -r htmlextra --reporter-htmlextra-export report.html
#run xx.json 执行测试集文件
#-r 生成测试报告类型
#--reporter-html-export path存放路径
# -d -e是非必需的
  • 添加文件夹
    根据项目结构,collection里可以分成多个folder,右键collection->add folder
    collection>folder>request

Requests

首先要安装pymysql + requests库,requests库的作用是发送http请求,是基于urllib的http库。

查验是否安装成功
pip show requests
在这里插入图片描述

resp=requests.method(url='url',params={k:v},headers={k:v},data={k:v},json={k:v},cookies='cookie')#如令牌
#method:get/post/put/delete
#params就是url?后面的参数 查询参数
#json json格式的请求体 和data表单格式的只能二选一
print(resp.text)
print(resp.json())

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

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

相关文章

目录 1、常用系统数据类型 1. int或integer 2. tinyint 3. decimal[(p[,s])]或numeric[(p[,s])] 4. char(n) 5. varchar(n|max) 6. datetime 2、T-SQL创建表 3、T-SQL修改表 4、T-SQL表数据的操作 4.1 插入数据 4.2 修改数据 4.3 删除数据 5、删除表 1、常用系统…

【LLM】OpenAI 的DAY12汇总和o3介绍

note o3 体现出的编程和数学能力,不仅达到了 AGI 的门槛,甚至摸到了 ASI(超级人工智能)的边。 Day 1:o1完全版,开场即巅峰 12天发布会的开场即是“炸场级”更新——o1完全版。相比此前的预览版本&#x…

Redis缓存知识点汇总

Redis缓存知识点汇总 请先思考如下问题 1.Redis的缓存击穿,穿透,雪崩是什么意思?原因和解决方案有哪些? 2.Redis支持宕机数据恢复,他的持久化方式及其原理是什么? 3.如何保证双写一致性,即如何保…

Gitlab17.7+Jenkins2.4.91实现Fastapi/Django项目持续发布版本详细操作(亲测可用)

一、gitlab设置: 1、进入gitlab选择主页在左侧菜单的下面点击管理员按钮。 2、选择左侧菜单的设置,选择网络,在右侧选择出站请求后选择允许来自webhooks和集成对本地网络的请求 3、webhook设置 进入你自己的项目选择左侧菜单的设置&#xff…

仓颉编程笔记1:变量函数定义,常用关键字,实际编写示例

本文就在网页版上体验一下仓颉编程,就先不下载它的SDK了 基本围绕着实际摸索的编程规则来写的 也没心思多看它的文档,写的不太明确,至少我是看的一知半解的 文章提供测试代码讲解、测试效果图: 目录 仓颉编程在线体验网址&…

Linux 文件 I/O 基础

目录 前言 一、文件描述符(File Descriptor) 二、打开文件(open 函数) 三、读取文件(read 函数) 四、写入文件(write 函数) 五、关闭文件(close 函数) …

Vue项目中env文件的作用和配置

在实际项目的开发中,我们一般会经历项目的开发阶段、测试阶段和最终上线阶段,每一个阶段对于项目代码的要求可能都不尽相同,那么我们如何能够游刃有余的在不同阶段下使我们的项目呈现不同的效果,使用不同的功能呢?这里…

20241130 RocketMQ本机安装与SpringBoot整合

目录 一、RocketMQ简介 ???1.1、核心概念 ???1.2、应用场景 ???1.3、架构设计 2、RocketMQ Server安装 3、RocketMQ可视化控制台安装与使用 4、SpringBoot整合RocketMQ实现消息发送和接收? ? ? ? ? 4.1、添加maven依赖 ???4.2、yaml配置 ???4.3、…

“宠物服务的跨平台整合”:多设备宠物服务平台的实现

2.1 SSM框架介绍 本课题程序开发使用到的框架技术,英文名称缩写是SSM,在JavaWeb开发中使用的流行框架有SSH、SSM、SpringMVC等,作为一个课题程序采用SSH框架也可以,SSM框架也可以,SpringMVC也可以。SSH框架是属于重量级…

Word表格另起一页解决办法

Word表格另起一页解决办法 表格设置根据内容自动调整,取消指定高度第1步 第2步

iOS Masonry对包体积的影响

01 Masonry介绍 Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁。Masonry简化了NSLayoutConstraint的使用方式,让我们可以以链式的方式为我们的控件指定约束。 常用接口声明与实现: 使用方式…

抖去推碰一碰系统技术源码/open SDK转发技术开发

抖去推碰一碰系统技术源码/open SDK转发技术开发 碰一碰智能系统#碰碰卡系统#碰一碰系统#碰一碰系统技术源头开发 碰碰卡智能营销系统开发是一种集成了人工智能和NFC技术的工具,碰碰卡智能营销系统通过整合数据分析、客户关系管理、自动化营销活动、多渠道整合和个…

JS中的闭包和上下文

变量提升 和 函数提升 这里要提到一个提升的概念,即在JS中,在解析代码之前还有一个预处理的过程,这个过程中会把部分变量和函数声明提前到代码的最顶部, 会在其他所有代码之前执行。虽然当我们按照规范(严格模式或者T…

17_HTML5 Web 存储 --[HTML5 API 学习之旅]

HTML5 Web 存储(Web Storage)是 HTML5 引入的一种在用户浏览器中存储数据的机制。它提供了比传统的 cookies 更加方便和强大的功能,包括更大的存储空间、更好的性能以及更简单的 API。Web 存储主要分为两种类型:localStorage 和 s…

如何在 Ubuntu 22.04 上使用 systemctl 管理 systemd 服务教程

简介 Systemd 是许多现代 Linux 发行版提供核心功能的默认服务管理器,而 systemctl 是用户与 systemd 服务交互的方式。这使得 systemctl 成为 Linux 管理员工具箱中重要的一部分。 在本文中,我们将探讨如何使用 systemctl 在使用 systemd 的系统上执行…

Unity3d UGUI如何优雅的实现Web框架(Vue/Rect)类似数据绑定功能(含源码)

前言 Unity3d的UGUI系统与Web前端开发中常见的数据绑定和属性绑定机制有所不同。UGUI是一个相对简单和基础的UI系统,并不内置像Web前端(例如 Vue.js或React中)那样的双向数据绑定或自动更新UI的机制。UGUI是一种比较传统的 UI 系统&#xff…

影刀进阶应用 | 知乎发布想法

文章目录 影刀进阶应用 | 知乎发布想法一、流程流程解释: 二、单条想法发布2.1 素材生产2.2 **进入发布流程**2.3 **输入文本**2.4 插入图片2.5 发布查看 三、批量发布 影刀进阶应用 | 知乎发布想法 一、流程 流程解释: 素材生产 :用AI生成待…

Win Server远程提示密码到期

背景 由于安全问题,取消了堡垒机直接托管资产的模式,需要用户通过堡垒机先登录操作机,然后通过操作机运维对应服务器 问题现象 调整运维模式后,发现原来堡垒机直接运维服务器时候,用户密码到期,可以要求…

GXUOJ-算法-第二次作业

1.矩阵连&#xff08;链&#xff09;乘 问题描述 GXUOJ | 矩阵连乘 代码解答 #include<bits/stdc.h> using namespace std;const int N50; int m[N][N]; int p[N]; int n;int main(){cin>>n;//m[i][j] 存储的是从第 i 个矩阵到第 j 个矩阵这一段矩阵链相乘的最小…

在线学习平台-项目技术点-前台

报错解决方法 1、P166-尚硅谷_在线教育_Nuxt整合错误_nuxt friendly-errors-CSDN博客 2、P168 3、P170 4、P173 npm remove axios npm install axios0.18.0 1、服务端渲染技术NUXT 1.1服务端渲染SSR 服务端渲染又称SSR (Server Side Render)是在服务端完成页面的内容&…