首页 > 其他分享 >HTTP接口测试

HTTP接口测试

时间:2023-09-11 14:05:51浏览次数:47  
标签:HTTP 请求 接口 print 测试 test


@Author: Basil Guo @Date: Feb. 20, 2021 @Description: HTTP接口测试 @Keyword: test, http interface @Type: tutorial

学习方式:先方法,后工具(接口测试常用工具有SoupUI、JMeter)

学习建议:

  1. 了解接口是做什么的。
  2. 理解接口的业务处理逻辑。
  3. 熟悉接口核心的三组件:地址、入参、返回包。
  4. 依据参数校验和逻辑校验设计入参组合。
  5. 学习JMeter或者SoapUI。

常说的接口测试都是在指代HTTP接口测试。接口测试属于功能测试的一部分。测试重点在于检查数据的交换、传递和控制管理过程,以及流程测试中系统间的相互依赖关系等。

接口(Application ProgrammingInterface, API),可以把提供资源的一方称为服务端,把请求资源的一方称为客户端,而“接口”可以理解为服务端或服务端内的某个模块提供的一个可供“他人”调用其内部资源的“入口”。

https://api.douban.com/v2/music/search,该URL包括3个部分,分别是采用的协议(https)、服务器地址(api.douban.com)、请求资源路径(/v2/music/search)。把此URL称为豆瓣网音乐搜索模块的一个接口,也称为接口地址。

可以为此接口附加参数,使用GET形式的就使用?,多个参数使用&连接,例如https://api.douban.com/v2/music/search?q=义勇军进行曲&count=1

测试人员是直接通过接口来测试系统的,而不是通过用户的交互页面来测试的,这就是为什么向服务端发送https://api.douban.com/v2/music/search?q=漫步人生路&count=2请求时,返回的并非是正常的网页元素而是原始的文本字符串。

再通俗一点说,HTTP接口测试的实质就是数据的传输和接收,传输的是接口地址中的参数,接收的是文本字符串,然后对比文本字符串是否正确。在进行HTTP接口测试时,服务端返回的一般都是JSON格式字符串。

  1. 接口测试可以在用户界面还没有被开发出来之前就对系统或系统中的模块进行测试,不用等到系统提供了可测试的功能界面之后再进行测试。
  2. 用户的交互界面封装了系统中各模块的接口。有用户界面时,通过用户界面传递数据到系统中的接口去;没有用户界面时,可以直接通过接口传递数据。也就是说,系统中各模块的接口是实现用户界面功能的基础。越早进行测试,就能越早发现Bug,与此同时开发人员修复Bug的成本就越低,这便是接口测试的意义所在。
  3. 前端的页面和后台模块是两组人开发的,后台开发完后,再将前端的页面套在后台的接口上。也就是说,只要后台模块测试好了,前端页面不管怎么改变都可以适用。同时还要注意,数据通过前端页面输入时,前端页面通常只做一些基础校验,核心业务还要靠后台来处理。因为接口测试是跳过前端页面这一层框架提前对后台模块进行测试的,所以它的意义更重大。

HTTP接口测试的依据是接口文档。接口测试人员做接口测试时,首要的任务就是拿到开发人员提供的接口文档,没有接口文档就等于没有测试的标准,也就无法开展测试工作。下面展示一个接口文档中的一部分内容。

image.png

有了此接口文档,就可以根据接口文档去设计接口的测试用例。

image.png

在这里总结一下接口文档的要素,一个接口文档至少要包括以下内容。

  1. URL(接口地址)。
  2. 请求方式POST、GET。
  3. 入参(请求参数)。
  4. 返回参数。
  5. 请求、返回示例。
  6. 返回的状态码和参数说明。

而接口测试的大体流程如下。

  1. 拿到接口文档。
  2. 设计测试用例。
  3. 执行用例(测试的步骤:请求接口,然后取到返回值,最后判断实际结果与预期结果是否相同)。
  4. 提交Bug单。

接口测试的工具除了浏览器之外,还有一款专门用于接口测试的工具——Postman。Postman的使用tutorial

通过Postman或相关工具进行接口测试时,可以依据HTTP协议状态码来判断HTTP请求的最终结果是成功了还是失败了。常用HTTP Status Code有

Http Status Code 描述
200 代表你发送的请求成功了,服务端成功响应了你的请求。
202 代表你发送的请求已接受,但服务端还未完成处理。
301 你请求的资源已被永久地移动到新的URL,网页会跳转到新的地址。
302 URL临时移动,与301类似。但资源只是临时被移动,客户端应继续使用原有URL。
400 客户端请求的语法错误,服务器无法理解。
403 资源不可用,服务器理解客户的请求,但拒绝处理它,通常是由于服务器上文件或目录的权限设置导致的Web访问错误。
404 服务器无法根据客户端的请求找到资源(网页),也就是代表着你请求的资源(网页)不存在了。
500 服务器的内部产生了错误,无法完成客户端的请求。
401 服务器不具备完成请求的功能,无法完成此请求。

抓包HTTP通信过程就不在此重新复述了。

HTTP基于请求/响应方式工作。

请求分为:请求头、请求体、请求空行、请求参数

响应分为:响应头、响应体、相应空行、响应内容

通过Python发送HTTP请求并接收响应,可以通过requests库来完成。

import requests

url_base = "https://api.douban.com/v2/music/search"

# 打印基本信息
def print_info(r):
    print(r.status_code)
    print(r.headers)
    print(r.cookies)
    print(r.json())
    print(r.text)

# get方式请求
def test_get():
    test_params = "q=义勇军进行曲"
    r = requests.get(url_base, params=test_params)
    print_info(r)

# post方式请求
def test_post():
    test_params = {"q": "义勇军进行曲"}
    r = requests.post(url_base, params=test_params)
    print_info(r)


def main():
    test_get()
    print("="*100)
    test_post()


if __name__ == "__main__":
    main()

标签:HTTP,请求,接口,print,测试,test
From: https://blog.51cto.com/basilguo/7435556

相关文章

  • rdma-mr内核接口rxe_reg_user_mr
    描述:注册用户内存区域【通过IB_USER_VERBS_CMD_REG_MR】根据type流程:a)    类型转换为rxe类型b)   验证mr_typec)    申请rxe_mem:mr=rxe_alloc(&rxe->mr_pool);d)   为mr分配索引:rxe_add_index(mr)e)    对对象进行引用:rxe_add_ref(pd)f)     构成......
  • 我的美妆产品被抽查HRIPT/RIPT斑贴测试COA分析和BCOP认证?
    现在化妆品产品涉及比较广,许多卖家再上架亚马逊平台的时候就会忽略一点,就是没有做相对应的认证,导致产品被下架或者停止销售。关于化妆品护肤品产品我们需要做HRIPT/RIPT斑贴测试!COA分析证书和BCOP认证!COA,HRIPT,BCOP这三个有什么区别?COA、HRIPT和BCOP是三种不同的测试和认证:COA:分析证......
  • 粉底液、口红、睫毛膏,眼膜等护肤品和彩妆上架亚马逊需要做什么认证?HRIPT/RIPT测试,斑贴
    亚马逊要求化妆、美容类睫毛膏、眼膜、足贴、假睫毛、洗发水、美甲套装等HRIPT/RIPT+COA测试,如果是眼睛这个部位使用的话还需要出示BCOP认证为了确保在使用产品或原料后不会产生潜在的刺激或过敏。亚马逊要求化妆品,美容产品,指甲胶等需要做HRIPT/RIPT多次重复封闭性皮肤斑贴测......
  • 调用视频直播点播平台EasyDSS流媒体服务器上传点播文件接口的具体操作步骤
    EasyDSS互联网视频云平台可提供一站式的视频转码、点播、直播、推拉流、时移回放等服务,也能支持4K视频的直播、点播等功能。EasyDSS可用于视频点播,并支持OBS、推流相机、EasyRTMP等设备的推流直播,可应用在AR、VR、无人机推流、虚拟直播、教育培训、远程会议等场景中。 有用户向......
  • 开学测试
    源代码:packagePaperManagement;importjava.util.ArrayList;importjava.util.Scanner;publicclassWarehouseManagement{publicstaticvoidmain(String[]args){ ArrayList<WarehouseInformation>array=newArrayList<WarehouseInformation>(); while......
  • Edge浏览器没有让我失望! 今天终于可以在win10中模拟IE内核进行前端测试了,以后就用它
    ......
  • 什么是软件产品确认测试报告?
     软件产品确认测试报告软件产品确认测试报告是一份关于软件产品质量的测试报告,它是对某一软件产品进行确认测试后所产生的测试结果的汇总和分析报告。确认测试是软件开发过程中的最后一个阶段,它的目的是对软件产品的功能、性能、易用性、可靠性、安全性等方面进行全面的测试和......
  • 系统测试AC5. AC6. IAR和GCC调试效果,MDK AC6不开优化调试乱跳,甚至倒序执行
    首先感谢大家对上一个视频的点评回复,非常有意义的讨论,这次AC6的表现更新惊呆,不开优化都可以乱跳。【实验目的】同样的程序代码,目的是测试C环境的调试现象。【实验版本】IAR版本  :9.3xMDK版本:5.3x,含AC5和AC6EmbeddedStudio:使用GCC,版本V7.1X【视频展示】https://www......
  • 性能测试的核心3步骤
    步骤一:梳理性能需求优先做需求的分析,熟悉业务流程从产品经理或其他负责人中获取性能需求:测试的范围及目标梳理出性能测试的具体场景及性能指标要求设计出性能测试用例步骤二:执行性能测试搭建性能测试环境使用合适的工具实际执行性能测试用例将性能测试的结果统一采集,可......
  • mybatisplus中设置乐观锁,首先需要在表结构中添加一个字段表示乐观锁,之后再domain中对
    2023-09-10version字段表示乐观锁 在表结构中添加一个字段表示乐观锁packagecom.hh.domain;importcom.baomidou.mybatisplus.annotation.TableLogic;importcom.baomidou.mybatisplus.annotation.TableName;importcom.baomidou.mybatisplus.annotation.Version;impo......