实验07 接口测试postman

目录

知识点

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. 文档与实现不符

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Talk|清华大学袁天远:PreSight - 利用NeRF先验帮助自动驾驶场景在线感知

本期为TechBeat人工智能社区第605期线上Talk。 北京时间7月3日(周三)20:00&#xff0c;清华大学博士生—袁天远的Talk已经准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “PreSight - 利用NeRF先验帮助自动驾驶场景在线感知”&#xff0c;他向大家介绍了新…

【送书活动十期】从零开始node.js制作CLI工具

这篇博客的由来是源于工作中一个java项目的配置项是加密后的私钥&#xff0c;私钥是由其他项目中调用web3生成随机账号得到的&#xff0c;而加密方法只是简单在java项目中执行代码得到。这便导致两步操作有点割裂&#xff0c;需要有一个脚本来完成生成私钥和加密私钥&#xff0…

vue使用audio 音频实现播放与关闭(可用于收到消息给提示音效)

这次项目中因为对接了即时通讯 IM&#xff0c;有个需求就是收到消息需要有个提示音效&#xff0c;所以这里就想到了用HTML5 提供的Audio 标签&#xff0c;用起来也是很方便&#xff0c;首先让产品给你个提示音效&#xff0c;然后你放在项目中&#xff0c;使用Audio 标签&#x…

【深度学习教程】

文章目录 李宏毅-机器学习/深度学习https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.phphttps://speech.ee.ntu.edu.tw/~hylee/ml/2022-spring.phphttps://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.phphttps://speech.ee.ntu.edu.tw/~hylee/genai/2024-spring.php 李宏…

如何通过网络快速搜寻到自己的STM32设备

目录 一、问题概述 二、解决思路 三、代码实现 1.创建任务 2.UDP广播接收 一、问题概述 以前一直用RS232串口修改设备配置信息&#xff0c;但是现场施工人员的232线太细&#xff0c;经常容易断掉&#xff0c;这次准备用网口去修改&#xff0c;遇到了一个问题&#xff0c;…

allure_pytest:AttributeError: ‘str‘ object has no attribute ‘iter_parents‘

踩坑记录 问题描述&#xff1a; 接口自动化测试时出现报错&#xff0c;报错文件是allure_pytest库 问题分析&#xff1a; 自动化测试框架是比较成熟的代码&#xff0c;报错也不是自己写的文件&#xff0c;而是第三方库&#xff0c;首先推测是allure_pytest和某些库有版本不兼…

新手教学系列——简单的服务配置项集中管理

前言 在开发和运维过程中&#xff0c;配置管理是一个非常重要但经常被忽视的环节。常用的配置文件格式包括env、ini和yaml等&#xff0c;它们非常适合模块级别的系统配置&#xff0c;尤其是一些敏感信息的配置&#xff0c;例如数据库连接字符串和密码等。但是&#xff0c;对于…

【文心智能体】前几天百度热搜有一条非常有趣的话题《00后疯感工牌》,看看如何通过低代码工作流方式实现图片显示

00后疯感工牌体验&#xff1a;https://mbd.baidu.com/ma/s/6yA90qtM 目录 前言比赛推荐工作流创建工作流入口创建工作流界面工作流界面HTTP工具卡点地方 总结推荐文章 前言 前几天百度热搜有一条非常有有趣《00后疯感工牌》。 想着通过文心智能体去一键生成00后疯感工牌是不是…

大语言模型在病理AI领域的应用·1|24-07-17·文献速递

小罗碎碎念 今日文献主题&#xff1a;大语言模型技术在病理组学中的应用 这次从厦门开会回来以后&#xff0c;一直在思考大语言模型在病理AI中的一个应用场景&#xff0c;为了辅助自己得出一个科学的结论&#xff0c;我搜集了最新发表的30篇与之相关的文献&#xff0c;用6期推文…

【解决】多个网卡导致nacos注册的服务ip有误问题

解决办法 在本地idea中启动的时候添加启动配置&#xff1a; 方法一 -Dspring.cloud.inetutils.preferred-networks你自己网卡的ip 方法二 -Dspring.cloud.nacos.discovery.ip你自己网卡的ip

封装网络请求 鸿蒙APP HarmonyOS ArkTS

一、效果展示 通过在页面直接调用 userLogin(params) 方法&#xff0c;获取登录令牌 二、申请网络权限 访问网络时候首先需要申请网络权限&#xff0c;需要修改 src/main 目录下的 module.json5 文件&#xff0c;加入 requestPermissions 属性&#xff0c;详见官方文档 【声明权…

陪玩系统小程序模式APP小程序H5系统搭建开发

随着移动互联网的营及和游戏行业的蓬轨发展&#xff0c;陪玩服务应远而生并迅速唱起&#xff0c;陪玩系统小程序作为连接游戏玩家与陪玩师的桥梁&#xff0c;其模式系统的搭建与开发是得尤为重要&#xff0c;本文将洋细凰述陪玩系统小程宗模式系统的搭建开发流程&#xff0c;包…

PCIe驱动开发(3)— 驱动设备文件的创建与操作

PCIe驱动开发&#xff08;3&#xff09;— 驱动设备文件的创建与操作 一、前言 在 Linux 中一切皆为文件&#xff0c;驱动加载成功以后会在“/dev”目录下生成一个相应的文件&#xff0c;应用程序通过对这个名为“/dev/xxx” (xxx 是具体的驱动文件名字)的文件进行相应的操作即…

C语言------指针讲解(2)

目录 一、数组名的理解 二、使用指针访问数组 三、一维数组传参的本质 四、冒泡排序 五、二级指针 六、指针数组 七、指针数组模拟二维数组 一、数组名的理解 通过学习&#xff0c;我们知道&#xff1a;数组名和数组首元素的地址打印出来的结果一模一样&#xff0c;数组…

信息安全CISSP认证重点学什么?学习后能掌握哪些安全技能?

引言&#xff1a; 想要在信息安全领域取得突破&#xff1f;那么CISSP认证是您必不可少的一步&#xff01;本文将为您介绍CISSP认证的重点学习内容以及学习后可以掌握的安全技能&#xff0c;助您更好地了解并准备这一全球认可的信息安全证书。 随着信息安全领域的不断发展&…

【教学类-67-02】20240716毛毛虫ABB排序

背景需求&#xff1a; 【教学类-67-01】20240715毛毛虫AB排序-CSDN博客文章浏览阅读584次&#xff0c;点赞16次&#xff0c;收藏6次。【教学类-67-01】20240715毛毛虫AB排序https://blog.csdn.net/reasonsummer/article/details/140443310 在AB排序基础上&#xff0c;继续制作…

2024年带你轻松掌握最火10款项目管理软件:解决企业项目管理难题的利器

本文向您推荐10款卓越非凡的项目管理软件&#xff01;它们能有效地助您梳理思绪&#xff0c;极大提高工作效率&#xff0c;使您即使身处繁忙之中仍能保持井然有序。这十款工具各具特色&#xff0c;从简洁明了的任务清单到复杂精密的项目追踪需求&#xff0c;满足各类用户群体的…

Python中的数据结构:五彩斑斓的糖果盒

在Python编程的世界里&#xff0c;数据结构就像是一个个五彩斑斓的糖果盒&#xff0c;每一种糖果都有其独特的味道和形状。这些多姿多彩&#xff0c;形状和味道各异的糖果盒子包括了&#xff1a;List&#xff08;列表&#xff09;、Tuple&#xff08;元组&#xff09;、Diction…

【Java开发实训】day05——数组常见算法

目录 一、数组翻转 1.1示例代码 1.2适用场景 二、冒泡排序 2.1示例代码 2.2适用场景 三、二分查找 3.1示例代码 3.2适用场景 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo…

【软件建模与设计】-04-软件设计和体系结构概念

目录 1、类与对象 2、信息隐藏 2.1、示例 3、继承和泛化/特化 4、并发处理 4.1、并发对象间的协作 5、设计模式 6、软件体系结构和构件 7、软件质量属性 1、类与对象 一个对象是现实世界中物理的或概念的实体。 一个对象盖了数据(data)以及作用于数据之上的过程(pro…