实验07 接口测试postman

news2024/9/20 18:48:29

目录

知识点

1 接口测试概念

1.1为什么要做接口测试

1.2接口测试的优点

1.3接口测试概念

1.4接口测试原理和目的

2 接口测试内容

2.1测什么

2.1.1单一接口

2.1.2组合接口

2.1.3结构检查

2.1.4调用方式

2.1.5参数格式校验

2.1.6返回结果

2.2四大块

2.2.1功能逻辑

2.2.2异常测试

2.2.3路径测试

2.2.4其他异常场景

2.3接口测试的依据

2.3.1需求规范

2.3.2接口文档

2.4测试方法

2.5接口分类

2.6测试流程

3 HTTP原理

3.1请求/应答模型

3.2请求报文

3.2.1原理

3.2.2涵盖内容

3.3请求方法

3.4响应报文

3.5状态码

实验


 

知识点

  • 1 接口测试概念

    • 1.1为什么要做接口测试
      • 不同段的进度不同,需要对最开始出来的接口进行接口测试

    • 1.2接口测试的优点
      • 节约时间

      • 提高工作效率

      • 提高系统健壮性

    • 1.3接口测试概念
      • 类型

        • API

        • 硬件驱动程序

        • 数据库系统的访问接口

        • webservice接口

        • http rest接口

      • 测试系统间接口的一种测试,测试的对象主要是接口,主要是测试外部系统与所测系统之间以及内部系统之间的交互点。

    • 1.4接口测试原理和目的
      • 接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。

      • 测试接口的正确性和稳定性(持续集成是接口测试的核心)。

  • 2 接口测试内容

    • 2.1测什么
      • 2.1.1单一接口
        • 输入输出值测试

          • 单一接口测试主要测试的是输入输出值,一些具有业务意义的值​需要特别测试(例如,1和2分别代表两个测试场景,那么就不能够把他们看成是等价类,需要分开测试

      • 2.1.2组合接口
        • 业务场景测试

          • 组合接口测试主要是通过组合多个单一接口,来测试一个业务场景 Example:测试购物网站的一个下单的功能,那么因为在下单之前还有一些流程,所以要测试一个场景。 测试:搜索商品 --> 选中商品 --> 添加进购物车 --> 提交订单 -->支付 ​(提交订单时还涉及到地址的选取等) [注:涉及到如果使用从cookie或者session在本例中的区别:如果使用cookie加入购物车,那么换一台电脑购物车里的商品就不存在了,但如果使用的是session,购物车里面的东西就一直存在,即:cookie是本机作用的,session不止于本机作用

      • 2.1.3结构检查
        • 返回值结构

          • (1)检查返回值的结构是否正确,如是json类型还是xml类型的数据

          • (2)字段名称是否正确等

      • 2.1.4调用方式
        • HTTP调用

          • 注意:提交数据,一定使用POST方式,不能使用GET方式。

        • 其他方式

      • 2.1.5参数格式校验
        • 必选项检查

        • 非必选项默认值

        • 类型

        • 取值范围

        • 全/半角、大/小写转换。

        • 长度

      • 2.1.6返回结果
        • 与需求一致

        • 每种错误要有单独且明确的错误码。

    • 2.2四大块
      • 2.2.1功能逻辑
        • 通过查数据库或缓存等验证数据是否处理正确。

        • 通过其他辅助途径进行验证

      • 2.2.2异常测试
        • 接口测试中主要测试接口正常逻辑,但仅逻辑测试不能保证数据的安全及程序接口在异常情况下的逻辑处理的正确性。

      • 2.2.3路径测试
        • 当被测接口的实现方法中,判断逻辑复杂分支多,且判断中又调用了其他的接口,此时必须要进行路径覆盖测试。

      • 2.2.4其他异常场景
        • 研发的项目,有些项目是底层使用的系统,根据项目特点,可能会存在特殊的异常场景。

        • 例如: 堵命令,支付的异步操作,支付消息重试等。

    • 2.3接口测试的依据
      • 2.3.1需求规范
      • 2.3.2接口文档
        • 涵盖内容

          • 1、接口概述:

            • 1)接口名称

            • 2)接口功能

            • 3)接口类别

            • 4)提交者、提交时间、需求来源及时间要求

          • 2、HTTP请求方式

          • 3、认证说明

          • 4、请求限制说明

          • 5、请求参数说明

            • 参数名、是否必选、类型、取值范围、描述(非必选项的默认值)

          • 6、相关约束

          • 7、注意事项

          • 8、调用示例

          • 9、返回说明

            • 1)返回数据格式

            • 2)返回结果示例

            • 3)错误代码及返回说明

        • 示例

    • 2.4测试方法
      • 可以通过开发脚本代码进行测试。

      • 可以通过开源免费的接口调用调试工具测试或者自动化工具,如:Postman,jmeter等。

      • 可以通过App手动测试,结合抓包工具分析,如:Fillder/Charles等。

    • 2.5接口分类
      • 1)API:应用程序编程接口 application

        • 示例

          • 模块接口测试是单元测试的基础。它主要测试模块的调用与返回
            例如:
            package com.java.base;
            public class InterfaceTest {    
                //求两个整数相加的和
                public static int add(int a, int b){
                    return a + b;
                }
                public static void main(String[] args) {        
                    //测试整数相加
                    int resule = add(1,2);
                    if(resule == 3){
                        System.out.println("success!");         
                       }else{
                        System.out.println("fail!");
                    }  }  }
            

      • 2)GUI:图形用户界面(接口)

    • 2.6测试流程
      • 图示

  • 3 HTTP原理

    • 3.1请求/应答模型
      • HTTP遵循请求(Request)/应答(Response)模型。Web浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答

      • 图示

    • 3.2请求报文
      • 3.2.1原理
        • 客户端向服务器发送请求时,会给服务器发送一个请求报文。请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。URL只是标识资源的位置,而HTTP报文用来提交和获取资源。客户端发送的HTTP请求消息,包括请求行、请求头部、空行和请求体4个部分。

      • 图示

      • 3.2.2涵盖内容
        • 请求行

        • 请求头部

        • 空行

        • 请求体

    • 3.3请求方法
      • GET

      • HEAD

      • POST

      • PUT

      • DELETE

      • CONNECT

      • OPTIONS

      • TRACE

      • 图示

    • 3.4响应报文
      • 原理

      • 图示

      • 涵盖内容

        • 状态行

        • 响应头部

        • 空行

        • 响应体

    • 3.5状态码
      • 概念

        • 状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值

      • 可能取值

        • 1xx

          • 指示信息

          • --表示请求已接收,继续处理

        • 2xx

          • 成功

          • --表示请求已被成功接收、理解、接受

        • 3xx

          • 重定向

          • --要完成请求必须进行更进一步的操作

        • 4xx

          • 客户端错误

          • --请求有语法错误或请求无法实现

        • 5xx

          • 服务器端错误

          • --服务器未能实现合法的请求

      • 具体例子

        • 200 OK客户端请求成功

        • 404 Not Found请求资源不存在,eg:输入了错误的URL

        • 401 Unauthorized请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

        • 500 Internal Server Error服务器发生不可预期的错误

        • 503 Server Unavailable服务器当前不能处理客户端的请求,一段时间后可能恢复正常

        • 400 Bad Request  //客户端请求有语法错误,不能被服务器所理解

        • 403 Forbidden  //服务器收到请求,但是拒绝提供服务

实验

一 实验目的:

1、了解什么是接口测试。

2、理解HTTP工作原理。

3、掌握接口测试用例设计。

4、掌握接口测试工具Postman的使用。

二 实验环境

1、Windows操作系统环境;

2、Java Web项目运行环境;

3、Postman工具。

三 实验准备

1、了解Web项目前后端工作原理;

2、掌握Java Web项目的构建与部署。

四 实验内容

(1)从ftp或者https://www.postman.com/downloads/,下载适合自己操作系统的Postman安装文件,并完成Postman的安装,把安装成功界面截图。

(2)使用Postman创建一个workspace,workspace名称为自己中文名拼音。

(3)在workspace中创建一个collection,命名为cookieshop,针对商品查询接口进行测试,请设计商品查询接口设计文档。

表1 商品查询接口设计说明

接口名称

调用方式

接口地址

接口方法

输入参数定义

列名

字段名

类型

必填

备注

返回数据说明

接口名称

商品查询接口

调用方式

HTTP请求

接口地址

postman-echo.com/get

接口方法

GET

输入参数定义

列名

字段名

类型

必填

备注

keywordsearchKeyString查询关键字
categoryproductTypeString商品类别
priceMinminPriceDecimal最低价格
priceMaxmaxPriceDecimal最高价格
sortsortTypeString排序方式(如:price, popularity)
pagepageNumberInteger页码
sizepageSizeInteger每页显示的商品数量

返回数据说明

成功响应:
  • 状态码:200 OK

  • 返回数据格式:JSON

  • 返回结果示例

     

    json

    解释

    { "success": true, "data": { "total": 120, // 总商品数 "products": [ // 商品列表 { "id": "p001", // 商品ID "name": "Chocolate Chip Cookies", // 商品名称 "description": "Delicious cookies with chocolate chips.", // 商品描述 "price": 29.99, // 商品价格 "category": "Cookies", // 商品类别 "image": "https://example.com/images/p001.jpg" // 商品图片URL }, { "id": "p002", "name": "Oatmeal Raisin Cookies", "description": "Soft and chewy oatmeal cookies with raisins.", "price": 24.99, "category": "Cookies", "image": "https://example.com/images/p002.jpg" } // 更多商品... ] }, "message": "查询成功" // 操作结果信息 }
  • 字段说明

    • success:布尔值,表示请求是否成功。
    • data:包含实际数据的对象。
    • total:查询结果的总商品数。
    • products:商品列表数组,每个元素是一个商品对象。
    • id:商品的唯一标识符。
    • name:商品名称。
    • description:商品描述。
    • price:商品价格。
    • category:商品所属类别。
    • image:商品图片的URL。
错误响应:
  • 状态码:可能为400(错误请求)、401(未授权)、404(未找到)、500(服务器内部错误)等。

  • 返回数据格式:JSON

  • 错误响应示例

     

    json

    解释

    { "success": false, "error": { "code": "INVALID_REQUEST", // 错误代码 "message": "请求参数不合法" // 错误描述 }, "message": "查询失败" // 操作结果信息 }
  • 字段说明

    • success:布尔值,表示请求是否成功。
    • error:错误信息对象,仅在发生错误时出现。
      • code:错误代码,用于标识具体错误类型。
      • message:对错误的文本描述。
    • message:对操作结果的一般描述。

(4)针对以上商品接口设计说明,请运用黑盒测试方法对商品查询接口进行测试用例设计。

表2 商品查询接口测试用例

输入数据

预期输出结果

用例编号输入数据预期输出结果测试类型备注
TC01无参数返回所有商品的列表,按默认排序正向测试测试默认行为
TC02searchKey=chocolate返回包含"chocolate"关键字的商品列表正向测试测试关键字搜索
TC03productType=Cookies返回"Cookies"类别的商品列表正向测试测试类别过滤
TC04minPrice=10&maxPrice=50返回价格在10到50之间的商品列表正向测试测试价格范围过滤
TC05sortType=price按价格升序返回商品列表正向测试测试排序功能
TC06sortType=-price按价格降序返回商品列表正向测试测试排序功能
TC07pageNumber=2&pageSize=10返回第二页,每页10个商品的列表正向测试测试分页功能
TC08searchKey=xyz&category=unknown&minPrice=0&maxPrice=1000&sortType=popularity&pageNumber=1&pageSize=5返回符合所有给定参数的商品列表正向测试综合测试
TC09searchKey=chocolate&category=Biscuits返回错误信息,因为"Biscuits"不是有效的类别边界测试测试无效类别
TC10minPrice=1000&maxPrice=10000返回价格在1000到10000之间的商品列表,如果不存在则返回空列表边界测试测试边界价格范围
TC11pageNumber=100&pageSize=10返回错误信息或最后一页的商品列表,因为页码超出范围边界测试测试超出范围的页码
TC12searchKey=;DROP TABLE products;返回错误信息,因为包含SQL注入尝试安全性测试测试SQL注入防护
TC13searchKey=<script>返回错误信息或过滤后的搜索结果,因为包含HTML注入尝试安全性测试测试HTML注入防护
TC14searchKey=chocolate&sortType=invalid返回错误信息,因为"invalid"不是有效的排序方式异常测试测试无效排序方式

 

(5)使用Postman接口测试工具,根据表2的测试用例进行接口测试。并提交测试结果。

五 实验总结

(1)为什么要做接口测试。

接口测试是软件测试的一个重要组成部分,主要用于验证不同系统组件或模块之间的交互是否符合预期。以下是进行接口测试的主要原因:

  1. 确保数据交换正确性

    • 验证接口在不同系统或模块间传递数据时的准确性。
  2. 功能验证

    • 确保接口实现的功能符合需求规格。
  3. 系统稳定性

    • 通过接口测试可以发现可能导致系统不稳定的错误。
  4. 性能评估

    • 评估接口在高负载下的表现,确保其满足性能要求。
  5. 安全性检查

    • 检查接口是否容易受到安全攻击,如SQL注入、跨站脚本攻击等。
  6. 兼容性测试

    • 确保接口在不同环境或不同版本间能够正常工作。
  7. 早期发现缺陷

    • 在开发早期阶段发现接口问题,减少后期修复的成本。
  8. 促进团队协作

    • 帮助开发团队理解接口规范,提高协作效率。
  9. 支持持续集成

    • 在持续集成过程中自动测试接口,确保代码变更不会破坏现有功能。
  10. 文档验证

    • 验证接口文档的准确性和完整性。

(2)接口测试能发现哪些错误?

接口测试能够发现的错误类型广泛,具体包括但不限于:

  1. 数据验证错误

    • 输入数据不符合预期格式或类型。
  2. 返回结果错误

    • 接口返回的数据或状态码与预期不符。
  3. 性能问题

    • 接口响应时间过长或在高负载下表现不佳。
  4. 安全性漏洞

    • 接口容易受到SQL注入、跨站脚本攻击等安全威胁。
  5. 兼容性问题

    • 在不同平台或不同版本的客户端中表现不一致。
  6. 并发问题

    • 在多用户同时访问时接口表现异常。
  7. 资源泄露

    • 接口未能正确释放占用的资源,如数据库连接、内存等。
  8. 异常处理不当

    • 接口在遇到异常情况时未能正确处理。
  9. 依赖关系错误

    • 接口依赖的其他服务或资源不可用时表现异常。
  10. 版本兼容性

    • 新旧版本接口之间的兼容性问题。
  11. 路径错误

    • 接口未能正确处理请求路径或参数。
  12. 文档与实现不符

    • 实际接口实现与文档描述不一致。

 

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

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

相关文章

降低物联网开发门槛的TuyaOS操作系统重磅更新:AI赋能设备升级,配网速度10倍提升,改变传统开发方式

作为降低智能解决方案开发门槛的 TuyaOS 操作系统&#xff0c;此次又迎来了重大更新&#xff08;点击查看 TuyaOS 完整介绍&#xff09;&#xff01; 本次 TuyaOS 3.10.0 版本发布了超丰富的开发框架&#xff0c;覆盖多种协议连接和平台&#xff0c;可供开发者更快速便捷地接入…

直播领夹式麦克风哪个品牌好?直播麦克风十大排行榜推荐

​在这个充满活力与创意的时代&#xff0c;无线领夹麦克风成为了我们捕捉声音的得力助手。无论是在熙熙攘攘的美食街探店&#xff0c;还是在安静的书房进行录制&#xff0c;还是在嘈杂的户外采访&#xff0c;无线领夹麦克风都能出色地完成任务。很多朋友都曾为麦克风的选择而烦…

数据字典的解释

一、没有数据字典的时候&#xff0c;一般通过备注来标明&#xff0c;数据项不同数值所代表的不同含义。 如下图所示&#xff0c;但这样不够灵活。 二、引入数据字典的形式 数据字典由两张表组成&#xff0c;分别是字典类型表和字典数据表。 字典类型表中的字段都是存在多个值…

【初阶数据结构】掌握二叉树遍历技巧与信息求解:深入解析四种遍历方法及树的结构与统计分析

初阶数据结构相关知识点可以通过点击以下链接进行学习一起加油&#xff01;时间与空间复杂度的深度剖析深入解析顺序表:探索底层逻辑深入解析单链表:探索底层逻辑深入解析带头双向循环链表:探索底层逻辑深入解析栈:探索底层逻辑深入解析队列:探索底层逻辑深入解析循环队列:探索…

部分功能的实现和算法

目录 1.雪花算法 2.MD5加密 3.小眼睛显示密码 4.发送验证码 5.倒计时 1.雪花算法 SnowFlake 中文意思为雪花&#xff0c;故称为雪花算法。最早是 Twitter 公司在其内部用于分布式环境下生成唯一 ID。在2014年开源 scala 语言版本 雪花算法的原理就是生成一个的 64 位比特…

探索XEX数字资产交易的优势与操作指南

随着数字资产市场的快速发展&#xff0c;越来越多的投资者开始关注并参与其中。XEX交易所作为一个新兴的数字资产交易平台&#xff0c;以其用户友好的界面和高效的交易服务&#xff0c;迅速吸引了大量用户。本文将介绍XEX数字资产交易的主要特点和优势&#xff0c;帮助新手更好…

昇思25天学习打卡营第18天|munger85

DCGAN生成漫画头像 首先肯定是下载训练数据&#xff0c;而这些训练数据就是一些卡通头像。后来我们会看到这个具体的头像 就像其他的数据集目录一样&#xff0c;它是由一些目录和这个目录下面的文件组成的数据集。 有相当多的图片。所以可以训练出来比较好的效果。 图片的处理…

Python应用开发——30天学习Streamlit Python包进行APP的构建(20):配置

Configuration配置 config.toml config.toml 是一个可选文件,你可以为工作目录或全局开发环境定义它。当 config.toml 文件同时在全局和工作目录中定义时,Streamlit 会合并配置选项,并优先使用工作目录配置。此外,你还可以使用环境变量和命令行选项来覆盖其他配置选项。更…

PySide(PyQt),使用 QGraphicsOpacityEffect 设置小部件的整体显示透明度

基本的demo 在 PySide6 中&#xff0c;可以使用 QGraphicsOpacityEffect 类来实现整体显示透明度。下面是一个简单的示例&#xff0c;演示了如何为 QLabel 设置透明度&#xff1a; from PySide6.QtWidgets import QApplication, QLabel, QGraphicsOpacityEffect, QVBoxL…

Java--接口

目录 语法规则 例子 实现多个接口 接口之间的继承 抽象类和接口的区别 接口使用实例--Comparable接口 Clonable接口 浅拷贝 深拷贝 在现实生活中&#xff0c;接口的例子比比皆是&#xff0c;比如&#xff1a;电源插座&#xff0c;主机上的USB接口等。这些插口中可以插…

【C++】位运算:两整数之和

1.题目 2.算法思路 本题不能只用 -&#xff0c;那大概率用到位运算符。 异或的作用是无进位相加&#xff0c;所以需要通过异或运算&#xff08;^&#xff09;来替代加法运算&#xff0c;但是我们无法确定进位的信息。所以需要与运算&#xff08;&&#xff09;来得到进位的…

【数据结构与算法 经典例题】翻转二叉树

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法 经典例题》C语言 期待您的关注 ​ 目录 一、问题描述 二、解题思路 三、C语言实现代码 一、问题描述 给你一…

golang 字符编码 gbk/gb2312 utf8编码相互转换,判断字符是否gbk编码函数, 字符编码转换基础原理解析, golang默认编码utf8

虽然golang里面的默认编码都是统一的unicode utf8编码&#xff0c; 但是我们在调用外部系统提供的api时&#xff0c;就可能会遇到别人的接口提供的编码非 utf8编码&#xff0c;而是gbk/gb2312编码&#xff0c; 这时候我们就必须要将别人的gbk编码转换为go语言里面的默认编码ut…

2024国内AI公司50强榜单。。。

你好&#xff0c;我是郭震 近日&#xff0c;2024国内AI公司50强榜单发布。 1 AI公司50强榜单 AI公司排名前五分别是&#xff1a;百度&#xff0c;阿里&#xff0c;华为&#xff0c;腾讯&#xff0c;科大讯飞。 6-10名分别是&#xff1a;小米&#xff0c;商汤&#xff0c;字节跳…

Jeston Orin IIC 驱动测试 —— 以MPU6050为例

前言 后续驱动需要需要使用IIC作为通讯的协议&#xff0c;但是做的板子还没来&#xff0c;因此&#xff0c;在开发板驱动加载真正的之前&#xff0c;我们需要确保IIC能够正常通信。 网上的博客基本都是教怎么使用i2c-tools进行通信的&#xff0c;但是这种方法只是在用户空间下…

【效率提升】程序员常用Shell脚本

文章目录 常用Shell脚本一. 定期更新分区数据二、获取系统资源的使用情况 常用Shell脚本 一. 定期更新分区数据 在某些场景下&#xff0c;我们需要对N年前某一分区的数据进行删除&#xff0c;并添加今年该对应分区的数据&#xff0c;实现数据的流动式存储。 #!/bin/bash dt$…

基于FPGA的数字信号处理(18)--半加器和全加器

前言 在数字系统中&#xff0c;加法运算是最常见的算术运算&#xff0c;同时它也是进行各种复杂运算的基础。 半加器 最简单的加法器叫做 半加器&#xff08;Half Adder&#xff09;&#xff0c;它将2个输入1bit的数据相加&#xff0c;输出一个2bits的和&#xff0c;和的范围为…

若依前后端获取当前用户

后端 Autowired private TokenService tokenService;LoginUser loginUser tokenService.getLoginUser(); sysInquiry.setCreateBy(loginUser.getUsername()); sysInquiry.setCreateTime(DateUtils.getNowDate()); 前端 获取使用 const nickName this.$store.state.user.nick…

最大似然估计模型及 Stata 具体操作步骤

目录 一、引言 二、理论原理 三、准备数据 四、定义似然函数 五、进行最大似然估计 六、代码解释 七、代码运行结果 八、模型评估与诊断 一、引言 最大似然估计&#xff08;Maximum Likelihood Estimation&#xff0c;MLE&#xff09;是一种在统计学中广泛应用的参数估计…

linux下磁盘分区工具GParted

最近发现安装的redhat机器部分磁盘大小分配不合理 使用gpated对磁盘重新分区 1、使用U盘制作一个启动盘 下载启动盘制作工具Index of /downloads 使用非常简单&#xff0c;选择gparted-live-1.1.0-3-i686.iso包即可 2、制作完成后&#xff0c;重启机器&#xff0c;选择U盘…