【性能测试】接口测试各知识第2篇:学习目标,1. 理解接口的概念【附代码文档】

news2024/10/7 0:52:04

接口测试完整教程(附代码资料)主要内容讲述:接口测试,学习目标学习目标,2. 接口测试课程大纲,3. 接口学完样品,4. 学完课程,学到什么,5. 参考:,1. 理解接口的概念。学习目标,RESTFUL1. 理解接口的概念,2.什么是接口测试,3. 接口测试的基本流程,4. 学习掌握接口测试工具RESTClient、Postman的使用,目标,1. 定义。Jmeter 基本使用流程学习目标,目标,1. 主界面布局,2.Jmeter的基本使用流程,3. 相关概念。Jmeter 八大元件及执行顺序,参数化学习目标,目标,1. 元件作用域及执行顺序,2. 八大可执行元件,目标,目标。Jmeter 从数据库中获取数据,Jmeter 关联目标,目标,为什么要使用Jmeter从数据库中获取数据?,目标,1. 需求,2. 正则表达式提取器。Jmeter断言,Jmeter 集合点目标,目标,1. 断言概述,2. 需求,3. 响应断言,4. Size Assertion(大小断言)。Jmeter 逻辑控制器学习目标,目标,1 为什么要学习逻辑控制器?,2. 什么是逻辑控制器?,3. 常用(控制类)逻辑控制器,4. 常用(分组类)。Jmeter 图形监视器扩展插件下载及使用,项目-学生信息管理系统学习目标,目标,1. 为什么要下载图形监视器扩展插件?,2. 图形监视器扩展插件有什么用?,目标,目标。项目-学生信息管理系统,Jmeter 附件-API文档目标,目标,Queries释义,Queries释义,目标,目标。接口自动化脚本设计,性能脚本设计目标,目标,为什么要设计自动化脚本?,3. 组件配置图,4. 整体效果动态演示,5. 脚本执行含查数据库演示。Jmeter FTP服务器测试,Jmeter Test Fragment(测试片段)目标,目标,1. FTP是什么?,2. FTP有什么用?,3. 如何测试FTP服务器?,目标。

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~


全套教程部分目录:


部分文件图片:

学习目标

1. 理解接口的概念

2.什么是接口测试

3. 接口测试的基本流程

4. 学习掌握接口测试工具RESTClient、Postman的使用

RESTFUL


目标

  • 了解接口常用架构-RESTful架构相关知识

1. 定义

RESTful架构是一种接口设计架构风格,而不是标准,只是提供了一组设计原则

2. 风格

  • [
-    
- 服务器地址:为我们项目服务器IP地址  
- 端口号:为我们服务器内项目访问的指定编号  
- [/项目名称/版本]:可选  
- 资源:互联网-图片、音乐、视频、文本、数据

3. RESTful相关知识(科普)

3.3 HTTP请求方法
  • GET(SELECT):从服务器取出资源(一项或多项)。
  • POST(CREATE):在服务器新建一个资源。
  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
  • DELETE(DELETE):从服务器删除资源。
3.4 响应状态

客户端请求服务求后,服务器响应给客户端的状态码。

3.5 状态码集合汇总
序号状态码动词说明
01200 OK[GET]服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)幂等:无论执行操作多少次,结果都会执行1次结果相同
02201 CREATED[POST/PUT/PATCH]用户新建或修改数据成功
03202 Accepted[*]表示一个请求已经进入后台排队(异步任务)
04204 NO CONTENT[DELETE]用户删除数据成功
05400 INVALID REQUEST[POST/PUT/PATCH]用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的
06401 Unauthorized[*]表示用户没有权限(令牌、用户名、密码错误)
07403 Forbidden[*]表示用户得到授权(与401错误相对),但是访问是被禁止的
08404 NOT FOUND[*]用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的
09406 Not Acceptable[GET]用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)
10410 Gone[GET]用户请求的资源被永久删除,且不会再得到的
11422 Unprocesable entity[POST/PUT/PATCH]当创建一个对象时,发生一个验证错误
**12500 INTERNAL SERVER ERROR[*]服务器发生错误,用户将无法判断发出的请求是否成功**
3.6 对结果进行判断
序号方法预期结果
01GETcollection:代码:200;数据:返回资源对象的列表(数组)
02GETcollection/resource:代码:200;数据:返回单个资源对象
03POSTcollection:代码:200/201;数据:返回新生成的资源对象
04PUTcollection/resource:代码:200/201;数据:返回完整的资源对象
05DELETEcollection/resource:代码:204;数据:返回为空

4. 总结(RESTful)

序号名称
01定义一种软件架构风格设计风格,而不是标准
02RESTful风格[
03请求方法GET(获取资源);POST(新增资源);PUT(更新资源);DELETE(删除资源)
04状态码GET:200;POST:200/201;PUT:200/201;DELETE:204
05[JSON]是一种轻量级的数据交换格式;JSON是已键/值对组合方式,键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值: 1

案例-《学生信息管理》


目标:

  • 验证RESTful风格,加强理解;
  • 通过实践,理解接口测试;

1、背景:

学生信息管理系统中接口采用了标准RESTful架构风格,帮助同学们更深切理解RESTful

2、简介:

学生信息管理系统的功能是收集学生的个人信息,以便向老师提供每个学生在校或毕业生学籍的情况,还可以让学生用自己的学号去查看自己在校期间的表现。

3、环境搭建

  • 1). 安装Python3(3.5以上版本)

  • 2). 搭建图书管理项目环境(安装依赖模块)

  • 在项目当前文件夹下,运行以下命令:

`pip install -r requirements.txt -i

安装依赖包

  • 运行 python run_server.py

runserver

  • RestClient/Postman安装完毕

  • 在浏览器上输入[

4、API接口清单

4.1 API文档由来

api文档

4.2 API文档作用

api文档作用

4.3 API接口清单
一、查询
    1.1学院-查询所有
        请求方法:GET
        请求地址:
    1.2学院-查询指定
        请求方法:GET
        请求地址:
        (注:T02为学院ID;)
    1.3根据指定参数进行学院-List-$dep_id_list的相关查询
        请求方法:GET
        请求地址: 
        (注:$dep_id_list:为参数名称;T01,T02,T03为:学院ID;)

    1.4学院-List-$master_name_list查询
        请求方法:GET
        请求地址:
        (注:$master_name_list:为参数名称;Java-Master,Test-Master为:院长名称;)
    1.5学院-模糊 
        请求方法:GET
        请求地址:
        (注:blur:为开启模糊查询参数1为开启;dep_name:为参数名称;C:学院名称包含字符;)
    1.6学院-组合
        请求方法:GET
        请求地址: is Slogan&master_name=Test-Master&dep_name=Test学院
        (注:dep_name:学院名称;master_name:为院长名称;slogan:学院口号;三个条件可随意组合或单独使用)
二、新增
    2.1学院-新增
        1) 请求方法:POST
        2) 请求地址:
        3) 请求JOSN报文:
        4) 调用传入的json串如下(可新增多条,之间用,隔开):
            {
                "data": [
                        {
                            "dep_id":"T01",
                            "dep_name":"Test学院",
                            "master_name":"Test-Master",
                            "slogan":"Here is Slogan"
                        }
                  ]
            }
       5) 新增成功返回报文:
        {
          "already_exist": {
            "results": [],
            "count": 0
          },
          "create_success": {
            "results": [
              {
                "dep_id": "T02",
                "dep_name": "Java学院",
                "master_name": "Java-Master",
                "slogan": "java"
              }
            ],
            "count": 1
          }
        }
       6) 新增失败id已存在-返回报文:
        {
          "already_exist": {
            "results": [
              {
                "dep_id": "T01",
                "dep_name": "Test学院",
                "master_name": "Test-Master",
                "slogan": "Here is Slogan"
              }
            ],
            "count": 1
          },
          "create_success": {
            "results": [],
            "count": 0
          }
        }
    7) 新增失败json格式错误:
        {
        "status_code": 400,
        "detail": "请求体参数格式错误。"
        }
三、更新
    3.1学院-更新
    1). 请求方法:PUT
    2). 请求地址:
        (注:1:为学院ID)
    3). 请求JOSN报文:
            {
                "data": [
                        {
                            "dep_id": "T03",
                            "dep_name": "C++/学院",
                            "master_name": "C++-Master",
                            "slogan": "Here is Slogan"
                        }
                  ]
            }
    4). 修改成功返回:
        {
            "dep_id": "T03",
            "dep_name": "C++/学院",
            "master_name": "C++-Master",
            "slogan": "Here is Slogan"
        }
四、删除
    4.1学院-删除单个
    请求方法:DELETE
    请求地址:
    (注:10为学院ID)
    4.2学院-删除多个
    请求方法:DELETE
    请求地址:
    (注:$dep_id_list:为参数名称;8,9,11:为学院ID)
注意

RESTClent:插件使用时信息头要设定:Content-Type application/json

restclient

学习目标

  • 了解Jmeter的优缺点
  • 能够搭建Jmeter的测试环境
  • 知道Jmeter的基本使用流程
  • 能够区分组件和元件的区别
  • 掌握Jmeter的基本使用

Jmeter简介

学习目标

  • 了解Jmeter的优缺点

1. Jmeter 概述

JMeter最初是由Apache软件基金会的Stefano Mazzocchi编写和开发的, 所以Jmeter也称为“Apache JMeter”,它是一个开源的,100%基于Java的应用程序,带有图形界面。

Apache JMeter 是 100%纯 java 桌面应用程序,被设计用来测试客户端/服务器结 构的软件(例如 web 应用程序)。它可以用来测试包括基于静态和动态资源程序 的性能,例如静态文件,Java Servlets,Java 对象,数据库,FTP 服务器等等。 JMeter 可以用来在一个服务器、网络或者对象上模拟重负载来测试它的强度或 者分析在不同的负载类型下的全面性能。

另外,JMeter 能够通过让你们用断言创建测试脚本来验证我们的应用程序是否 返回了我们期望的结果,从而帮助我们回归测试我们的程序。为了最大的灵活性, JMeter 允许我们使用正则表达式创建断言。

Jmeter的主要功能有:

1. web自动化测试
2. 接口测试
3. 性能测试
4. 压力测试
5. 通过jdbc进行数据库测试
6. java测试

2. Jmeter的优缺点

优点:

1、开源工具,可扩展性非常好

2、高可扩展性,用户可自定义调试相关模块代码

3、精心简单的GUI设计,小巧灵活

4、完全的可移植性和100%纯java

5、完全swing和轻量组件支持(预编译的HAR使用javax.swing.*)包

6、完全多线程框架,允许通过多个线程并发取样以及单独的线程对不同的功能同时取样

7、支持脚本取样器

缺点:

1、 不支持IP欺骗
2、 使用JMeter无法验证JS程序,也无法验证页面UI,所以要须要和Selenium配合来完成Web2.0应用的测试

2. 了解:JDK、JRE、JVM

2.1 JDK
JDK概念:java开发工具包,程序员使用。包含JRE和JVM。
2.2 JRE
JRE(java runtime environment):JAVA程序运行环境,包含JVM和JVM运行时所需要的资源。是java编写的程序运行时需要的软件环境, 是提供给想运行java程序的用户使用的.
2.3 JVM
JVM(java virtualenv machine):Java虚拟机

思考:

JDK 和JRE的区别?

2.4 JAVA跨平台原理【扩展】

java跨平台机制是: 一次编译,到处运行.

java跨平台

总结: 对于测试人员,我们要记住,如果使用JMeter,必须要安装JDK或者JRE。

jdk安装参考:

jdk环境安装参考文档

Jmeter工具安装


目标

- 了解Jmeter安装目录结构

2. Jmeter下载与安装

2.1 官网下载地址:

[

下载示意图(安装包)

下载示意图

注意:

下载后,解压文件到任意目录,避免在一个有空格的路径安装Jmeter,这将导致远程测试出现问题。

2.2 启动JMeter的两种方式:

  • 进入bin目录

  • 方式1: 双击 ApacheJMeter.jar文件(最常用);

  • 方式2: 双击 Jmeter.bat文件(有黑窗口并且不能关闭,是服务端);

  • 方式3: linux 下启动Jmeter == meter.sh

3 Jmeter常用目录文件介绍

3.1 Bin目录

存放可执行文件和配置文件

  • Jmeter.bat:windows系统中JMeter的启动文件
  • ApacheJMeter.jar Java环境下的JMeter启动文件
  • Jmeter.log:日志文件
  • Jmeter.sh:linux系统中JMeter的启动文件
  • Jmeter.properties:系统配置文件
  • Jmeter-server.bat:windows分布式测试要用到的服务器配置
  • Jmeter-serve:linux分布式测试要用到的服务器配置

3.2 docs目录(了解开源)

docs:是JMeter的java Doc,可打开api\index.html页面来查看;

3.3 printable_docs目录

printable_docs的usermanual子目录下的内容是JMeter的用户手册文档,其中usermanual下component_reference.html是最常用到的核心元件帮助文档。

注意:lib文件夹也是一个常用文件夹,使用时再讲。

未完待续, 同学们请等待下一期

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~

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

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

相关文章

mybatis流式游标查询-导出DB大数据量查询OOM问题

问题场景 Mysql数据处理类型分以下三种 com.mysql.cj.protocol.a.result.ResultsetRowsStatic:普通查询,将结果集一次性全部拉取到内存 com.mysql.cj.protocol.a.result.ResultsetRowsCursor:游标查询,将结果集分批拉取到内存&…

Windows集群部署项目

目录 一,环境准备 1.1.安装MySQL 1.2.安装JDK 1.3.安装TomCat 1.4.安装Nginx 二,部署 2.1.后台服务部署 2.2.Nginx配置负载均衡及静态资源部署 一,环境准备 1.1.安装MySQL 可以参考博客:http://t.csdnimg.cn/A75bg 1.2.…

我为什么会选择Vim来开发Go项目及Vim IDE安装配置和操作

你好,我是孔令飞,字节跳动云原生资深研发、前腾讯云原生技术专家。《企业级 Go 项目开发实战》、《从零开发企业级 Go 应用》作者,欢迎加入 孔令飞的云原生实战营,助你进阶 Go 云原生高级开发工程师。 作为一名 Golang 开发&…

训练营十六天(二叉树part03)

104.二叉树的最大深度 力扣题目链接(opens new window) 题目 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7]&…

从头开发一个RISC-V的操作系统(四)嵌入式开发介绍

文章目录 前提嵌入式开发交叉编译GDB调试,QEMU,MAKEFILE练习 目标:通过这一个系列课程的学习,开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提 这个系列的大部分文章和知识来自于:[完结] 循序渐进&#x…

leetcode 热题 100(部分)C/C++

leetcode 热题 100 双指针 盛最多水的容器 【mid】【双指针】 思路: 好久没写代码sb了,加上之前写的双指针并不多,以及有点思维定势了。我对双指针比较刻板的印象一直是两层for循环i,j,初始时i,j都位于左界附近&…

MySQL数据库 数据库基本操作(三):表的增删查改(中)

1. 数据库的约束 1.1 约束类型(一般发生于表的创建中) NOT NULL - 指示某列不能存储 NULL 值。UNIQUE - 保证某列的每行必须有唯一的值。DEFAULT - 规定没有给列赋值时的默认值。PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合&#xf…

【CSS】浮动笔记及案例

CSS浮动 1. 认识浮动 float属性可以指定一个元素沿着左侧或者是右侧放置,允许文本和内联元素环绕它 float属性最初只使用文字环绕图片但却是早起CSS最好用的左右布局方案 绝对定位、浮动都会让元素脱标,以达到灵活布局的目的可以通过float属性让元素脱…

FTP,NFS,SSH服务安装和应用,遇到的问题

文章目录 一、FTP是什么?二、NFS是什么?三、SSH是什么?四、FTP,NFS,SSH安装(Ubuntu 操作系统)1.FTP安装2.NFS安装3.SSH服务安装 五、FTP,NFS,SSH应用1.FTP应用12.FTP应用23.NFS应用4.SSH应用 六…

【快速解决】python缺少了PyQt5模块的QtMultimedia子模块

目录 问题描述 问题原因 解决方法 成功示范 问题描述 Traceback (most recent call last): File "d:\桌面\python项目\DesktopWords-master\main.py", line 4, in <module> from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent ModuleNotFoundEr…

动态规划刷题(算法竞赛、蓝桥杯)--线段(线性DP)

1、题目链接&#xff1a;P3842 [TJOI2007] 线段 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <bits/stdc.h> using namespace std; const int N20010; int a[N][2],f[N][2]; //a[i][0]表示l[i],a[i][1]表示r[i] int dis(int a,int b){return abs(a-b); } int…

计算机网络-HTTP相关知识-基础

HTTP基础 基本概念&#xff1a;HTTP是一种计算机之间交流通信的规范&#xff0c;它允许数据在两点之间传输&#xff0c;这个过程可以包括中转或接力。HTTP不仅仅包括文本&#xff0c;还可以包括图片、音频等超文本。状态码&#xff1a;HTTP状态码分为五类&#xff1a; 2xx&…

12-项目部署_持续集成

项目部署_持续集成 1 今日内容介绍 1.1 什么是持续集成 持续集成&#xff08; Continuous integration &#xff0c; 简称 CI &#xff09;指的是&#xff0c;频繁地&#xff08;一天多次&#xff09;将代码集成到主干 持续集成的组成要素 一个自动构建过程&#xff0c; 从…

BLE协议—HID

BLE协议—HID HID设备HOGP&#xff08;HID Over GATT Profile&#xff09;HID服务HID infoHID ModeHID ReportHID MAP HID设备 HID&#xff08;Human Interface Device&#xff0c;人机接口设备&#xff09;是USB设备中常用的设备类型&#xff0c;是直接与人交互的USB设备&…

PostgreSQL 文章下架 与 热更新和填充可以提升数据库性能

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;…

keycloak - 鉴权VUE

目录 一、前言 1、背景 2、实验版本 二、开始干活 1、keycloak配置 a、创建领域(realms) b、创建客户端 c、创建用户、角色 2、vue代码 a、依赖 b、main.js 三、未解决的问题 目录 一、前言 1、背景 2、实验版本 二、开始干活 1、keycloak配置 a、创建领域(r…

常见的数据库操作

一、查看数据库及表 1.查看当前 DMBS 中有哪些数据库 show databases; (首先进入数据库) 2.查看当前数据库中有哪些表 show tables; 3.查看表的结构&#xff08;信息&#xff09; describe 表名;如&#xff1a;describe orders; 二、创建删除数据库 1.创建数据库 create databa…

三栏布局——面试/笔试题

目录 三栏布局(两端指定宽度&#xff0c;中间自适应)三栏布局(平均分布) 三栏布局(两端指定宽度&#xff0c;中间自适应) 只介绍简单的写法&#xff0c;圣杯布局之类的比较复杂&#xff0c;实际上越简单越好&#xff0c;所以复杂的就不介绍了 flex布局 <!DOCTYPE html>…

博客搭建(hexo+github)

简介 搭建完成网站的如下所示 https://polarday.top/ 使用github托管博客&#xff0c;完全免费不需要购买服务器 博客框架&#xff1a;hexo hexo主题&#xff1a;ICARUS 图床&#xff1a;githubPicGo 编辑&#xff1a;vscode 为什么使用hexo框架&#xff1f;因为hexo是静态框…

阿里云99元服务器性能测评_CPU内存_带宽_系统盘

阿里云服务器99元一年配置为云服务器ECS经济型e实例&#xff0c;2核2G配置、3M固定带宽和40G ESSD Entry系统盘&#xff0c;新用户和老用户均可买&#xff0c;续费不涨价依旧是99元一年&#xff0c;阿里云服务器网aliyunfuwuqi.com来详细说下阿里云99元服务器性能测评&#xff…