Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >接口测试中请求URL管理的正确姿势

接口测试中请求URL管理的正确姿势

原创
作者头像
用户9253502
发布于 2023-06-16 08:11:00
发布于 2023-06-16 08:11:00
5610
举报

一. 概述

      接口测试中,必不可少的第一个要素就是请求URL。一般来说,一个常规的请求URL分为以下四个部分: 请求协议,请求地址(域名:端口),请求路由(或资源路径),查询参数。如下图所示:

      而合格的接口测试用例,应当可以在多个环境去执行,那多个环境下一个接口的请求会哪些不同呢?

      首先,先说说哪些是不变的。请求协议必然是不变的,最多是否需要SSL验证,也就是http和https的不同,但一般来说对于代码发送请求,可以自适应,因此可以忽略,只有特定情况才需要做一些改变,如忽略证书校验等配置。

      其次,请求路由在多个环境下也不会改变,当然会有一些动态路由参数,但是这就与请求数据相关,通常都是动态关联。查询参数也是如此,查询参数名一般不会变,但是参数值一般是需要动态关联来生成。这二者都是通过请求数据的设计来解决,不与环境配置挂钩,与业务数据挂钩。

      那最后与环境挂钩的自然是请求地址,即ip加端口或者说是域名。不同的环境请求地址自然是不同的,如果我们希望接口测试用例在不同环境去执行,第一件事就要解决接口请求地址的动态获取。

二. 实现

      那如何实现接口请求地址的动态获取呢?如果所有接口测试用例只是测试单个服务的话,当然很简单,只需要每个环境下接口自动加上环境对应的请求地址即可,一些简单的测试平台或者测试框架也确实是这样实现的。

      但事实上肯定不会如此简单,现在的服务架构通常服务端都不会是单一的服务,尤其是微服务架构中,后端可能会有多个子服务。线上环境可能还会只有一个域名然后来代理所有的子服务,但测试环境一般都会存在多个请求地址。那将属于不同服务的接口动态匹配自己服务所属的域名或ip地址就相对麻烦一些。

      首先,常规做法是根据路由匹配。不同的微服务其路由参数前一两个参数必然是和业务挂钩的命名,因此我们可以参考nginx反向代理的配置方式,当遇到路由是以A开头的接口时,就自动将A对应的请求地址加在接口请求中,遇到BCD..则同理。这样做的优势是比较灵活的,但是有一种情况无法解决。

      在作者过往工作中,遇到这种情况,两个服务A和B,在环境1中,他们是部署在一起的,其请求路由前面也是一样,请求地址自然也是一样的。但是在环境2中,他们却是分开部署的,请求路由还是一样,但请求地址自然是不一样的。遇到这种情况,再套用路由匹配,针对环境2,就不是很好使了。虽然这种特殊情况是因为不规范导致的,但在现实中,这类情况并不少见。

      那如何解决这类问题呢,这时候我们就需要引入一个服务标识的概念,一个接口,无论在任何一个环境,他一定是属于系统架构中的某个子服务的。那么,如果一个被测系统有多个子服务,那我们就给每个子服务配置一个对应的标识,用来区分其服务的IP端口或域名,我称之为域名标识。而我们在维护接口文档时,对每个接口都加上所属服务的字段,即加上域名标识的记号,如此,不仅可以清晰知道被测接口所属的服务,而且不管不同环境怎么部署,通过标识一定可以找到接口对应的请求地址。

      当然,这种解决办法有一个缺点,当系统架构比较复杂时,如果有n个微服务,那就必须每个环境都配置n个域名标识对应的域名,即便在一些环境中这些标识对应的域名是一样的。

      因此,全局考虑,我们一般采用的请求URL管理的方式是路由匹配和标识匹配的结合。即域名标识字段我们在接口文档中还是正常维护,当遇到请求地址混乱的环境我们用域名标识来匹配,当遇到请求地址相对统一的环境我们用路由来匹配,如此就可以相对简单的完成多服务架构下的请求URL管理。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
详解接口测试(2)- HTTP接口用例设计与测试方法(拿B站练手)
在之前的文章《详解接口测试(1)-常见的网络通信协议》当中,我们介绍了接口的概念以及各种类型的接口用到的网络通信协议。鉴于HTTP网络协议使用最为广泛,本文将会基于HTTP协议的接口对其讲解如何进行接口测试,内容包含以下部分:
Bug挖掘机
2022/09/28
1.8K0
详解接口测试(2)- HTTP接口用例设计与测试方法(拿B站练手)
接口测试工具 - MyPostMan
Postman,一个用于构建和使用API的API平台,简化了API生命周期的每一步,并简化了协作,可以更快地创建更好的API。对于测试人员来说,也是使用最多的接口测试工具之一。
wangmcn
2024/11/14
1000
接口测试工具 - MyPostMan
接口测试总结
在用python进行自动化测试之前,我们今天先讲一下接口测试,如何进行接口测试,使用什么工具进行接口测试,如何使用fiddler进行抓包等等。
我被狗咬了
2019/09/23
8690
接口测试总结
接口测试基本知识点
让程序或工具代替人工自动完成对接口进行测试的一种过程,借助工具、代码、模拟客户端发送请求给服务器,借助断言自动判断预期结果和实际结果是否一致。
wangmcn
2022/10/30
6000
全网最详细的postman接口测试教程,一篇文章满足你
主要分享测试的学习资源,帮助快速了解测试行业,帮助想转行、进阶、小白成长为高级测试工程师。
伤心的辣条
2022/12/14
25.6K0
全网最详细的postman接口测试教程,一篇文章满足你
接口测试
是对系统或组件之间的接口进行测试,主要是校验数据是否正确、传递和控制管理过程,以及相互逻辑依赖关系
用户11097514
2024/05/30
2290
接口测试
菜比:你还不会接口测试?
前端是我们在网页或移动应用程序中看到的页面,它由 HTML 和 CSS 编写而成,让我们看到漂亮的页面,并进行一些简单的校验,例如确保必填字段不为空。后端则实现了页面上的业务逻辑和功能,例如购物和发布微博等功能。当你在页面上进行这些操作时,后端会负责扣除余额或将微博发布到指定的账户。那么前端和后端如何交互呢?这就是通过接口完成的。
测试小兵
2023/08/09
2440
菜比:你还不会接口测试?
接口测试其实很简单
在软件行业中,软件测试算是入行门槛比较低的工作了,相信有很多小伙伴是在犹豫要不要转行做测试,或者又担心没有测试基础怎么办,作为测试,我认为必会的就是接口测试了,那我们就来一起看看到底难不难?
小雯子打豆豆
2020/07/28
5920
接口测试其实很简单
接口测试基础
  测试人员通常所说的“接口测试”是针对系统各组件之间接口的一种测试,它属于功能测试。接口能测出普通界面操作难以发现的问题。如,我们都知道系统是由前端后端组成,一些数据在前端做了校验,后端同样也需要校验才能保证安全,界面操作显然只能检查到前端校验这一层,只有直接面对前后端之间的该接口才能检验出后端是否也做了校验。
顾翔
2019/12/11
7270
Python接口自动化之登录接口测试
通俗来说,接口就是连接前后端的桥梁,接口测试可以简单理解为脱离了前端的功能测试。一个又一个的接口就对应功能测试内一个又一个的功能。但注意,一个功能有可能不是一个接口就能实现。
可可的测试小栈
2020/05/07
3.2K0
接口测试面试题
GET请求:用于信息获取,相对而言是安全和幂等的;在做数据查询时,建议用GET方式,如:商品信息接口、搜索接口、博客访客接口...
找Bug
2022/07/22
1.3K0
接口测试面试题
接口测试是测试系统组件间接口的一种测试,接口测试主要用于检测外部系统和内部系统之间以及各个子系统之间的交互点。测试的重点是检查数据的交换、传递和控制管理的过程,以及系统间的相互逻辑依赖关系等。
wangmcn
2022/07/26
6420
聊一聊AI对接口测试的潜在影响有哪些?
使用AI可以自动化测试用例生成、异常检测、结果分析、性能测试优化等。比如,AI可以通过分析历史数据自动生成测试用例,或者预测可能出错的接口路径。
漫谈测试
2025/05/10
1010
聊一聊AI对接口测试的潜在影响有哪些?
接口测试神器Apifox
Apifox = Postman + Swagger + Mock + JMeter
软件测试君
2020/09/07
1.6K0
接口测试神器Apifox
接口01_精通Postman接口测试基础应用
原理:当客户端第一次访问服务器的时候,那么服务器就会生成Cookie信息,这个Cookie信息会通过响应头里面的Set-Cookie传输到客户端。从第2-N次请求,只要访问当前的域名和路径,那么客户端就会在请求头的Cookie里面自动的带上客户端的Cookie信息。
测试小能手
2022/11/07
7550
接口01_精通Postman接口测试基础应用
聊一聊接口测试时如何处理接口或版本变更
接口变更的原因可能由于功能优化,缺陷修复或者需求变更等,这时候测试用例可能需要同步更新,否则会导致测试失败或者遗漏问题。那如何处理接口变更呢?可能首先需要保持沟通,及时了解接口的变化情况。比如开发人员在修改接口之前有没有通知测试团队?如果没有,测试用例可能会突然失败,这时候需要花时间排查原因。所以沟通机制很重要,比如使用文档管理工具,或者集成到持续集成流程中,当接口有变更时自动通知测试人员。
漫谈测试
2025/05/08
990
聊一聊接口测试时如何处理接口或版本变更
精选接口测试面试题
从开发那边获取接口设计文档、分析接口并进行用例设计、并提前录入到接口测试工具Jmeter,等开发那边进行调试的时候(集成测试),执行接口测试用例,把发现的缺陷提给开发。
wangmcn
2022/07/25
1.1K0
接口自动化测试多场景实践 - 上篇
当今互联网业务高速发展,无论是各行各业行业,都需要服务端来进行数据存储、逻辑处理等操作。为了更好提升用户体验、满足业务需求,最近几年服务端技术架构从传统的单体应用架构升级到微服务架构。
测试加
2023/02/17
7680
接口自动化测试多场景实践 - 上篇
如何用airobots进行接口测试
上篇介绍了如何用airobots进行web自动化测试,这期,给大家介绍如何用airobots进行接口测试。
归根落叶
2021/03/24
9530
微服务间的测试策略
在之前的两篇文章中,我们从宏观和微观的不同角度尝试去设计我们的测试策略,在很多团队中,如果着眼于从微观的单体微服务开展测试活动,技术和成本都存在问题。所以我们需要一些可以更快速落地的方法,来保障微服务之间的可用性和稳定性,今天,我们尝试来聊聊这个问题。
CKL的思考
2023/02/01
5540
相关推荐
详解接口测试(2)- HTTP接口用例设计与测试方法(拿B站练手)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档