news 2026/4/18 11:04:21

接口测试详解(http与rpc)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
接口测试详解(http与rpc)

🍅点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

一、了解一下HTTP与RPC

1. HTTP(HyperText Transfer Protocol)

说明:超文本传输协议,是互联网上应用最为广泛的一种网络协议。

优点:就是简单、直接、开发方便,利用现成的http协议进行传输。

流程图:

2. RPC(Remote Procedure Call)

说明:远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

优点:提升系统可扩展性,传输效率更快,安全性更高。

流程图:

二、HTTP接口测试

常见请求类型: post(增)、get(查)、put(改)、delete(删)等。

1)get型接口

格式: 请求数参数写在网址后面,用"?"连接,多个参数之间用"&"连接。如:https://api.douban.com/v2/book/search?q='',这是一个豆瓣查询图书信息的开发api,q='',单引号里就是查询的参数,

如查询《小王子》这本书的信息,则q='小王子',使用postman工具来试验一下,如下图:

​场景: get型接口用于获取信息,多用于查询数据,如列表查询功能,点击查询按钮就调用一个get接口,然后把信息返回出来。

特点: 请求数据量小,参数暴露于url地址中,故存在安全隐患。

2)post型接口

说明: 向指定资源位置提交数据(如提交表单、上传文件)来进行请求,post请求可能会导致新资源的建立

场景: 如注册、上传、发帖等功能,如用户在豆瓣网站对某本书进行收藏、写笔记、发表评论

特点: 请求数据量大,安全性高

如豆瓣的发表评论的开放api,见下图:

3)put型接口

说明: put请求用于向指定资源位置上传最新内容

场景: 如用户在豆瓣网站修改对某本书的收藏、修改某篇笔记或修改评论

如豆瓣的修改评论的开放api,见下图:

4)delete型接口

说明: 请求服务器删除请求里url所标识的资源

场景: 如用户在豆瓣网站取消对某本书的收藏、删除某篇笔记或删除评论

如豆瓣的删除评论的开放api,见下图:

三、RPC接口测试

1)RPC接口其应用框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等,这次我们主要介绍一下Dubbo框架。

Dubbo是一个高性能、轻量级的RPC框架。主要提供三个关键功能,包括基于接口的远程调用、容错和负载平衡、以及自动服务注册和发现。

2)流程图:

3)测试环境搭建:

a. pom.xml引入相关service应用jar依赖(示例)

<dependencies> <dependency> <groupId>com.test.service</groupId> <artifactId>base-service-test</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <version>1.8</version> <scope>system</scope> <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath> </dependency> </dependencies>

b. dubbo服务spring配置(示例)

<!-- 引入资源配置 --> <import resource="spring-resource.xml"/> <!-- 具体的实现bean --> <bean id="demoServer" class="com.dub.provider.impl.DemoServerImpl" /> <!-- 提供方应用信息 --> <dubbo:application name="xs_provider" /> <!-- zookeeper服务器地址 --> <dubbo:registry address="zookeeper://localhost:2181" /> <!-- 用dubbo协议暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.dub.provider.DemoServer" ref="demoServer" /> <!------------------------------------------------------------------------> <!-- 在工程resources下添加其资源配置文件--> <dubbo:application name="hjy_consumer" /> <dubbo:reference interface="com.dub.provider.DemoServer" id="demoServer" url="dubbo://localhost:20880" timeout="10000" />

c. 基于TESTNG数据驱动编写方法(示例)

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:/spring.xml"}) @Configuration //++++++++++++继承方法++++++++++++ public class BaseTestNGTest extends AbstractTestNGSpringContextTests { //++++++++++++数据收集++++++++++++ @DataProvider(name = "testdata") public Object[][] dataprovide()throws IOException{ System.out.println("dataprovide"); // return new Object[][]{{2000020013,2},{2001000138,0},{2001000139,2}}; Object[][] testData =ExcelHandle.readXlsx(excel, "sheet2"); return testData; } //++++++++++++数据传递++++++++++++ @Test(dataProvider="testdata") public void test_case_1(HashMap<String, String> map) throws Exception { operatorUserId=Integer.valueOf(map.get("userId")); exceptedvalue=Integer.valueOf(map.get("excepted")); //++++++++++++实际值++++++++++++ Integer actual_value=billService.getUserEmailNameCount(operatorUserId); //++++++++++++预期值++++++++++++ Integer excepted_value=get_excepted_value(operatorUserId); //+++++++++++++验证+++++++++++++ Assert.assertEquals(actual_value,exceptedvalue); } }

四、接口测试用例设计

五、测试思路总结

1)查看接口文档,了解接口功能及其业务逻辑

2)确定接口调用协议(http、rpc等)

3)确定请求类型(post、get等)

4)确定请求地址/调用方法

5)组装请求报文 ☆☆☆☆☆(参考测试设计)

6)选用适用工具或编写脚本测试

7)检查返回码,及其描述

8)检查返回值,及其对应数据库数据变化

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 10:31:12

LizzieYzy终极指南:快速掌握围棋AI分析工具

LizzieYzy终极指南&#xff1a;快速掌握围棋AI分析工具 【免费下载链接】lizzieyzy LizzieYzy - GUI for Game of Go 项目地址: https://gitcode.com/gh_mirrors/li/lizzieyzy 围棋作为一项拥有数千年历史的智力运动&#xff0c;如今在AI技术的加持下焕发出新的活力。Li…

作者头像 李华
网站建设 2026/4/17 20:54:10

NBTExplorer终极指南:轻松掌握Minecraft数据编辑技巧

NBTExplorer终极指南&#xff1a;轻松掌握Minecraft数据编辑技巧 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 想要深入了解和修改Minecraft游戏数据吗&#xff…

作者头像 李华
网站建设 2026/4/18 1:27:33

生态系统食物网建模:物种间能量流动的动态推演

生态系统食物网建模&#xff1a;物种间能量流动的动态推演 在生态学研究中&#xff0c;理解能量如何在不同营养级之间传递&#xff0c;是预测种群动态、评估生态系统稳定性乃至制定保护政策的核心。传统建模方式往往依赖研究人员手动建立微分方程、编写仿真代码&#xff0c;过程…

作者头像 李华
网站建设 2026/4/18 8:46:12

Docker健康检查性能优化:3步实现毫秒级故障检测

第一章&#xff1a;Docker健康检查性能优化概述在现代容器化应用部署中&#xff0c;Docker健康检查&#xff08;Health Check&#xff09;机制是保障服务可用性和系统稳定性的关键组件。通过定期执行预定义命令&#xff0c;Docker能够判断容器内应用是否处于正常运行状态&#…

作者头像 李华
网站建设 2026/4/18 8:46:17

NBTExplorer黑科技秘籍:5分钟成为Minecraft数据编辑大师

NBTExplorer黑科技秘籍&#xff1a;5分钟成为Minecraft数据编辑大师 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 还在为Minecraft存档数据混乱而烦恼吗&#xf…

作者头像 李华
网站建设 2026/4/18 7:52:42

你真的会写HEALTHCHECK指令吗?,资深运维专家的6条黄金建议

第一章&#xff1a;Docker健康检查的核心价值与常见误区在容器化应用部署中&#xff0c;服务是否真正“就绪”远比进程是否运行更为关键。Docker 健康检查&#xff08;HEALTHCHECK&#xff09;机制正是为此而生&#xff0c;它通过周期性执行自定义命令判断容器内部应用的运行状…

作者头像 李华